Skip to content

Commit c27e1c8

Browse files
authored
Update dependencies (#320)
* Add missing license field; move tests to devDependencies. * Bump sentry and opentelemetry versions. * Bump fastify. * Bump brace-expansion transitive dependency. * Update to new opentelemetry APIs. * Node 22.17.1. * Changeset. * Add comments on waitForAsyncAttributes.
1 parent f56acce commit c27e1c8

File tree

9 files changed

+638
-613
lines changed

9 files changed

+638
-613
lines changed

.changeset/lovely-apricots-notice.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
'@powersync/service-module-postgres-storage': minor
3+
'@powersync/service-core': minor
4+
'@powersync/service-module-core': minor
5+
'@powersync/service-image': minor
6+
---
7+
8+
Upgrade Node, Sentry, Fastify and OpenTelemetry dependencies.

.nvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v22.17.0
1+
v22.17.1

modules/module-core/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232
"@powersync/service-core": "workspace:*",
3333
"@powersync/service-rsocket-router": "workspace:*",
3434
"@powersync/service-types": "workspace:*",
35-
"fastify": "4.23.2",
36-
"@fastify/cors": "8.4.1"
35+
"fastify": "^5.4.0",
36+
"@fastify/cors": "^11.1.0"
3737
},
3838
"devDependencies": {}
3939
}

modules/module-postgres-storage/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"types": "dist/@types/index.d.ts",
55
"version": "0.9.0",
66
"main": "dist/index.js",
7+
"license": "FSL-1.1-ALv2",
78
"type": "module",
89
"publishConfig": {
910
"access": "public"
@@ -32,7 +33,6 @@
3233
"@powersync/lib-service-postgres": "workspace:*",
3334
"@powersync/lib-services-framework": "workspace:*",
3435
"@powersync/service-core": "workspace:*",
35-
"@powersync/service-core-tests": "workspace:*",
3636
"@powersync/service-jpgwire": "workspace:*",
3737
"@powersync/service-jsonbig": "workspace:*",
3838
"@powersync/service-sync-rules": "workspace:*",
@@ -44,6 +44,7 @@
4444
"uuid": "^11.1.0"
4545
},
4646
"devDependencies": {
47-
"typescript": "^5.7.3"
47+
"typescript": "^5.7.3",
48+
"@powersync/service-core-tests": "workspace:*"
4849
}
4950
}

packages/service-core/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717
},
1818
"dependencies": {
1919
"@js-sdsl/ordered-set": "^4.4.2",
20-
"@opentelemetry/api": "~1.9.0",
21-
"@opentelemetry/exporter-metrics-otlp-http": "^0.57.2",
22-
"@opentelemetry/exporter-prometheus": "^0.57.2",
23-
"@opentelemetry/resources": "^1.30.1",
24-
"@opentelemetry/sdk-metrics": "1.30.1",
20+
"@opentelemetry/api": "^1.9.0",
21+
"@opentelemetry/exporter-metrics-otlp-http": "^0.203.0",
22+
"@opentelemetry/exporter-prometheus": "^0.203.0",
23+
"@opentelemetry/resources": "^2.0.1",
24+
"@opentelemetry/sdk-metrics": "^2.0.1",
2525
"@powersync/lib-services-framework": "workspace:*",
2626
"@powersync/service-jsonbig": "workspace:*",
2727
"@powersync/service-rsocket-router": "workspace:*",
@@ -49,7 +49,7 @@
4949
"@types/async": "^3.2.24",
5050
"@types/negotiator": "^0.6.4",
5151
"@types/lodash": "^4.17.5",
52-
"fastify": "4.23.2",
53-
"fastify-plugin": "^4.5.1"
52+
"fastify": "^5.4.0",
53+
"fastify-plugin": "^5.0.1"
5454
}
5555
}

packages/service-core/src/metrics/open-telemetry/util.ts

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
1-
import { MeterProvider, MetricReader, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
2-
import { PrometheusExporter } from '@opentelemetry/exporter-prometheus';
31
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
4-
import { Resource } from '@opentelemetry/resources';
2+
import { PrometheusExporter } from '@opentelemetry/exporter-prometheus';
3+
import { MeterProvider, MetricReader, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
4+
import { logger } from '@powersync/lib-services-framework';
55
import { ServiceContext } from '../../system/ServiceContext.js';
6-
import { OpenTelemetryMetricsFactory } from './OpenTelemetryMetricsFactory.js';
76
import { MetricsFactory } from '../metrics-interfaces.js';
8-
import { logger } from '@powersync/lib-services-framework';
7+
import { OpenTelemetryMetricsFactory } from './OpenTelemetryMetricsFactory.js';
98

109
import pkg from '../../../package.json' with { type: 'json' };
11-
12-
export interface RuntimeMetadata {
13-
[key: string]: string | number | undefined;
14-
}
10+
import { resourceFromAttributes } from '@opentelemetry/resources';
1511

1612
export function createOpenTelemetryMetricsFactory(context: ServiceContext): MetricsFactory {
1713
const { configuration, lifeCycleEngine, storageEngine } = context;
@@ -43,31 +39,36 @@ export function createOpenTelemetryMetricsFactory(context: ServiceContext): Metr
4339
configuredExporters.push(periodicExporter);
4440
}
4541

46-
let resolvedMetadata: (metadata: RuntimeMetadata) => void;
47-
const runtimeMetadata: Promise<RuntimeMetadata> = new Promise((resolve) => {
48-
resolvedMetadata = resolve;
42+
let resolvedInstanceId: (id: string) => void;
43+
const instanceIdPromise = new Promise<string>((resolve) => {
44+
resolvedInstanceId = resolve;
4945
});
5046

5147
lifeCycleEngine.withLifecycle(null, {
5248
start: async () => {
5349
const bucketStorage = storageEngine.activeBucketStorage;
5450
try {
5551
const instanceId = await bucketStorage.getPowerSyncInstanceId();
56-
resolvedMetadata({ ['instance_id']: instanceId });
52+
resolvedInstanceId(instanceId);
5753
} catch (err) {
58-
resolvedMetadata({ ['instance_id']: 'Unknown' });
54+
resolvedInstanceId('Unknown');
5955
}
6056
}
6157
});
6258

59+
const resource = resourceFromAttributes({
60+
['service']: 'PowerSync',
61+
['service.version']: pkg.version,
62+
['instance_id']: instanceIdPromise
63+
});
64+
65+
// This triggers OpenTelemetry to resolve the async attributes (instanceIdPromise).
66+
// This will never reject, and we don't specifically need to wait for it.
67+
resource.waitForAsyncAttributes?.();
68+
6369
const meterProvider = new MeterProvider({
64-
resource: new Resource(
65-
{
66-
['service']: 'PowerSync',
67-
['service.version']: pkg.version
68-
},
69-
runtimeMetadata
70-
),
70+
resource,
71+
7172
readers: configuredExporters
7273
});
7374

0 commit comments

Comments
 (0)