@sentio/runtime 2.44.3 → 2.44.4-rc.1

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.44.3",
3
+ "version": "2.44.4-rc.1",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "exports": {
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
  /**
@@ -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
- const server = createServer({
88
- 'grpc.max_send_message_length': 384 * 1024 * 1024,
89
- 'grpc.max_receive_message_length': 384 * 1024 * 1024,
90
- 'grpc.default_compression_algorithm': compressionAlgorithms.gzip
91
- })
92
- // .use(prometheusServerMiddleware())
93
- .use(openTelemetryServerMiddleware())
94
- .use(errorDetailsServerMiddleware)
95
- const baseService = new ProcessorServiceImpl(async () => {
96
- const m = await import(options.target)
97
- console.debug('Module loaded', m)
98
- return m
99
- }, server.shutdown)
100
- const service = new FullProcessorServiceImpl(baseService)
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.unhandled = err
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.unhandled = reason as Error
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.forceShutdown()
193
+ server?.forceShutdown()
172
194
  console.log('RPC server shut down')
173
195
 
174
196
  httpServer.close(function () {