@sentio/runtime 2.40.0-rc.24 → 2.40.0-rc.26

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": "@sentio/runtime",
3
- "version": "2.40.0-rc.24",
3
+ "version": "2.40.0-rc.26",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "exports": {
package/src/multicall.ts CHANGED
@@ -1603,7 +1603,6 @@ export interface AggregateResult {
1603
1603
  const iface = new Interface(ABI)
1604
1604
 
1605
1605
  export function encodeMulticallData(calls: Array<Multicall3Call>) {
1606
- console.log(calls)
1607
1606
  return iface.encodeFunctionData('aggregate', [calls])
1608
1607
  }
1609
1608
 
@@ -7,9 +7,9 @@ import { compressionAlgorithms } from '@grpc/grpc-js'
7
7
  import commandLineArgs from 'command-line-args'
8
8
  import { createServer } from 'nice-grpc'
9
9
  import { errorDetailsServerMiddleware } from 'nice-grpc-error-details'
10
- import { registry as niceGrpcRegistry, prometheusServerMiddleware } from 'nice-grpc-prometheus'
10
+ // import { registry as niceGrpcRegistry } from 'nice-grpc-prometheus'
11
11
  import { openTelemetryServerMiddleware } from 'nice-grpc-opentelemetry'
12
- import { register as globalRegistry, Registry } from 'prom-client'
12
+ // import { register as globalRegistry, Registry } from 'prom-client'
13
13
  import http from 'http'
14
14
  // @ts-ignore inspector promises is not included in @type/node
15
15
  import { Session } from 'node:inspector/promises'
@@ -21,23 +21,17 @@ import { FullProcessorServiceImpl } from './full-service.js'
21
21
  import { ChainConfig } from './chain-config.js'
22
22
  import { setupLogger } from './logger.js'
23
23
 
24
- import { NodeSDK } from '@opentelemetry/sdk-node'
24
+ // import { NodeSDK } from '@opentelemetry/sdk-node'
25
+ import { envDetector } from '@opentelemetry/resources'
25
26
  import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-grpc'
26
27
  import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc'
27
- import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics'
28
- import { diag, DiagConsoleLogger, DiagLogLevel } from '@opentelemetry/api'
28
+ import { PeriodicExportingMetricReader, MeterProvider } from '@opentelemetry/sdk-metrics'
29
+ import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base'
30
+ import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
31
+ import { diag, DiagConsoleLogger, DiagLogLevel, metrics, trace } from '@opentelemetry/api'
32
+ import { PrometheusExporter } from '@opentelemetry/exporter-prometheus'
29
33
 
30
- const sdk = new NodeSDK({
31
- traceExporter: new OTLPTraceExporter(),
32
- metricReader: new PeriodicExportingMetricReader({
33
- exporter: new OTLPMetricExporter()
34
- })
35
- // instrumentations: [getNodeAutoInstrumentations()],
36
- })
37
-
38
- sdk.start()
39
-
40
- const mergedRegistry = Registry.merge([globalRegistry, niceGrpcRegistry])
34
+ // const mergedRegistry = Registry.merge([globalRegistry, niceGrpcRegistry])
41
35
 
42
36
  const optionDefinitions = [
43
37
  { name: 'target', type: String, defaultOption: true },
@@ -68,6 +62,46 @@ if (options.debug) {
68
62
  diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG)
69
63
  }
70
64
 
65
+ const resource = await envDetector.detect()
66
+
67
+ const meterProvider = new MeterProvider({
68
+ resource,
69
+ readers: [
70
+ new PeriodicExportingMetricReader({
71
+ exporter: new OTLPMetricExporter()
72
+ }),
73
+ new PrometheusExporter({
74
+ // http://localhost:4041/metrics
75
+ port: 4041
76
+ })
77
+ ]
78
+ })
79
+
80
+ const traceProvider = new NodeTracerProvider({
81
+ resource: resource
82
+ })
83
+ const exporter = new OTLPTraceExporter() // new ConsoleSpanExporter();
84
+ const processor = new BatchSpanProcessor(exporter)
85
+ traceProvider.addSpanProcessor(processor)
86
+ traceProvider.register()
87
+
88
+ metrics.setGlobalMeterProvider(meterProvider)
89
+ trace.setGlobalTracerProvider(traceProvider)
90
+ ;['SIGINT', 'SIGTERM'].forEach((signal) => {
91
+ process.on(signal as any, () => shutdownProvider())
92
+ })
93
+
94
+ export async function shutdownProvider() {
95
+ const traceProvider = trace.getTracerProvider()
96
+ if (traceProvider instanceof NodeTracerProvider) {
97
+ traceProvider.shutdown().catch(console.error)
98
+ }
99
+ const meterProvider = metrics.getMeterProvider()
100
+ if (meterProvider instanceof MeterProvider) {
101
+ meterProvider.shutdown().catch(console.error)
102
+ }
103
+ }
104
+
71
105
  Error.stackTraceLimit = 20
72
106
 
73
107
  const fullPath = path.resolve(options['chains-config'])
@@ -106,7 +140,7 @@ const server = createServer({
106
140
  'grpc.max_receive_message_length': 384 * 1024 * 1024,
107
141
  'grpc.default_compression_algorithm': compressionAlgorithms.gzip
108
142
  })
109
- .use(prometheusServerMiddleware())
143
+ // .use(prometheusServerMiddleware())
110
144
  .use(openTelemetryServerMiddleware())
111
145
  .use(errorDetailsServerMiddleware)
112
146
  const baseService = new ProcessorServiceImpl(async () => {
@@ -129,10 +163,10 @@ const httpServer = http
129
163
  const reqUrl = new URL(req.url, `http://${req.headers.host}`)
130
164
  const queries = reqUrl.searchParams
131
165
  switch (reqUrl.pathname) {
132
- case '/metrics':
133
- const metrics = await mergedRegistry.metrics()
134
- res.write(metrics)
135
- break
166
+ // case '/metrics':
167
+ // const metrics = await mergedRegistry.metrics()
168
+ // res.write(metrics)
169
+ // break
136
170
  case '/profile': {
137
171
  try {
138
172
  const profileTime = parseInt(queries.get('t') || '1000', 10) || 1000