Skip to content

Commit 841438f

Browse files
committed
[server] Cleanup to make tests pass
1 parent 2e2833a commit 841438f

File tree

6 files changed

+24
-9
lines changed

6 files changed

+24
-9
lines changed

components/gitpod-db/src/traced-db.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,11 @@ export class DBWithTracing<T> {
2525
return async (...args: any[]) => {
2626
// do not try and trace calls with an empty trace context - the callers intention most likely was to omit the trace
2727
// so as to not spam the trace logs
28-
if (!ctx.span) {
28+
// Also, opentracing makes some assumptions about the Span object, so this might fail under some circumstances
29+
function isEmptyObject(obj: object): boolean {
30+
return Object.keys(obj).length === 0;
31+
}
32+
if (!ctx.span || isEmptyObject(ctx.span)) {
2933
return await f.bind(_target)(...args);
3034
}
3135

components/gitpod-protocol/src/messaging/client-call-metrics.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,14 @@ export class PrometheusClientCallMetrics implements IClientCallMetrics {
4949
});
5050
}
5151

52+
dispose(): void {
53+
prometheusClient.register.removeSingleMetric("grpc_client_started_total");
54+
prometheusClient.register.removeSingleMetric("grpc_client_msg_sent_total");
55+
prometheusClient.register.removeSingleMetric("grpc_client_msg_received_total");
56+
prometheusClient.register.removeSingleMetric("grpc_client_handled_total");
57+
prometheusClient.register.removeSingleMetric("grpc_client_handling_seconds");
58+
}
59+
5260
started(labels: IGrpcCallMetricsLabels): void {
5361
this.startedCounter.inc({
5462
grpc_service: labels.service,

components/gitpod-protocol/src/util/tracing.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import { log, LogContext } from "./logging";
1313

1414
export interface TraceContext {
1515
span?: opentracing.Span;
16+
// TODO(gpl) We are missing this method, but won't add right now because of different focus, and it's unclear how we want to use tracing going forward
17+
isDebugIDContainerOnly?: () => boolean;
1618
}
1719
export type TraceContextWithSpan = TraceContext & {
1820
span: opentracing.Span;

components/server/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
"clean": "rimraf dist",
1818
"clean:node": "rimraf node_modules",
1919
"purge": "yarn clean && yarn clean:node && yarn run rimraf yarn.lock",
20-
"test": "cleanup() { echo 'Cleanup started'; yarn stop-services; }; trap cleanup EXIT; yarn test:unit && yarn start-services && yarn test:db",
20+
"test": "cleanup() { echo 'Cleanup started'; yarn stop-services; }; trap cleanup EXIT; yarn test:unit && yarn test:db",
2121
"test:unit": "TS_NODE_FILES=true mocha --opts mocha.opts './**/*.spec.ts' --exclude './node_modules/**'",
22-
"test:db": ". $(leeway run components/gitpod-db:db-test-env) && TS_NODE_FILES=true mocha --opts mocha.opts './**/*.spec.db.ts' --exclude './node_modules/**'",
22+
"test:db": ". $(leeway run components/gitpod-db:db-test-env) && yarn start-services && TS_NODE_FILES=true mocha --opts mocha.opts './**/*.spec.db.ts' --exclude './node_modules/**'",
2323
"start-services": "yarn start-testdb && yarn start-redis && yarn start-spicedb",
2424
"stop-services": "yarn stop-redis && yarn stop-spicedb",
2525
"start-testdb": "if netstat -tuln | grep ':23306 '; then echo 'Mysql is already running.'; else leeway run components/gitpod-db:init-testdb; fi",

components/server/src/container-module.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,11 @@ export const productionContainerModule = new ContainerModule(
177177
})
178178
.inSingletonScope();
179179

180-
bind(PrometheusClientCallMetrics).toSelf().inSingletonScope();
181-
bind(IClientCallMetrics).to(PrometheusClientCallMetrics).inSingletonScope();
180+
bind(PrometheusClientCallMetrics)
181+
.toSelf()
182+
.inSingletonScope()
183+
.onDeactivation((metrics) => metrics.dispose());
184+
bind(IClientCallMetrics).toService(PrometheusClientCallMetrics);
182185

183186
bind(WorkspaceClusterImagebuilderClientProvider).toSelf().inSingletonScope();
184187
bind(ImageBuilderClientProvider).toService(WorkspaceClusterImagebuilderClientProvider);

components/server/src/workspace/workspace-cluster-imagebuilder-client-provider.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@
55
*/
66

77
import { User, Workspace, WorkspaceInstance } from "@gitpod/gitpod-protocol";
8-
import { defaultGRPCOptions, IClientCallMetrics } from "@gitpod/gitpod-protocol/lib/util/grpc";
8+
import { defaultGRPCOptions } from "@gitpod/gitpod-protocol/lib/util/grpc";
99
import { WorkspaceRegion } from "@gitpod/gitpod-protocol/lib/workspace-cluster";
1010
import {
1111
ImageBuilderClient,
12-
ImageBuilderClientCallMetrics,
1312
ImageBuilderClientProvider,
1413
PromisifiedImageBuilderClient,
1514
} from "@gitpod/image-builder/lib";
@@ -18,14 +17,13 @@ import {
1817
WorkspaceManagerClientProviderCompositeSource,
1918
WorkspaceManagerClientProviderSource,
2019
} from "@gitpod/ws-manager/lib/client-provider-source";
21-
import { inject, injectable, optional } from "inversify";
20+
import { inject, injectable } from "inversify";
2221

2322
@injectable()
2423
export class WorkspaceClusterImagebuilderClientProvider implements ImageBuilderClientProvider {
2524
@inject(WorkspaceManagerClientProviderCompositeSource)
2625
protected readonly source: WorkspaceManagerClientProviderSource;
2726
@inject(WorkspaceManagerClientProvider) protected readonly clientProvider: WorkspaceManagerClientProvider;
28-
@inject(ImageBuilderClientCallMetrics) @optional() protected readonly clientCallMetrics: IClientCallMetrics;
2927

3028
// gRPC connections can be used concurrently, even across services.
3129
// Thus it makes sense to cache them rather than create a new connection for each request.

0 commit comments

Comments
 (0)