repo-file-sync-action icon indicating copy to clipboard operation
repo-file-sync-action copied to clipboard

Error: Cannot create a new GitHub Tree: Server Error

Open dgokcin opened this issue 3 years ago • 9 comments
trafficstars

🐞 Describe the bug

Hello when I am trying to use the action with a GitHub App, I am having this error. Any help is appreciated.

📚 To reproduce

💡 Expected behavior

A PR against the specified branch to be created.

🖼️ Screenshots

image image

⚙️ Environment

@v1

📋 Additional context

No response

dgokcin avatar Sep 07 '22 15:09 dgokcin

I'm getting this as well @BetaHuhn on the latest version of this Action.

Example repo (you can probably fork and try syncing to your fork) - https://github.com/sammcj/github-app-installation-token/

This repo is a Github Action/App so it contains a node_modules folder as is required by Github.

Debug logs:

##[debug]Creating missing blobs on GitHub
##[debug]EXEC: "git ls-tree -r --full-tree b4ef3810621aa63ec702455a5ca7a85ae0c0d61d~1" IN tmp-1664748747018/github.com/sammcj/github-app-installation-token@main
##[debug]EXEC: "git ls-tree -r --full-tree b4ef3810621aa63ec702455a5ca7a85ae0c0d61d" IN tmp-1664748747018/github.com/sammcj/github-app-installation-token@main
##[debug]Creating a GitHub tree
Error: Cannot create a new GitHub Tree: Server Error
##[debug]{"name":"HttpError","status":502,"response":{"url":"https://api.github.com/repos/sammcj/github-app-installation-token/git/trees","status":502,"headers":{"connection":"close","content-length":"32","content-type":"application/json","date":"Sun, 02 Oct 2022 22:13:25 GMT","etag":"\"6339ff8e-20\"","server":"GitHub.com","vary":"Accept-Encoding, Accept, X-Requested-With","x-github-request-id":"0402:35D2:35F8CBB:6F07944:633A0CF8"},"data":{"message":"Server Error"}},"request":{"method":"POST","url":"https://api.github.com/repos/sammcj/github-app-installation-token/git/trees","headers":{"accept":"application/vnd.github.v3+json","user-agent":"octokit-core.js/3.6.0 Node.js/12.22.7 (linux; x64)","authorization":"token [REDACTED]","content-type":"application/json; charset=utf-8"},"body":"{\"tree\":[{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"92322b87f8390109c339c6caf1be64216e402a69\",\"path\":\".devcontainer/devcontainer.json\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"10d776365b3a8859c1f9af6a5ca8061fb85679b7\",\"path\":\".editorconfig\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"7c7e89bf7350249a807e92be77b43b5da4f63c2a\",\"path\":\".eslintrc.cjs\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"f40d39cf5f5a830bbaddfa538a2d4bfbda311a59\",\"path\":\".github/config/labeller.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"be56be9f0ad9508377e172b83015c6a54121803f\",\"path\":\".github/config/labels.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"5dfd89193270342d48898ca73936b2fa1c6157be\",\"path\":\".github/pull_request_template.md\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"7505f9e98779ba82be477d5dd7b6abf540b99954\",\"path\":\".github/workflows/bump-version.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"9c18839f108943554e1f8a51aa9bbc5f162cb416\",\"path\":\".github/workflows/codeball.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"9e99baca685ba42523c4572514dfdfe95b322e8f\",\"path\":\".github/workflows/codeql-analysis.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"0b9777f944266975da74b2f0d788880ec34f0a68\",\"path\":\".github/workflows/detect-secrets.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"1a8a765ddcb275495254fdf9d9b7628718f48d40\",\"path\":\".github/workflows/label-sync.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"172dd0b9e52ac1490a06eacd628afac0d53582c3\",\"path\":\".github/workflows/lint-codeowners.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"f18d105e7528f3b3dd953d421c0a9e2fc04cef21\",\"path\":\".github/workflows/lint-docker.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"dd9a01abc4b1be1cef31c3835ba92fcdaac7fb32\",\"path\":\".github/workflows/lint-pr-actions-skip.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"72bf9a02d2c43240d594b259ebbe170f82929c55\",\"path\":\".github/workflows/lint-pr-actions.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"1573c3ac80cdd0bd97577b429f29b0e6caddff9e\",\"path\":\".github/workflows/lint-pr-markdown.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"58c9312d24db5eda4f05a91547e5c7f4f4107f55\",\"path\":\".github/workflows/lint-shell.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"94e2c9890c49ba6bf4aae111f9651c47639cbdcb\",\"path\":\".github/workflows/lint-tf.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"54071c3e93b3ce19be8d550f6a4302420e50f02b\",\"path\":\".github/workflows/pr-labeller.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"e31f14cddcd183ba0e23604ed91daa5435d66193\",\"path\":\".github/workflows/pre-commit-update.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"8422beb9c6075cc6b8ae148ec636b4338ff2ad55\",\"path\":\".github/workflows/pre-commit.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"106b98578a1283ca68978b7e57b1c69823c38a25\",\"path\":\".github/workflows/release-only.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"dcc98dc47e68f710bd3c83ec4b5f38eb1004d15a\",\"path\":\".github/workflows/test_failure_organisation_not_installed.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"f84970b8f21b8d026cbcca7c314123fa65686566\",\"path\":\".github/workflows/test_failure_repository_not_installed.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"03434179ab15596734ed7904b7d89a83870e36a2\",\"path\":\".github/workflows/test_organisation_installed.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"d631cd3e61140665a914eb3af67791fe75baf12c\",\"path\":\".github/workflows/test_repository_installed.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"587c112c1db6d62a3b1101fd70cf99b453dfcf08\",\"path\":\".github/workflows/test_repository_installed_limited.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"32f9e2e06e23169cb23359dab54f9eeb533e8548\",\"path\":\".github/workflows/todo.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"4cce5d3fc8e468fee466d0e21996e99bedf29842\",\"path\":\".github_application\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"25e959123d2e11b325836de94e755e9a08f68dec\",\"path\":\".gitignore\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"6f7f377bf5148f8b722619c65f29de2c2d204bee\",\"path\":\".nvmrc\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"698f7e90d0f52460bb0f592e1608d0ef486f428b\",\"path\":\".prettierrc.cjs\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"2bfef5b0f511aa1d6d4f21ae6ac2e01b06f9ce4e\",\"path\":\".whitesource\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"773f486871e48e8eeb3dc26cb837da0550ea36cc\",\"path\":\"CONTRIBUTING.md\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"02c729d03ad07cc69bffb4c38e16514fec1e9871\",\"path\":\"LICENSE\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"681b0c2d272ed5fdd386cb4ac986d29ed94417e2\",\"path\":\"README.md\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"328f6da99f704a0a59f88abea31efa00222d4719\",\"path\":\"SECURITY.md\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"4270d653e04fed6303cd8b5d7c8359625043f897\",\"path\":\"action.yml\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"a4e592278008ad0fdbcb4c73192953575a0fcc5f\",\"path\":\"dist/index.js\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"c4aab65d49dcf49178966553558994c09c8dbef6\",\"path\":\"dist/index.js.cache\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"04dbbc12fbf83aac217ccb2b5300dcf1267983e5\",\"path\":\"dist/index.js.cache.js\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"f80836cae09dd6aad9c44970e67d145ca14c4fb6\",\"path\":\"index.js\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"3cab96ea80181d18175043b8796aa7c93e668905\",\"path\":\"jest.config.js\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"20028cbc5320d931ffaffb2d5b0242893580b93e\",\"path\":\"lib/github-application.js\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"9253057dd3cd697cfb98fb61cfa7ba33671fe4c0\",\"path\":\"lib/github-application.test.js\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"a9487a7dc098f549818cb99a00bb70fb9bba01cc\",\"path\":\"lib/private-key.js\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"f2a54ffda15b37a6de4d06d458270ea281761f31\",\"path\":\"node_modules/.bin/_mocha\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"cf76760386200fb3e0ff9c6827bef9c9fc0305b5\",\"path\":\"node_modules/.bin/acorn\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"810e4bcb32af34e41aa631d9bc516e2e5ed8b765\",\"path\":\"node_modules/.bin/eslint\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"7d29baaae6e8ce157b174699a9d2f25909ac690e\",\"path\":\"node_modules/.bin/eslint-config-prettier\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"5fed16be3901e4feedf972d665e8bcdf2aefdde2\",\"path\":\"node_modules/.bin/flat\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"2a8eb5e0c91c98b3a33d74bf79f4766ff4bae653\",\"path\":\"node_modules/.bin/he\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"9dbd010d470368b942148cb9ec3acf02d7aac993\",\"path\":\"node_modules/.bin/js-yaml\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"c2c121b9cd24ac0c37ebc96ce0c0ec425c874819\",\"path\":\"node_modules/.bin/mocha\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"e2be547bcb206b59b72832a11187f6236a5a48ce\",\"path\":\"node_modules/.bin/nanoid\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"e05914af1c1a13e3c03da0571985fd8a25a5191f\",\"path\":\"node_modules/.bin/ncc\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"6f8415ec58dffcb931a5808d19e3c39a0430f581\",\"path\":\"node_modules/.bin/node-which\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"a478df38348be9d500399ed036f68ff5c9a4567e\",\"path\":\"node_modules/.bin/prettier\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"b6afda6c753f1fb771d1ae4bb413ee11c4cd0037\",\"path\":\"node_modules/.bin/resolve\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"4cd49a49ddfc17a0c038a9c11d3abbb8181dc025\",\"path\":\"node_modules/.bin/rimraf\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"5aaadf42c4a8b282cbf6cc5c73e6ea0beedd2d46\",\"path\":\"node_modules/.bin/semver\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"dc0a4f8391b46b0384357bc3d055e18f7d9a4d97\",\"path\":\"node_modules/.bin/sort-package-json\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"0863208a6a1fe7ba964993a1a398794c4021ae19\",\"path\":\"node_modules/.bin/tsc\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"f8f8f1a0c33562942ab214430b7878ee378cfdd8\",\"path\":\"node_modules/.bin/tsserver\"},{\"mode\":\"120000\",\"type\":\"blob\",\"sha\":\"588f70ecc5fc9a9d7c80d009fd555d2ec8cd9ba7\",\"path\":\"node_modules/.bin/uuid\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"b9e585a163f3d5118fd2513f4c4a649e521f2e6d\",\"path\":\"node_modules/.package-lock.json\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"dbae2edb2c8ca2cf3ce4abe863b6e6dff5970f99\",\"path\":\"node_modules/@actions/core/LICENSE.md\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"3c20c8ea56fbac106622b228ed661da95ef38319\",\"path\":\"node_modules/@actions/core/README.md\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"53f8f4b8d46925f9824f39d185a77aa03116c524\",\"path\":\"node_modules/@actions/core/lib/command.d.ts\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"0b28c66b8fd07b11c2750200bb25efeb9e1facf9\",\"path\":\"node_modules/@actions/core/lib/command.js\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"51c7c6375108fc7fbe4489ae0d9c890dbef791ab\",\"path\":\"node_modules/@actions/core/lib/command.js.map\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha\":\"1defb5722bbbdfeb1074f2baf14c2f4cb5d73151\",\"path\":\"node_modules/@actions/core/lib/core.d.ts\"},{\"mode\":\"100644\",\"type\":\"blob\",\"sha
.... (continued)

