diff --git a/components/content-service-api/typescript/package.json b/components/content-service-api/typescript/package.json index 7990f2a17a9045..b3b84e2604dfb3 100644 --- a/components/content-service-api/typescript/package.json +++ b/components/content-service-api/typescript/package.json @@ -11,7 +11,7 @@ "lib" ], "dependencies": { - "@grpc/grpc-js": "1.12.6", + "@grpc/grpc-js": "1.13.4", "google-protobuf": "^3.19.1", "inversify": "^6.0.1", "opentracing": "^0.14.4" diff --git a/components/gitpod-protocol/package.json b/components/gitpod-protocol/package.json index 354aba29a56247..d20f634799541c 100644 --- a/components/gitpod-protocol/package.json +++ b/components/gitpod-protocol/package.json @@ -10,7 +10,7 @@ "src" ], "devDependencies": { - "@grpc/grpc-js": "1.12.6", + "@grpc/grpc-js": "1.13.4", "@testdeck/mocha": "^0.3.3", "@types/analytics-node": "^3.1.9", "@types/chai-subset": "^1.3.3", diff --git a/components/ide-metrics-api/typescript-grpc/package.json b/components/ide-metrics-api/typescript-grpc/package.json index 4c89e50491e523..2748fc6e3c2c8d 100644 --- a/components/ide-metrics-api/typescript-grpc/package.json +++ b/components/ide-metrics-api/typescript-grpc/package.json @@ -9,7 +9,7 @@ "lib" ], "dependencies": { - "@grpc/grpc-js": "1.12.6", + "@grpc/grpc-js": "1.13.4", "google-protobuf": "^3.19.1" }, "devDependencies": { diff --git a/components/image-builder-api/typescript/package.json b/components/image-builder-api/typescript/package.json index c60d40f50b83b8..ceb878f6f7cc39 100644 --- a/components/image-builder-api/typescript/package.json +++ b/components/image-builder-api/typescript/package.json @@ -13,7 +13,7 @@ "dependencies": { "@gitpod/content-service": "0.1.5", "@gitpod/gitpod-protocol": "0.1.5", - "@grpc/grpc-js": "1.12.6", + "@grpc/grpc-js": "1.13.4", "google-protobuf": "^3.19.1", "inversify": "^6.0.1", "opentracing": "^0.14.4" diff --git a/components/server/package.json b/components/server/package.json index 2fd6f51869c477..96ece85e6ce784 100644 --- a/components/server/package.json +++ b/components/server/package.json @@ -45,7 +45,7 @@ "/src" ], "dependencies": { - "@authzed/authzed-node": "^1.2.2", + "@authzed/authzed-node": "^1.3.1", "@connectrpc/connect": "1.1.2", "@connectrpc/connect-express": "1.1.2", "@gitbeaker/rest": "^39.12.0", diff --git a/components/server/src/authorization/spicedb-authorizer.ts b/components/server/src/authorization/spicedb-authorizer.ts index 6d7ae3464e0a9f..fdcb3e67900d85 100644 --- a/components/server/src/authorization/spicedb-authorizer.ts +++ b/components/server/src/authorization/spicedb-authorizer.ts @@ -57,7 +57,7 @@ export class SpiceDBAuthorizer { const timer = spicedbClientLatency.startTimer(); let error: Error | undefined; try { - const response = await this.call("[spicedb] Failed to perform authorization check.", (client) => + const response = await this.call("[spicedb] Error performing authorization check.", (client) => client.checkPermission(req, this.callOptions), ); const permitted = response.permissionship === v1.CheckPermissionResponse_Permissionship.HAS_PERMISSION; @@ -185,14 +185,15 @@ export class SpiceDBAuthorizer { private async call(description: string, code: (client: v1.ZedPromiseClientInterface) => Promise): Promise { const MAX_ATTEMPTS = 3; let attempt = 0; - while (attempt++ < 3) { + while (attempt++ < MAX_ATTEMPTS) { try { const checkClient = attempt > 1; // the last client error'd out, so check if we should get a new one const client = this.clientProvider.getClient(checkClient); - return code(client); + return await code(client); } catch (err) { // Check: Is this a "no connection to upstream" error? If yes, retry here, to work around grpc/grpc-js bugs introducing high latency for re-tries if ( + isGrpcError(err) && (err.code === grpc.status.DEADLINE_EXCEEDED || err.code === grpc.status.UNAVAILABLE) && attempt < MAX_ATTEMPTS ) { diff --git a/components/supervisor-api/typescript-grpc/package.json b/components/supervisor-api/typescript-grpc/package.json index 0d747b0b205781..7ec2b97fa3c36e 100644 --- a/components/supervisor-api/typescript-grpc/package.json +++ b/components/supervisor-api/typescript-grpc/package.json @@ -9,7 +9,7 @@ "lib" ], "dependencies": { - "@grpc/grpc-js": "1.12.6", + "@grpc/grpc-js": "1.13.4", "google-protobuf": "^3.19.1" }, "devDependencies": { diff --git a/components/ws-daemon-api/typescript/package.json b/components/ws-daemon-api/typescript/package.json index 328bd4c811ed3d..c1723fa33094cf 100644 --- a/components/ws-daemon-api/typescript/package.json +++ b/components/ws-daemon-api/typescript/package.json @@ -13,7 +13,7 @@ ], "dependencies": { "@gitpod/content-service": "0.1.5", - "@grpc/grpc-js": "1.12.6", + "@grpc/grpc-js": "1.13.4", "google-protobuf": "^3.19.1", "inversify": "^6.0.1", "opentracing": "^0.14.4" diff --git a/components/ws-manager-api/typescript/package.json b/components/ws-manager-api/typescript/package.json index 66924ce85b93e8..1b739880a27708 100644 --- a/components/ws-manager-api/typescript/package.json +++ b/components/ws-manager-api/typescript/package.json @@ -27,7 +27,7 @@ "dependencies": { "@gitpod/content-service": "0.1.5", "@gitpod/gitpod-protocol": "0.1.5", - "@grpc/grpc-js": "1.12.6", + "@grpc/grpc-js": "1.13.4", "google-protobuf": "^3.19.1", "inversify": "^6.0.1", "opentracing": "^0.14.4" diff --git a/components/ws-manager-bridge-api/typescript/package.json b/components/ws-manager-bridge-api/typescript/package.json index 488ef88446b127..d4a76e3e2c1759 100644 --- a/components/ws-manager-bridge-api/typescript/package.json +++ b/components/ws-manager-bridge-api/typescript/package.json @@ -11,7 +11,7 @@ "lib" ], "dependencies": { - "@grpc/grpc-js": "1.12.6", + "@grpc/grpc-js": "1.13.4", "google-protobuf": "^3.19.1", "inversify": "^6.0.1", "opentracing": "^0.14.4" diff --git a/yarn.lock b/yarn.lock index a4622132685db9..f20bb5251b9570 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,14 +24,14 @@ jsonpointer "^5.0.0" leven "^3.1.0" -"@authzed/authzed-node@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@authzed/authzed-node/-/authzed-node-1.2.2.tgz#a1f1fed945d1746ff933c938e6e4068c179e5be6" - integrity sha512-Br25e/1K4dmBIXqqCodvdcT3Ii2N3TSHYpwPrh8PCyhswgiVbUhiXO/PHuqIqEmlC6N1F78FEvlNiyGK4VXw6g== +"@authzed/authzed-node@^1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@authzed/authzed-node/-/authzed-node-1.3.1.tgz#2e408df6d1526a65fc96fd12bee8765eb05781de" + integrity sha512-u7lGPIlBSs6PoReVCG1MSt0zaPucGb6Zg7wXJIJ7uOXtCWEb2w3GN9GYGDapM8gkT4R1suZv2W3UHZhG9QWnSQ== dependencies: - "@grpc/grpc-js" "^1.12.5" - "@protobuf-ts/runtime" "^2.9.4" - "@protobuf-ts/runtime-rpc" "^2.9.4" + "@grpc/grpc-js" "^1.13.3" + "@protobuf-ts/runtime" "^2.9.6" + "@protobuf-ts/runtime-rpc" "^2.9.6" google-protobuf "^3.21.4" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.22.10", "@babel/code-frame@^7.22.5", "@babel/code-frame@^7.8.3": @@ -1562,10 +1562,10 @@ "@gitbeaker/core" "^39.12.0" "@gitbeaker/requester-utils" "^39.12.0" -"@grpc/grpc-js@1.12.6", "@grpc/grpc-js@^1.12.5": - version "1.12.6" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.12.6.tgz#a3586ffdfb6a1f5cd5b4866dec9074c4a1e65472" - integrity sha512-JXUj6PI0oqqzTGvKtzOkxtpsyPRNsrmhh41TtIz/zEB6J+AUiZZ0dxWzcMwO9Ns5rmSPuMdghlTbUuqIM48d3Q== +"@grpc/grpc-js@1.13.4", "@grpc/grpc-js@^1.13.3": + version "1.13.4" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.13.4.tgz#922fbc496e229c5fa66802d2369bf181c1df1c5a" + integrity sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg== dependencies: "@grpc/proto-loader" "^0.7.13" "@js-sdsl/ordered-map" "^4.4.2" @@ -2333,17 +2333,17 @@ readable-stream "^3.6.0" split2 "^4.0.0" -"@protobuf-ts/runtime-rpc@^2.9.4": - version "2.9.4" - resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz#d6ab2316c0ba67ce5a08863bb23203a837ff2a3b" - integrity sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA== +"@protobuf-ts/runtime-rpc@^2.9.6": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.11.0.tgz#8c988cadbf3899e4968b44fd34a0898416a463b1" + integrity sha512-g/oMPym5LjVyCc3nlQc6cHer0R3CyleBos4p7CjRNzdKuH/FlRXzfQYo6EN5uv8vLtn7zEK9Cy4YBKvHStIaag== dependencies: - "@protobuf-ts/runtime" "^2.9.4" + "@protobuf-ts/runtime" "^2.11.0" -"@protobuf-ts/runtime@^2.9.4": - version "2.9.4" - resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime/-/runtime-2.9.4.tgz#db8a78b1c409e26d258ca39464f4757d804add8f" - integrity sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg== +"@protobuf-ts/runtime@^2.11.0", "@protobuf-ts/runtime@^2.9.6": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime/-/runtime-2.11.0.tgz#81bf541189276947ab1ccab8ffd47fb9b7f4185f" + integrity sha512-DfpRpUiNvPC3Kj48CmlU4HaIEY1Myh++PIumMmohBAk8/k0d2CkxYxJfPyUAxfuUfl97F4AvuCu1gXmfOG7OJQ== "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2"