@sentio/runtime 2.40.0-rc.23 → 2.40.0-rc.25
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/lib/{chunk-EDSLVEVQ.js → chunk-WAHNA3UH.js} +338 -340
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/processor-runner.d.ts +3 -0
- package/lib/processor-runner.js +14887 -27234
- package/package.json +1 -1
- package/src/db-context.ts +2 -2
- package/src/processor-runner.ts +55 -21
- package/src/service.ts +1 -1
package/package.json
CHANGED
package/src/db-context.ts
CHANGED
@@ -24,7 +24,7 @@ const STORE_BATCH_SIZE = process.env['STORE_BATCH_SIZE'] ? parseInt(process.env[
|
|
24
24
|
type Request = Omit<DBRequest, 'opId'>
|
25
25
|
type RequestType = keyof Request
|
26
26
|
|
27
|
-
export const timeoutError =
|
27
|
+
export const timeoutError = new Error('timeout')
|
28
28
|
|
29
29
|
export class StoreContext {
|
30
30
|
private static opCounter = 0n
|
@@ -181,7 +181,7 @@ export class StoreContext {
|
|
181
181
|
private sendBatch() {
|
182
182
|
if (this.upsertBatch) {
|
183
183
|
const { request, opId, timer } = this.upsertBatch
|
184
|
-
console.debug('sending batch upsert', opId, 'batch size', request?.entity.length)
|
184
|
+
// console.debug('sending batch upsert', opId, 'batch size', request?.entity.length)
|
185
185
|
clearTimeout(timer)
|
186
186
|
this.upsertBatch = undefined
|
187
187
|
this.subject.next({
|
package/src/processor-runner.ts
CHANGED
@@ -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
|
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 {
|
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
|
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
|
-
|
134
|
-
|
135
|
-
|
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
|
package/src/service.ts
CHANGED
@@ -403,7 +403,7 @@ export class ProcessorServiceImpl implements ProcessorServiceImplementation {
|
|
403
403
|
|
404
404
|
for await (const request of requests) {
|
405
405
|
try {
|
406
|
-
console.debug('received request:', request)
|
406
|
+
// console.debug('received request:', request)
|
407
407
|
if (request.binding) {
|
408
408
|
process_binding_count.add(1)
|
409
409
|
const binding = request.binding
|