sammcj avatar Oct 02 '22 22:10 sammcj

It currently seems that my team is facing this too. I could get it working in a reasonably new repo, but our well-established failed. Note the name .co vs .com Screen Shot 2022-10-25 at 5 38 43 PM

RichardTMiles avatar Oct 25 '22 22:10 RichardTMiles

Screen Shot 2022-10-25 at 5 42 23 PM

The app is added for the entire account, and the repo does not contain a node_modules (though it may in history)

RichardTMiles avatar Oct 25 '22 22:10 RichardTMiles

Using BetaHuhn/repo-file-sync-action@master vs BetaHuhn/repo-file-sync-action@v1 or BetaHuhn/repo-file-sync-action@latest worked for me

RichardTMiles avatar Oct 26 '22 00:10 RichardTMiles

Seem's like this still occurs in a very spastic way. Re-running the workflow has solved the issue before.

RichardTMiles avatar Oct 29 '22 16:10 RichardTMiles

Similar for me too - image

sammcj avatar Nov 09 '22 22:11 sammcj

I'm running into the same problem. I think this is related to the size of the repository. For the most repositories it runs without problems and only for repositories with a lot of files the error occurs.

The github API return a 502 error for the createTree request.

try {
	const request = await this.github.git.createTree({
		owner: this.repo.user,
		repo: this.repo.name,
		tree
	})
	treeSha = request.data.sha
} catch (error) {
	error.message = `Cannot create a new GitHub Tree: ${ error.message }`
	throw error
}

