@sentio/runtime 2.44.3 → 2.44.4-rc.2
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-IOO4AJPJ.js → chunk-MHFCQFYK.js} +14 -14
- package/lib/{chunk-IOO4AJPJ.js.map → chunk-MHFCQFYK.js.map} +1 -1
- package/lib/index.d.ts +8 -2
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/processor-runner.js +29 -29
- package/lib/processor-runner.js.map +1 -1
- package/package.json +1 -1
- package/src/plugin.ts +13 -3
- package/src/processor-runner.ts +44 -22
package/package.json
CHANGED
package/src/plugin.ts
CHANGED
@@ -15,7 +15,13 @@ export abstract class Plugin {
|
|
15
15
|
supportedHandlers: HandlerType[] = []
|
16
16
|
|
17
17
|
async configure(config: ProcessConfigResponse): Promise<void> {}
|
18
|
-
async start(start: StartRequest): Promise<void> {}
|
18
|
+
async start(start: StartRequest, actionServerPort?: number): Promise<void> {}
|
19
|
+
|
20
|
+
/**
|
21
|
+
* method used by action server only
|
22
|
+
* @param port
|
23
|
+
*/
|
24
|
+
async startServer(port?: number): Promise<void> {}
|
19
25
|
|
20
26
|
/**
|
21
27
|
* @deprecated The method should not be used, use ctx.states instead
|
@@ -59,8 +65,12 @@ export class PluginManager {
|
|
59
65
|
return Promise.all(this.plugins.map((plugin) => plugin.configure(config)))
|
60
66
|
}
|
61
67
|
|
62
|
-
start(start: StartRequest) {
|
63
|
-
return Promise.all(this.plugins.map((plugin) => plugin.start(start)))
|
68
|
+
start(start: StartRequest, actionServerPort?: number) {
|
69
|
+
return Promise.all(this.plugins.map((plugin) => plugin.start(start, actionServerPort)))
|
70
|
+
}
|
71
|
+
|
72
|
+
startServer(port?: number) {
|
73
|
+
return Promise.all(this.plugins.map((plugin) => plugin.startServer(port)))
|
64
74
|
}
|
65
75
|
|
66
76
|
/**
|
package/src/processor-runner.ts
CHANGED
@@ -5,7 +5,7 @@ import fs from 'fs-extra'
|
|
5
5
|
|
6
6
|
import { compressionAlgorithms } from '@grpc/grpc-js'
|
7
7
|
import commandLineArgs from 'command-line-args'
|
8
|
-
import { createServer } from 'nice-grpc'
|
8
|
+
import { createServer, Server } from 'nice-grpc'
|
9
9
|
import { errorDetailsServerMiddleware } from 'nice-grpc-error-details'
|
10
10
|
// import { registry as niceGrpcRegistry } from 'nice-grpc-prometheus'
|
11
11
|
import { openTelemetryServerMiddleware } from 'nice-grpc-opentelemetry'
|
@@ -21,6 +21,8 @@ import { ChainConfig } from './chain-config.js'
|
|
21
21
|
import { setupLogger } from './logger.js'
|
22
22
|
|
23
23
|
import { setupOTLP } from './otlp.js'
|
24
|
+
import { PluginManager } from './plugin.js'
|
25
|
+
import { ProcessConfigResponse } from '@sentio/protos'
|
24
26
|
|
25
27
|
// const mergedRegistry = Registry.merge([globalRegistry, niceGrpcRegistry])
|
26
28
|
|
@@ -39,7 +41,8 @@ const optionDefinitions = [
|
|
39
41
|
{ name: 'chainquery-server', type: String, defaultValue: '' },
|
40
42
|
{ name: 'pricefeed-server', type: String, defaultValue: '' },
|
41
43
|
{ name: 'log-format', type: String, defaultValue: 'console' },
|
42
|
-
{ name: 'debug', type: Boolean, defaultValue: false }
|
44
|
+
{ name: 'debug', type: Boolean, defaultValue: false },
|
45
|
+
{ name: 'start-action-server', type: Boolean, defaultValue: false }
|
43
46
|
]
|
44
47
|
|
45
48
|
const options = commandLineArgs(optionDefinitions, { partial: true })
|
@@ -84,26 +87,41 @@ for (const [id, config] of Object.entries(chainsConfig)) {
|
|
84
87
|
|
85
88
|
console.debug('Starting Server', options)
|
86
89
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
}
|
100
|
-
|
90
|
+
let server: Server
|
91
|
+
let baseService: ProcessorServiceImpl
|
92
|
+
|
93
|
+
if (options.startActionServer) {
|
94
|
+
const pluginManager = PluginManager.INSTANCE
|
95
|
+
pluginManager
|
96
|
+
.configure(ProcessConfigResponse.create())
|
97
|
+
.then(() => {
|
98
|
+
return pluginManager.startServer(options.port)
|
99
|
+
})
|
100
|
+
.catch((err) => {
|
101
|
+
console.error('Error starting action server', err)
|
102
|
+
})
|
103
|
+
} else {
|
104
|
+
server = createServer({
|
105
|
+
'grpc.max_send_message_length': 384 * 1024 * 1024,
|
106
|
+
'grpc.max_receive_message_length': 384 * 1024 * 1024,
|
107
|
+
'grpc.default_compression_algorithm': compressionAlgorithms.gzip
|
108
|
+
})
|
109
|
+
// .use(prometheusServerMiddleware())
|
110
|
+
.use(openTelemetryServerMiddleware())
|
111
|
+
.use(errorDetailsServerMiddleware)
|
112
|
+
baseService = new ProcessorServiceImpl(async () => {
|
113
|
+
const m = await import(options.target)
|
114
|
+
console.debug('Module loaded', m)
|
115
|
+
return m
|
116
|
+
}, server.shutdown)
|
117
|
+
const service = new FullProcessorServiceImpl(baseService)
|
101
118
|
|
102
|
-
server.add(ProcessorDefinition, service)
|
119
|
+
server.add(ProcessorDefinition, service)
|
103
120
|
|
104
|
-
server.listen('0.0.0.0:' + options.port)
|
121
|
+
server.listen('0.0.0.0:' + options.port)
|
105
122
|
|
106
|
-
console.log('Processor Server Started at:', options.port)
|
123
|
+
console.log('Processor Server Started at:', options.port)
|
124
|
+
}
|
107
125
|
|
108
126
|
const metricsPort = 4040
|
109
127
|
const httpServer = http
|
@@ -154,7 +172,9 @@ process
|
|
154
172
|
})
|
155
173
|
.on('uncaughtException', (err) => {
|
156
174
|
console.error('Uncaught Exception, please checking if await is properly used', err)
|
157
|
-
baseService
|
175
|
+
if (baseService) {
|
176
|
+
baseService.unhandled = err
|
177
|
+
}
|
158
178
|
// shutdownServers(1)
|
159
179
|
})
|
160
180
|
.on('unhandledRejection', (reason, p) => {
|
@@ -163,12 +183,14 @@ process
|
|
163
183
|
return
|
164
184
|
}
|
165
185
|
console.error('Unhandled Rejection, please checking if await is properly', reason)
|
166
|
-
baseService
|
186
|
+
if (baseService) {
|
187
|
+
baseService.unhandled = reason as Error
|
188
|
+
}
|
167
189
|
// shutdownServers(1)
|
168
190
|
})
|
169
191
|
|
170
192
|
function shutdownServers(exitCode: number) {
|
171
|
-
server
|
193
|
+
server?.forceShutdown()
|
172
194
|
console.log('RPC server shut down')
|
173
195
|
|
174
196
|
httpServer.close(function () {
|