From f4c3a5f702656ffd835e13f9d97280a7f96a450b Mon Sep 17 00:00:00 2001 From: Roland Teichert Date: Wed, 30 Apr 2025 12:54:25 +0200 Subject: [PATCH 1/4] Report 0 storage metrics instead of ignoring them. --- packages/service-core/src/storage/storage-metrics.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/service-core/src/storage/storage-metrics.ts b/packages/service-core/src/storage/storage-metrics.ts index 5ce8f66c1..0b77f48b3 100644 --- a/packages/service-core/src/storage/storage-metrics.ts +++ b/packages/service-core/src/storage/storage-metrics.ts @@ -34,7 +34,7 @@ export function initializeCoreStorageMetrics(engine: MetricsEngine, storage: Buc let cacheTimestamp = 0; const getMetrics = () => { - if (cachedRequest == null || Date.now() - cacheTimestamp > MINIMUM_INTERVAL) { + if (!cachedRequest || Date.now() - cacheTimestamp > MINIMUM_INTERVAL) { cachedRequest = storage.getStorageMetrics().catch((e) => { logger.error(`Failed to get storage metrics`, e); return null; @@ -47,21 +47,21 @@ export function initializeCoreStorageMetrics(engine: MetricsEngine, storage: Buc replication_storage_size_bytes.setValueProvider(async () => { const metrics = await getMetrics(); if (metrics) { - return metrics.replication_size_bytes; + return metrics.replication_size_bytes ?? 0; } }); operation_storage_size_bytes.setValueProvider(async () => { const metrics = await getMetrics(); if (metrics) { - return metrics.operations_size_bytes; + return metrics.operations_size_bytes ?? 0; } }); parameter_storage_size_bytes.setValueProvider(async () => { const metrics = await getMetrics(); if (metrics) { - return metrics.parameters_size_bytes; + return metrics.parameters_size_bytes ?? 0; } }); } From 5f489215a5d8c2a6cbc349bd1942befa1c7c3bb1 Mon Sep 17 00:00:00 2001 From: Roland Teichert Date: Wed, 30 Apr 2025 12:57:24 +0200 Subject: [PATCH 2/4] Added changeset --- .changeset/old-ties-retire.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/old-ties-retire.md diff --git a/.changeset/old-ties-retire.md b/.changeset/old-ties-retire.md new file mode 100644 index 000000000..bb58339fe --- /dev/null +++ b/.changeset/old-ties-retire.md @@ -0,0 +1,5 @@ +--- +'@powersync/service-core': patch +--- + +Always report 0 value storage metrics From b25d5315df831bf7f7f5c01be2e7b1ae237b8859 Mon Sep 17 00:00:00 2001 From: Roland Teichert Date: Wed, 30 Apr 2025 16:37:00 +0200 Subject: [PATCH 3/4] Reverted storage metric changes Fixed open telemetry gauge value provider --- .../src/storage/MongoBucketStorage.ts | 8 ++++---- .../metrics/open-telemetry/OpenTelemetryMetricsFactory.ts | 2 +- packages/service-core/src/storage/storage-metrics.ts | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/module-mongodb-storage/src/storage/MongoBucketStorage.ts b/modules/module-mongodb-storage/src/storage/MongoBucketStorage.ts index 23fd90b0b..7d4f92176 100644 --- a/modules/module-mongodb-storage/src/storage/MongoBucketStorage.ts +++ b/modules/module-mongodb-storage/src/storage/MongoBucketStorage.ts @@ -306,7 +306,7 @@ export class MongoBucketStorage } async getStorageMetrics(): Promise { - const ignoreNotExiting = (e: unknown) => { + const ignoreNotExisting = (e: unknown) => { if (lib_mongo.isMongoServerError(e) && e.codeName == 'NamespaceNotFound') { // Collection doesn't exist - return 0 return [{ storageStats: { size: 0 } }]; @@ -333,7 +333,7 @@ export class MongoBucketStorage } ]) .toArray() - .catch(ignoreNotExiting); + .catch(ignoreNotExisting); const parameters_aggregate = await this.db.bucket_parameters .aggregate([ @@ -344,7 +344,7 @@ export class MongoBucketStorage } ]) .toArray() - .catch(ignoreNotExiting); + .catch(ignoreNotExisting); const replication_aggregate = await this.db.current_data .aggregate([ @@ -355,7 +355,7 @@ export class MongoBucketStorage } ]) .toArray() - .catch(ignoreNotExiting); + .catch(ignoreNotExisting); return { operations_size_bytes: Number(operations_aggregate[0].storageStats.size), diff --git a/packages/service-core/src/metrics/open-telemetry/OpenTelemetryMetricsFactory.ts b/packages/service-core/src/metrics/open-telemetry/OpenTelemetryMetricsFactory.ts index 13013cb50..f90b972c9 100644 --- a/packages/service-core/src/metrics/open-telemetry/OpenTelemetryMetricsFactory.ts +++ b/packages/service-core/src/metrics/open-telemetry/OpenTelemetryMetricsFactory.ts @@ -35,7 +35,7 @@ export class OpenTelemetryMetricsFactory implements MetricsFactory { gauge.addCallback(async (result) => { const value = await valueProvider(); - if (value) { + if (value != undefined) { result.observe(value); } }); diff --git a/packages/service-core/src/storage/storage-metrics.ts b/packages/service-core/src/storage/storage-metrics.ts index 0b77f48b3..12b07d2f7 100644 --- a/packages/service-core/src/storage/storage-metrics.ts +++ b/packages/service-core/src/storage/storage-metrics.ts @@ -47,21 +47,21 @@ export function initializeCoreStorageMetrics(engine: MetricsEngine, storage: Buc replication_storage_size_bytes.setValueProvider(async () => { const metrics = await getMetrics(); if (metrics) { - return metrics.replication_size_bytes ?? 0; + return metrics.replication_size_bytes; } }); operation_storage_size_bytes.setValueProvider(async () => { const metrics = await getMetrics(); if (metrics) { - return metrics.operations_size_bytes ?? 0; + return metrics.operations_size_bytes; } }); parameter_storage_size_bytes.setValueProvider(async () => { const metrics = await getMetrics(); if (metrics) { - return metrics.parameters_size_bytes ?? 0; + return metrics.parameters_size_bytes; } }); } From 87c61b9aa6494bfb588cf36a296eeecefde31888 Mon Sep 17 00:00:00 2001 From: Roland Teichert Date: Wed, 30 Apr 2025 16:40:43 +0200 Subject: [PATCH 4/4] Updated changeset --- .changeset/old-ties-retire.md | 5 ----- .changeset/small-clouds-collect.md | 6 ++++++ 2 files changed, 6 insertions(+), 5 deletions(-) delete mode 100644 .changeset/old-ties-retire.md create mode 100644 .changeset/small-clouds-collect.md diff --git a/.changeset/old-ties-retire.md b/.changeset/old-ties-retire.md deleted file mode 100644 index bb58339fe..000000000 --- a/.changeset/old-ties-retire.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@powersync/service-core': patch ---- - -Always report 0 value storage metrics diff --git a/.changeset/small-clouds-collect.md b/.changeset/small-clouds-collect.md new file mode 100644 index 000000000..76a1b8d58 --- /dev/null +++ b/.changeset/small-clouds-collect.md @@ -0,0 +1,6 @@ +--- +'@powersync/service-module-mongodb-storage': patch +'@powersync/service-core': patch +--- + +Fixed opentelemetry observable gauge value provider ignoring 0 values