Error: Cannot create a new GitHub Tree: Server Error ##[debug]{"name":"HttpError","status":502,"response":{"url":"https://api.github.com/repos/.../git/trees","status":502,"headers":{"connection":"close","content-length":"32","content-type":"application/json","date":"Tue, 18 Apr 2023 11:23:08 GMT","etag":""643e7ad2-20"","server":"GitHub.com","vary":"Accept-Encoding, Accept, X-Requested-With","x-github-request-id":"xxx"},"data":{"message":"Server Error"}},"request":{"method":"POST","url":"https://api.github.com/repos/.../git/trees","headers":{"accept":"application/vnd.github.v3+json","user-agent":"octokit-core.js/3.6.0 Node.js/16.16.0 (linux; x64)","authorization":"token [REDACTED]","content-type":"application/json; charset=utf-8"},"body":"{"tree":[{"mode":"100644","type":"blob","sha":"de7b5be2afe111d4fc8325674edc1870e0e6bbef","path":".eslintrc.json"},{"mode":"100644","type":"blob","sha":"5af36ee5af3961f8c6abb758d0155a764c3cc7b4","path":".github/workflows/pr_lint.yaml"},......

Maybe there is another way to determine the tree hash? @BetaHuhn doesn't previousTree already contain the required sha?

DocMarten avatar Apr 19 '23 10:04 DocMarten

