@agoric/telemetry 0.6.3-dev-4850944.0 → 0.6.3-dev-9f6644d.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agoric/telemetry",
3
- "version": "0.6.3-dev-4850944.0+4850944",
3
+ "version": "0.6.3-dev-9f6644d.0+9f6644d",
4
4
  "description": "Agoric's telemetry implementation",
5
5
  "type": "module",
6
6
  "repository": "https://github.com/Agoric/agoric-sdk",
@@ -22,11 +22,12 @@
22
22
  "author": "Agoric",
23
23
  "license": "Apache-2.0",
24
24
  "dependencies": {
25
- "@agoric/internal": "0.3.3-dev-4850944.0+4850944",
26
- "@agoric/store": "0.9.3-dev-4850944.0+4850944",
25
+ "@agoric/internal": "0.3.3-dev-9f6644d.0+9f6644d",
26
+ "@agoric/store": "0.9.3-dev-9f6644d.0+9f6644d",
27
27
  "@endo/errors": "^1.2.10",
28
28
  "@endo/init": "^1.1.9",
29
29
  "@endo/marshal": "^1.6.4",
30
+ "@endo/promise-kit": "^1.1.10",
30
31
  "@endo/stream": "^1.2.10",
31
32
  "@opentelemetry/api": "~1.9.0",
32
33
  "@opentelemetry/api-logs": "0.57.1",
@@ -68,5 +69,5 @@
68
69
  "typeCoverage": {
69
70
  "atLeast": 88.83
70
71
  },
71
- "gitHead": "4850944b7f54c991478d6d06d1771f33a9b03394"
72
+ "gitHead": "9f6644d521c5de751e9744e5bd57f75ac265f3d4"
72
73
  }
@@ -10,7 +10,8 @@ import {
10
10
  } from '@agoric/internal/src/metrics.js';
11
11
 
12
12
  /**
13
- * @import {MeterProvider, MetricOptions, ObservableCounter, ObservableUpDownCounter} from '@opentelemetry/api';
13
+ * @import {MetricOptions, ObservableCounter, ObservableUpDownCounter} from '@opentelemetry/api';
14
+ * @import {MeterProvider} from '@opentelemetry/sdk-metrics';
14
15
  * @import {TotalMap} from '@agoric/internal';
15
16
  */
16
17
 
@@ -22,6 +23,10 @@ export const makeSlogSender = async (opts = /** @type {any} */ ({})) => {
22
23
  if (!otelMeterName) throw Fail`OTel meter name is required`;
23
24
  if (!otelMeterProvider) return;
24
25
 
26
+ const shutdown = async () => {
27
+ await otelMeterProvider.shutdown();
28
+ };
29
+
25
30
  const otelMeter = otelMeterProvider.getMeter(otelMeterName);
26
31
 
27
32
  const processedInboundActionCounter = otelMeter.createCounter(
@@ -218,6 +223,7 @@ export const makeSlogSender = async (opts = /** @type {any} */ ({})) => {
218
223
  }
219
224
  };
220
225
  return Object.assign(slogSender, {
226
+ shutdown,
221
227
  usesJsonObject: false,
222
228
  });
223
229
  };
@@ -12,6 +12,7 @@ import { promisify } from 'util';
12
12
  import anylogger from 'anylogger';
13
13
 
14
14
  import { q, Fail } from '@endo/errors';
15
+ import { makePromiseKit } from '@endo/promise-kit';
15
16
  import { makeQueue } from '@endo/stream';
16
17
 
17
18
  import { makeShutdown } from '@agoric/internal/src/node/shutdown.js';
@@ -72,6 +73,16 @@ export const makeSlogSender = async options => {
72
73
  env,
73
74
  });
74
75
  // logger.log('done fork');
76
+
77
+ const exitKit = makePromiseKit();
78
+ cp.on('error', error => {
79
+ // An exit event *might* be coming, so wait a tick.
80
+ setImmediate(() => exitKit.resolve({ error }));
81
+ });
82
+ cp.on('exit', (exitCode, signal) => {
83
+ exitKit.resolve({ exitCode, signal });
84
+ });
85
+
75
86
  /** @type {(msg: Record<string, unknown> & {type: string}) => Promise<void>} */
76
87
  const rawSend = promisify(cp.send.bind(cp));
77
88
  const pipeSend = withMutex(rawSend);
@@ -132,6 +143,7 @@ export const makeSlogSender = async options => {
132
143
 
133
144
  await flush();
134
145
  cp.disconnect();
146
+ await exitKit.promise;
135
147
  };
136
148
  registerShutdown(shutdown);
137
149