Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .changeset/lovely-apricots-notice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
'@powersync/service-module-postgres-storage': minor
'@powersync/service-core': minor
'@powersync/service-module-core': minor
'@powersync/service-image': minor
---

Upgrade Node, Sentry, Fastify and OpenTelemetry dependencies.
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v22.17.0
v22.17.1
4 changes: 2 additions & 2 deletions modules/module-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
"@powersync/service-core": "workspace:*",
"@powersync/service-rsocket-router": "workspace:*",
"@powersync/service-types": "workspace:*",
"fastify": "4.23.2",
"@fastify/cors": "8.4.1"
"fastify": "^5.4.0",
"@fastify/cors": "^11.1.0"
},
"devDependencies": {}
}
5 changes: 3 additions & 2 deletions modules/module-postgres-storage/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"types": "dist/@types/index.d.ts",
"version": "0.9.0",
"main": "dist/index.js",
"license": "FSL-1.1-ALv2",
"type": "module",
"publishConfig": {
"access": "public"
Expand Down Expand Up @@ -32,7 +33,6 @@
"@powersync/lib-service-postgres": "workspace:*",
"@powersync/lib-services-framework": "workspace:*",
"@powersync/service-core": "workspace:*",
"@powersync/service-core-tests": "workspace:*",
"@powersync/service-jpgwire": "workspace:*",
"@powersync/service-jsonbig": "workspace:*",
"@powersync/service-sync-rules": "workspace:*",
Expand All @@ -44,6 +44,7 @@
"uuid": "^11.1.0"
},
"devDependencies": {
"typescript": "^5.7.3"
"typescript": "^5.7.3",
"@powersync/service-core-tests": "workspace:*"
}
}
14 changes: 7 additions & 7 deletions packages/service-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@
},
"dependencies": {
"@js-sdsl/ordered-set": "^4.4.2",
"@opentelemetry/api": "~1.9.0",
"@opentelemetry/exporter-metrics-otlp-http": "^0.57.2",
"@opentelemetry/exporter-prometheus": "^0.57.2",
"@opentelemetry/resources": "^1.30.1",
"@opentelemetry/sdk-metrics": "1.30.1",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/exporter-metrics-otlp-http": "^0.203.0",
"@opentelemetry/exporter-prometheus": "^0.203.0",
"@opentelemetry/resources": "^2.0.1",
"@opentelemetry/sdk-metrics": "^2.0.1",
"@powersync/lib-services-framework": "workspace:*",
"@powersync/service-jsonbig": "workspace:*",
"@powersync/service-rsocket-router": "workspace:*",
Expand Down Expand Up @@ -49,7 +49,7 @@
"@types/async": "^3.2.24",
"@types/negotiator": "^0.6.4",
"@types/lodash": "^4.17.5",
"fastify": "4.23.2",
"fastify-plugin": "^4.5.1"
"fastify": "^5.4.0",
"fastify-plugin": "^5.0.1"
}
}
41 changes: 20 additions & 21 deletions packages/service-core/src/metrics/open-telemetry/util.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
import { MeterProvider, MetricReader, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
import { PrometheusExporter } from '@opentelemetry/exporter-prometheus';
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
import { Resource } from '@opentelemetry/resources';
import { PrometheusExporter } from '@opentelemetry/exporter-prometheus';
import { MeterProvider, MetricReader, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
import { logger } from '@powersync/lib-services-framework';
import { ServiceContext } from '../../system/ServiceContext.js';
import { OpenTelemetryMetricsFactory } from './OpenTelemetryMetricsFactory.js';
import { MetricsFactory } from '../metrics-interfaces.js';
import { logger } from '@powersync/lib-services-framework';
import { OpenTelemetryMetricsFactory } from './OpenTelemetryMetricsFactory.js';

import pkg from '../../../package.json' with { type: 'json' };

export interface RuntimeMetadata {
[key: string]: string | number | undefined;
}
import { resourceFromAttributes } from '@opentelemetry/resources';

export function createOpenTelemetryMetricsFactory(context: ServiceContext): MetricsFactory {
const { configuration, lifeCycleEngine, storageEngine } = context;
Expand Down Expand Up @@ -43,31 +39,34 @@ export function createOpenTelemetryMetricsFactory(context: ServiceContext): Metr
configuredExporters.push(periodicExporter);
}

let resolvedMetadata: (metadata: RuntimeMetadata) => void;
const runtimeMetadata: Promise<RuntimeMetadata> = new Promise((resolve) => {
resolvedMetadata = resolve;
let resolvedInstanceId: (id: string) => void;
const instanceIdPromise = new Promise<string>((resolve) => {
resolvedInstanceId = resolve;
});

lifeCycleEngine.withLifecycle(null, {
start: async () => {
const bucketStorage = storageEngine.activeBucketStorage;
try {
const instanceId = await bucketStorage.getPowerSyncInstanceId();
resolvedMetadata({ ['instance_id']: instanceId });
resolvedInstanceId(instanceId);
} catch (err) {
resolvedMetadata({ ['instance_id']: 'Unknown' });
resolvedInstanceId('Unknown');
}
}
});

const resource = resourceFromAttributes({
['service']: 'PowerSync',
['service.version']: pkg.version,
['instance_id']: instanceIdPromise
});

resource.waitForAsyncAttributes?.();

const meterProvider = new MeterProvider({
resource: new Resource(
{
['service']: 'PowerSync',
['service.version']: pkg.version
},
runtimeMetadata
),
resource,

readers: configuredExporters
});

Expand Down
Loading