@DocMarten Mine was the same case, and this workaround did the trick for me:

Increase the http.postBuffer default limit (added as a step between the checkout step and the action step):

- run: git config --global http.postBuffer 157286400

(Here I used an arbitrary value of 150MB for example)

asafhm avatar Jun 11 '23 19:06 asafhm

Hi, I have just created the PR https://github.com/BetaHuhn/repo-file-sync-action/pull/321 with a fix for this.

I have done multiple tests and all of them works just fine but if any of you still have this kind of problem you can test it before it is merged. I'm sure that any additional feedback about the fix is welcome, you can test it temporally calling the action from my source branch of the PR: alvarezfr/repo-file-sync-action@fix/github-app-auth-tree.

I'm running into the same problem. I think this is related to the size of the repository. For the most repositories it runs without problems and only for repositories with a lot of files the error occurs.

The github API return a 502 error for the createTree request.

try {
	const request = await this.github.git.createTree({
		owner: this.repo.user,
		repo: this.repo.name,
		tree
	})
	treeSha = request.data.sha
} catch (error) {
	error.message = `Cannot create a new GitHub Tree: ${ error.message }`
	throw error
}

Error: Cannot create a new GitHub Tree: Server Error ##[debug]{"name":"HttpError","status":502,"response":{"url":"https://api.github.com/repos/.../git/trees","status":502,"headers":{"connection":"close","content-length":"32","content-type":"application/json","date":"Tue, 18 Apr 2023 11:23:08 GMT","etag":""643e7ad2-20"","server":"GitHub.com","vary":"Accept-Encoding, Accept, X-Requested-With","x-github-request-id":"xxx"},"data":{"message":"Server Error"}},"request":{"method":"POST","url":"https://api.github.com/repos/.../git/trees","headers":{"accept":"application/vnd.github.v3+json","user-agent":"octokit-core.js/3.6.0 Node.js/16.16.0 (linux; x64)","authorization":"token [REDACTED]","content-type":"application/json; charset=utf-8"},"body":"{"tree":[{"mode":"100644","type":"blob","sha":"de7b5be2afe111d4fc8325674edc1870e0e6bbef","path":".eslintrc.json"},{"mode":"100644","type":"blob","sha":"5af36ee5af3961f8c6abb758d0155a764c3cc7b4","path":".github/workflows/pr_lint.yaml"},......

Maybe there is another way to determine the tree hash? @BetaHuhn doesn't previousTree already contain the required sha?

I have been able to reproduce the problem with a big size repository and a small one, I was revisiting the API documentation and the error and even searching for the problem but I was not able to find any limit or reason why this was failing, but I suspect that this way of doing the tree was hitting a hidden limit in these cases. The PR changes the way the tree is constructed, previously it created a tree with any single file in the commit, but now creates the tree only with the changes and sets the parent commit tree as base_tree in the API.

This produces a smaller request in almost all cases.

alvarezfr avatar Sep 04 '23 15:09 alvarezfr

@alvarezfr thanks a lot for this! it worked for me!

it would be good to have this merged as we would like to avoid using a custom branch

kkantonop avatar Mar 19 '24 11:03 kkantonop

:tada: This issue has been resolved in version 1.21.1 :tada:

The release is available on GitHub release

Your semantic-release bot :package::rocket:

BetaHuhnBot avatar May 05 '24 12:05 BetaHuhnBot