@substrate/api-sidecar 19.1.0 → 19.2.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/README.md +29 -22
- package/build/package.json +8 -7
- package/build/src/SidecarConfig.js +9 -1
- package/build/src/SidecarConfig.js.map +1 -1
- package/build/src/Specs.d.ts +1 -0
- package/build/src/Specs.js +34 -1
- package/build/src/Specs.js.map +1 -1
- package/build/src/controllers/AbstractController.js.map +1 -1
- package/build/src/controllers/blocks/BlocksController.d.ts +2 -0
- package/build/src/controllers/blocks/BlocksController.js +87 -8
- package/build/src/controllers/blocks/BlocksController.js.map +1 -1
- package/build/src/controllers/blocks/BlocksExtrinsicsController.d.ts +1 -0
- package/build/src/controllers/blocks/BlocksExtrinsicsController.js +13 -2
- package/build/src/controllers/blocks/BlocksExtrinsicsController.js.map +1 -1
- package/build/src/controllers/blocks/BlocksRawExtrinsicsController.js +12 -3
- package/build/src/controllers/blocks/BlocksRawExtrinsicsController.js.map +1 -1
- package/build/src/logging/Log.js +11 -0
- package/build/src/logging/Log.js.map +1 -1
- package/build/src/main.js +5 -5
- package/build/src/main.js.map +1 -1
- package/build/src/{util/metrics.d.ts → metrics/Metrics.d.ts} +3 -8
- package/build/src/{util/metrics.js → metrics/Metrics.js} +20 -139
- package/build/src/metrics/Metrics.js.map +1 -0
- package/build/src/metrics/config.d.ts +2 -0
- package/build/src/metrics/config.js +71 -0
- package/build/src/metrics/config.js.map +1 -0
- package/build/src/metrics/index.d.ts +2 -0
- package/build/src/metrics/index.js +33 -0
- package/build/src/metrics/index.js.map +1 -0
- package/build/src/parseArgs.js +0 -13
- package/build/src/parseArgs.js.map +1 -1
- package/build/src/services/accounts/AccountsAssetsService.js +1 -2
- package/build/src/services/accounts/AccountsAssetsService.js.map +1 -1
- package/build/src/services/accounts/AccountsPoolAssetsService.js +1 -2
- package/build/src/services/accounts/AccountsPoolAssetsService.js.map +1 -1
- package/build/src/services/accounts/AccountsStakingPayoutsService.js +4 -2
- package/build/src/services/accounts/AccountsStakingPayoutsService.js.map +1 -1
- package/build/src/services/blocks/BlocksService.d.ts +1 -3
- package/build/src/services/blocks/BlocksService.js +16 -26
- package/build/src/services/blocks/BlocksService.js.map +1 -1
- package/build/src/services/blocks/BlocksService.spec.js +6 -67
- package/build/src/services/blocks/BlocksService.spec.js.map +1 -1
- package/build/src/services/pallets/PalletsStakingProgressService.js +3 -3
- package/build/src/services/pallets/PalletsStakingProgressService.js.map +1 -1
- package/build/src/types/metrics/index.d.ts +13 -0
- package/build/src/types/metrics/index.js +3 -0
- package/build/src/types/metrics/index.js.map +1 -0
- package/build/src/types/requests.d.ts +17 -0
- package/build/src/types/sidecar-config/CONFIG.d.ts +7 -1
- package/build/src/types/sidecar-config/CONFIG.js +6 -0
- package/build/src/types/sidecar-config/CONFIG.js.map +1 -1
- package/build/src/types/sidecar-config/MODULES.d.ts +2 -1
- package/build/src/types/sidecar-config/MODULES.js +1 -0
- package/build/src/types/sidecar-config/MODULES.js.map +1 -1
- package/build/src/types/sidecar-config/SidecarConfig.d.ts +9 -0
- package/package.json +8 -7
- package/build/src/util/metrics.js.map +0 -1
package/README.md
CHANGED
|
@@ -170,6 +170,14 @@ For more information on our configuration manager visit its readme [here](https:
|
|
|
170
170
|
- `SAS_SUBSTRATE_URL`: URL to which the RPC proxy will attempt to connect to, defaults to
|
|
171
171
|
`ws://127.0.0.1:9944`. Accepts both a websocket, and http URL.
|
|
172
172
|
|
|
173
|
+
### Metrics Server
|
|
174
|
+
|
|
175
|
+
- `SAS_METRICS_ENABLED`: Boolean to enable the metrics server instance with Prometheus (server metrics) and Loki (logging) connections. Defaults to false.
|
|
176
|
+
- `SAS_METRICS_PROM_HOST`: The host of the prometheus server used to listen to metrics emitted, defaults to `127.0.0.1`.
|
|
177
|
+
- `SAS_METRICS_PROM_PORT`: The port of the prometheus server, defaults to `9100`.
|
|
178
|
+
- `SAS_METRICS_LOKI_HOST`: The host of the loki server used to pull the logs, defaults to `127.0.0.1`.
|
|
179
|
+
- `SAS_METRICS_LOKI_PORT`: The port of the loki server, defaults to `3100`
|
|
180
|
+
|
|
173
181
|
#### Custom substrate types
|
|
174
182
|
|
|
175
183
|
Some chains require custom type definitions in order for Sidecar to know how to decode the data
|
|
@@ -239,23 +247,10 @@ file you can `symlink` it with `.env.test`. For example you could run
|
|
|
239
247
|
commands `ln` and `unlink` for more info.)
|
|
240
248
|
|
|
241
249
|
### Prometheus server
|
|
242
|
-
Prometheus metrics can be enabled by running sidecar with the following flag :
|
|
243
250
|
|
|
244
|
-
|
|
245
|
-
yarn start --prometheus
|
|
246
|
-
```
|
|
251
|
+
Prometheus metrics can be enabled by running sidecar with the following env configuration: `SAS_METRICS_ENABLED`=true
|
|
247
252
|
|
|
248
|
-
You can also
|
|
249
|
-
|
|
250
|
-
```bash
|
|
251
|
-
yarn start --prometheus --prometheus-port=<YOUR_CUSTOM_PORT>
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
You can also expand the metrics tracking capabilities to include query params by running:
|
|
255
|
-
|
|
256
|
-
```bash
|
|
257
|
-
yarn start --prometheus --prometheus-queryparams
|
|
258
|
-
```
|
|
253
|
+
You can also expand the metrics tracking capabilities to include query params by adding to the env configuration: `SAS_METRICS_INCLUDE_QUERYPARAMS`=true
|
|
259
254
|
|
|
260
255
|
The metrics endpoint can then be accessed :
|
|
261
256
|
- on the default port : `http://127.0.0.1:9100/metrics` or
|
|
@@ -265,19 +260,31 @@ A JSON format response is available at `http://127.0.0.1:9100/metrics.json`.
|
|
|
265
260
|
|
|
266
261
|
That way you will have access to the default prometheus node instance metrics and the following metrics will be emitted for each route:
|
|
267
262
|
|
|
268
|
-
- `
|
|
269
|
-
- `
|
|
270
|
-
- `
|
|
263
|
+
- `sas_http_request_error`: type counter and tracks http errors occuring in sidecar
|
|
264
|
+
- `sas_http_request_success`: type counter and tracks successfull http requests
|
|
265
|
+
- `sas_http_requests`: type counter and tracks all http requests
|
|
271
266
|
- `sas_request_duration_seconds`: type histogram and tracks the latency of the requests
|
|
272
267
|
- `sas_response_size_bytes_seconds`: type histogram and tracks the response size of the requests
|
|
273
268
|
- `sas_response_size_latency_ratio_seconds`: type histogram and tracks the response bytes per second of the requests
|
|
274
269
|
|
|
275
270
|
The blocks controller also includes the following route-specific metrics:
|
|
276
271
|
|
|
277
|
-
- `
|
|
278
|
-
- `
|
|
279
|
-
- `
|
|
280
|
-
- `
|
|
272
|
+
- `sas_extrinsics_in_request`: type histogram and tracks the number of extrinsics returned in the request when a range of blocks is queried
|
|
273
|
+
- `sas_extrinsics_per_second`: type histogram and tracks the returned extrinics per second
|
|
274
|
+
- `sas_extrinsics_per_block`: type histogram and tracks the returned extrinsics per block
|
|
275
|
+
- `sas_seconds_per_block`: type histogram and tracks the request time per block
|
|
276
|
+
|
|
277
|
+
The metrics registry is injected in the Response object when the `SAS_METRICS_ENABLED` flag is set to `true` in the `.env` file, allowing to extend the controller based metrics to any given controller from within the controller functions.
|
|
278
|
+
|
|
279
|
+
To successfully run and access the metrics and logs in Grafana (for example) the following are required:
|
|
280
|
+
|
|
281
|
+
- prometheus server (info [here](https://prometheus.io/docs/prometheus/latest/getting_started/))
|
|
282
|
+
- loki server and promtail (info [here](https://grafana.com/docs/loki/latest/setup/install/))
|
|
283
|
+
|
|
284
|
+
For mac users using homebrew:
|
|
285
|
+
```bash
|
|
286
|
+
brew install prometheus loki promtail
|
|
287
|
+
```
|
|
281
288
|
|
|
282
289
|
## Debugging fee and staking payout calculations
|
|
283
290
|
|
package/build/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "19.
|
|
2
|
+
"version": "19.2.0",
|
|
3
3
|
"name": "@substrate/api-sidecar",
|
|
4
4
|
"description": "REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.",
|
|
5
5
|
"homepage": "https://github.com/paritytech/substrate-api-sidecar#readme",
|
|
@@ -50,19 +50,20 @@
|
|
|
50
50
|
"test:test-release": "yarn build:scripts && node scripts/build/runYarnPack.js"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@polkadot/api": "^
|
|
54
|
-
"@polkadot/api-contract": "^
|
|
55
|
-
"@polkadot/util-crypto": "^13.
|
|
53
|
+
"@polkadot/api": "^13.2.1",
|
|
54
|
+
"@polkadot/api-contract": "^13.2.1",
|
|
55
|
+
"@polkadot/util-crypto": "^13.1.1",
|
|
56
56
|
"@substrate/calc": "^0.3.1",
|
|
57
57
|
"argparse": "^2.0.1",
|
|
58
58
|
"confmgr": "^1.1.0",
|
|
59
|
-
"express": "^4.
|
|
59
|
+
"express": "^4.21.0",
|
|
60
60
|
"express-winston": "^4.2.0",
|
|
61
61
|
"http-errors": "^2.0.0",
|
|
62
|
-
"lru-cache": "^
|
|
62
|
+
"lru-cache": "^11.0.1",
|
|
63
63
|
"prom-client": "^15.1.3",
|
|
64
64
|
"rxjs": "^7.8.1",
|
|
65
|
-
"winston": "^3.14.
|
|
65
|
+
"winston": "^3.14.2",
|
|
66
|
+
"winston-loki": "^6.1.2"
|
|
66
67
|
},
|
|
67
68
|
"devDependencies": {
|
|
68
69
|
"@substrate/dev": "^0.7.1",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2017-
|
|
2
|
+
// Copyright 2017-2024 Parity Technologies (UK) Ltd.
|
|
3
3
|
// This file is part of Substrate API Sidecar.
|
|
4
4
|
//
|
|
5
5
|
// Substrate API Sidecar is free software: you can redistribute it and/or modify
|
|
@@ -69,6 +69,14 @@ class SidecarConfig {
|
|
|
69
69
|
WRITE_MAX_FILE_SIZE: config.Get(sidecar_config_1.MODULES.LOG, sidecar_config_1.CONFIG.WRITE_MAX_FILE_SIZE),
|
|
70
70
|
WRITE_MAX_FILES: config.Get(sidecar_config_1.MODULES.LOG, sidecar_config_1.CONFIG.WRITE_MAX_FILES),
|
|
71
71
|
},
|
|
72
|
+
METRICS: {
|
|
73
|
+
ENABLED: config.Get(sidecar_config_1.MODULES.METRICS, sidecar_config_1.CONFIG.ENABLED),
|
|
74
|
+
PROM_HOST: config.Get(sidecar_config_1.MODULES.METRICS, sidecar_config_1.CONFIG.PROM_HOST),
|
|
75
|
+
PROM_PORT: config.Get(sidecar_config_1.MODULES.METRICS, sidecar_config_1.CONFIG.PROM_PORT),
|
|
76
|
+
LOKI_HOST: config.Get(sidecar_config_1.MODULES.METRICS, sidecar_config_1.CONFIG.LOKI_HOST),
|
|
77
|
+
LOKI_PORT: config.Get(sidecar_config_1.MODULES.METRICS, sidecar_config_1.CONFIG.LOKI_PORT),
|
|
78
|
+
INCLUDE_QUERYPARAMS: config.Get(sidecar_config_1.MODULES.METRICS, sidecar_config_1.CONFIG.INCLUDE_QUERYPARAMS),
|
|
79
|
+
},
|
|
72
80
|
};
|
|
73
81
|
return this._config;
|
|
74
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidecarConfig.js","sourceRoot":"","sources":["../../src/SidecarConfig.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SidecarConfig.js","sourceRoot":"","sources":["../../src/SidecarConfig.ts"],"names":[],"mappings":"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"}
|
package/build/src/Specs.d.ts
CHANGED
package/build/src/Specs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2017-
|
|
2
|
+
// Copyright 2017-2024 Parity Technologies (UK) Ltd.
|
|
3
3
|
// This file is part of Substrate API Sidecar.
|
|
4
4
|
//
|
|
5
5
|
// Substrate API Sidecar is free software: you can redistribute it and/or modify
|
|
@@ -29,6 +29,7 @@ class Specs {
|
|
|
29
29
|
this.appendLogSpecs();
|
|
30
30
|
this.appendSubstrateSpecs();
|
|
31
31
|
this.appendExpressSpecs();
|
|
32
|
+
this.appendMetricsSpecs();
|
|
32
33
|
return this._specs;
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
@@ -152,6 +153,38 @@ class Specs {
|
|
|
152
153
|
mandatory: false,
|
|
153
154
|
}));
|
|
154
155
|
}
|
|
156
|
+
static appendMetricsSpecs() {
|
|
157
|
+
if (!this._specs) {
|
|
158
|
+
throw APPEND_SPEC_ERROR;
|
|
159
|
+
}
|
|
160
|
+
this._specs.appendSpec(sidecar_config_1.MODULES.METRICS, this._specs.getSpec(sidecar_config_1.CONFIG.ENABLED, 'Whether or not to enable metrics', {
|
|
161
|
+
default: 'false',
|
|
162
|
+
type: 'boolean',
|
|
163
|
+
regexp: /^true|false$/,
|
|
164
|
+
}));
|
|
165
|
+
this._specs.appendSpec(sidecar_config_1.MODULES.METRICS, this._specs.getSpec(sidecar_config_1.CONFIG.PROM_HOST, 'Prometheus host', {
|
|
166
|
+
default: '127.0.0.1',
|
|
167
|
+
type: 'string',
|
|
168
|
+
}));
|
|
169
|
+
this._specs.appendSpec(sidecar_config_1.MODULES.METRICS, this._specs.getSpec(sidecar_config_1.CONFIG.PROM_PORT, 'Prometheus port', {
|
|
170
|
+
default: 9100,
|
|
171
|
+
type: 'number',
|
|
172
|
+
regexp: /^\d{2,6}$/,
|
|
173
|
+
}));
|
|
174
|
+
this._specs.appendSpec(sidecar_config_1.MODULES.METRICS, this._specs.getSpec(sidecar_config_1.CONFIG.LOKI_HOST, 'Loki host', {
|
|
175
|
+
default: '127.0.0.1',
|
|
176
|
+
type: 'string',
|
|
177
|
+
}));
|
|
178
|
+
this._specs.appendSpec(sidecar_config_1.MODULES.METRICS, this._specs.getSpec(sidecar_config_1.CONFIG.LOKI_PORT, 'Loki port', {
|
|
179
|
+
default: 3100,
|
|
180
|
+
type: 'number',
|
|
181
|
+
}));
|
|
182
|
+
this._specs.appendSpec(sidecar_config_1.MODULES.METRICS, this._specs.getSpec(sidecar_config_1.CONFIG.INCLUDE_QUERYPARAMS, 'Include query params in the labels of the metrics', {
|
|
183
|
+
default: 'false',
|
|
184
|
+
type: 'boolean',
|
|
185
|
+
regexp: /^true|false$/,
|
|
186
|
+
}));
|
|
187
|
+
}
|
|
155
188
|
}
|
|
156
189
|
exports.Specs = Specs;
|
|
157
190
|
//# sourceMappingURL=Specs.js.map
|
package/build/src/Specs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Specs.js","sourceRoot":"","sources":["../../src/Specs.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Specs.js","sourceRoot":"","sources":["../../src/Specs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractController.js","sourceRoot":"","sources":["../../../src/controllers/AbstractController.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;;;;;;;;;;;;;;;;;;;;;;AAIxE,yCAAuC;AAEvC,iDAAmC;AACnC,6CAAyE;AAYzE,0CAA8C;AAC9C,4CAAqD;AAErD,0DAA2E;AAW3E;;GAEG;AACH,MAA8B,kBAAkB;
|
|
1
|
+
{"version":3,"file":"AbstractController.js","sourceRoot":"","sources":["../../../src/controllers/AbstractController.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,8 +71,10 @@ import AbstractController from '../AbstractController';
|
|
|
71
71
|
*/
|
|
72
72
|
export default class BlocksController extends AbstractController<BlocksService> {
|
|
73
73
|
private readonly options;
|
|
74
|
+
private blockStore;
|
|
74
75
|
constructor(api: ApiPromise, options: ControllerOptions);
|
|
75
76
|
protected initRoutes(): void;
|
|
77
|
+
private emitExtrinsicMetrics;
|
|
76
78
|
/**
|
|
77
79
|
* Get the latest block.
|
|
78
80
|
*
|
|
@@ -93,15 +93,40 @@ const AbstractController_1 = __importDefault(require("../AbstractController"));
|
|
|
93
93
|
*/
|
|
94
94
|
class BlocksController extends AbstractController_1.default {
|
|
95
95
|
constructor(api, options) {
|
|
96
|
-
super(api, '/blocks', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.
|
|
96
|
+
super(api, '/blocks', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.hasQueryFeeApi));
|
|
97
97
|
this.options = options;
|
|
98
|
+
this.emitExtrinsicMetrics = (totExtrinsics, totBlocks, method, path, res) => {
|
|
99
|
+
if (res.locals.metrics) {
|
|
100
|
+
const seconds = res.locals.metrics.timer();
|
|
101
|
+
const extrinsics_in_request = res.locals.metrics.registry['sas_extrinsics_in_request'];
|
|
102
|
+
extrinsics_in_request.labels({ method: method, route: path, status_code: res.statusCode }).observe(totExtrinsics);
|
|
103
|
+
const extrinsics_per_second = res.locals.metrics.registry['sas_extrinsics_per_second'];
|
|
104
|
+
extrinsics_per_second
|
|
105
|
+
.labels({ method: method, route: path, status_code: res.statusCode })
|
|
106
|
+
.observe(totExtrinsics / seconds);
|
|
107
|
+
const extrinsicsPerBlockMetrics = res.locals.metrics.registry['sas_extrinsics_per_block'];
|
|
108
|
+
extrinsicsPerBlockMetrics
|
|
109
|
+
.labels({ method: 'GET', route: path, status_code: res.statusCode })
|
|
110
|
+
.observe(totExtrinsics / totBlocks);
|
|
111
|
+
const seconds_per_block = res.locals.metrics.registry['sas_seconds_per_block'];
|
|
112
|
+
seconds_per_block
|
|
113
|
+
.labels({ method: method, route: path, status_code: res.statusCode })
|
|
114
|
+
.observe(seconds / totBlocks);
|
|
115
|
+
if (totBlocks > 1) {
|
|
116
|
+
const seconds_per_block = res.locals.metrics.registry['sas_seconds_per_block'];
|
|
117
|
+
seconds_per_block
|
|
118
|
+
.labels({ method: method, route: path, status_code: res.statusCode })
|
|
119
|
+
.observe(seconds / totBlocks);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
};
|
|
98
123
|
/**
|
|
99
124
|
* Get the latest block.
|
|
100
125
|
*
|
|
101
126
|
* @param _req Express Request
|
|
102
127
|
* @param res Express Response
|
|
103
128
|
*/
|
|
104
|
-
this.getLatestBlock = async ({ query: { eventDocs, extrinsicDocs, finalized, noFees, decodedXcmMsgs, paraId } }, res) => {
|
|
129
|
+
this.getLatestBlock = async ({ query: { eventDocs, extrinsicDocs, finalized, noFees, decodedXcmMsgs, paraId }, method, route }, res) => {
|
|
105
130
|
const eventDocsArg = eventDocs === 'true';
|
|
106
131
|
const extrinsicDocsArg = extrinsicDocs === 'true';
|
|
107
132
|
let hash, queryFinalizedHead, omitFinalizedTag;
|
|
@@ -126,7 +151,7 @@ class BlocksController extends AbstractController_1.default {
|
|
|
126
151
|
}
|
|
127
152
|
const noFeesArg = noFees === 'true';
|
|
128
153
|
const decodedXcmMsgsArg = decodedXcmMsgs === 'true';
|
|
129
|
-
const paraIdArg = paraId
|
|
154
|
+
const paraIdArg = paraId ? this.parseNumberOrThrow(paraId, 'paraId must be an integer') : undefined;
|
|
130
155
|
const options = {
|
|
131
156
|
eventDocs: eventDocsArg,
|
|
132
157
|
extrinsicDocs: extrinsicDocsArg,
|
|
@@ -137,8 +162,28 @@ class BlocksController extends AbstractController_1.default {
|
|
|
137
162
|
checkDecodedXcm: decodedXcmMsgsArg,
|
|
138
163
|
paraId: paraIdArg,
|
|
139
164
|
};
|
|
165
|
+
// Create a key for the cache that is a concatenation of the block hash and all the query params included in the request
|
|
166
|
+
const cacheKey = hash.toString() +
|
|
167
|
+
Number(options.eventDocs) +
|
|
168
|
+
Number(options.extrinsicDocs) +
|
|
169
|
+
Number(options.checkFinalized) +
|
|
170
|
+
Number(options.noFees) +
|
|
171
|
+
Number(options.checkDecodedXcm) +
|
|
172
|
+
Number(options.paraId);
|
|
173
|
+
const isBlockCached = this.blockStore.get(cacheKey);
|
|
174
|
+
if (isBlockCached) {
|
|
175
|
+
BlocksController.sanitizedSend(res, isBlockCached);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
140
178
|
const historicApi = await this.api.at(hash);
|
|
141
|
-
|
|
179
|
+
const block = await this.service.fetchBlock(hash, historicApi, options);
|
|
180
|
+
this.blockStore.set(cacheKey, block);
|
|
181
|
+
BlocksController.sanitizedSend(res, block);
|
|
182
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
183
|
+
const path = route.path;
|
|
184
|
+
if (res.locals.metrics) {
|
|
185
|
+
this.emitExtrinsicMetrics(block.extrinsics.length, 1, method, path, res);
|
|
186
|
+
}
|
|
142
187
|
};
|
|
143
188
|
/**
|
|
144
189
|
* Get a block by its hash or number identifier.
|
|
@@ -146,7 +191,7 @@ class BlocksController extends AbstractController_1.default {
|
|
|
146
191
|
* @param req Express Request
|
|
147
192
|
* @param res Express Response
|
|
148
193
|
*/
|
|
149
|
-
this.getBlockById = async ({ params: { number }, query: { eventDocs, extrinsicDocs, noFees, finalizedKey, decodedXcmMsgs, paraId } }, res) => {
|
|
194
|
+
this.getBlockById = async ({ params: { number }, query: { eventDocs, extrinsicDocs, noFees, finalizedKey, decodedXcmMsgs, paraId }, method, route, }, res) => {
|
|
150
195
|
const checkFinalized = (0, util_1.isHex)(number);
|
|
151
196
|
const hash = await this.getHashForBlock(number);
|
|
152
197
|
const eventDocsArg = eventDocs === 'true';
|
|
@@ -159,7 +204,7 @@ class BlocksController extends AbstractController_1.default {
|
|
|
159
204
|
omitFinalizedTag = true;
|
|
160
205
|
}
|
|
161
206
|
const decodedXcmMsgsArg = decodedXcmMsgs === 'true';
|
|
162
|
-
const paraIdArg = paraId
|
|
207
|
+
const paraIdArg = paraId ? this.parseNumberOrThrow(paraId, 'paraId must be an integer') : undefined;
|
|
163
208
|
const options = {
|
|
164
209
|
eventDocs: eventDocsArg,
|
|
165
210
|
extrinsicDocs: extrinsicDocsArg,
|
|
@@ -170,10 +215,30 @@ class BlocksController extends AbstractController_1.default {
|
|
|
170
215
|
checkDecodedXcm: decodedXcmMsgsArg,
|
|
171
216
|
paraId: paraIdArg,
|
|
172
217
|
};
|
|
218
|
+
// Create a key for the cache that is a concatenation of the block hash and all the query params included in the request
|
|
219
|
+
const cacheKey = hash.toString() +
|
|
220
|
+
Number(options.eventDocs) +
|
|
221
|
+
Number(options.extrinsicDocs) +
|
|
222
|
+
Number(options.checkFinalized) +
|
|
223
|
+
Number(options.noFees) +
|
|
224
|
+
Number(options.checkDecodedXcm) +
|
|
225
|
+
Number(options.paraId);
|
|
226
|
+
const isBlockCached = this.blockStore.get(cacheKey);
|
|
227
|
+
if (isBlockCached) {
|
|
228
|
+
BlocksController.sanitizedSend(res, isBlockCached);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
173
231
|
// HistoricApi to fetch any historic information that doesnt include the current runtime
|
|
174
232
|
const historicApi = await this.api.at(hash);
|
|
233
|
+
const block = await this.service.fetchBlock(hash, historicApi, options);
|
|
234
|
+
this.blockStore.set(cacheKey, block);
|
|
175
235
|
// We set the last param to true because we haven't queried the finalizedHead
|
|
176
|
-
BlocksController.sanitizedSend(res,
|
|
236
|
+
BlocksController.sanitizedSend(res, block);
|
|
237
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
238
|
+
const path = route.path;
|
|
239
|
+
if (res.locals.metrics) {
|
|
240
|
+
this.emitExtrinsicMetrics(block.extrinsics.length, 1, method, path, res);
|
|
241
|
+
}
|
|
177
242
|
};
|
|
178
243
|
/**
|
|
179
244
|
* Return the Header of the identified block.
|
|
@@ -202,7 +267,7 @@ class BlocksController extends AbstractController_1.default {
|
|
|
202
267
|
* @param req Express Request
|
|
203
268
|
* @param res Express Response
|
|
204
269
|
*/
|
|
205
|
-
this.getBlocks = async ({ query: { range, eventDocs, extrinsicDocs, noFees } }, res) => {
|
|
270
|
+
this.getBlocks = async ({ query: { range, eventDocs, extrinsicDocs, noFees }, method, route }, res) => {
|
|
206
271
|
if (!range)
|
|
207
272
|
throw new http_errors_1.BadRequest('range query parameter must be inputted.');
|
|
208
273
|
// We set a max range to 500 blocks.
|
|
@@ -236,13 +301,27 @@ class BlocksController extends AbstractController_1.default {
|
|
|
236
301
|
blocksPromise.push(result);
|
|
237
302
|
}
|
|
238
303
|
const blocks = (await Promise.all(blocksPromise));
|
|
304
|
+
blocksPromise.length = 0;
|
|
239
305
|
/**
|
|
240
306
|
* Sort blocks from least to greatest.
|
|
241
307
|
*/
|
|
242
308
|
blocks.sort((a, b) => a.number.toNumber() - b.number.toNumber());
|
|
243
309
|
BlocksController.sanitizedSend(res, blocks);
|
|
310
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
311
|
+
const path = route.path;
|
|
312
|
+
if (res.locals.metrics) {
|
|
313
|
+
const totExtrinsics = blocks.reduce((current, block) => {
|
|
314
|
+
const extrinsics = block.extrinsics;
|
|
315
|
+
if (Array.isArray(extrinsics)) {
|
|
316
|
+
return current + extrinsics.length;
|
|
317
|
+
}
|
|
318
|
+
return current;
|
|
319
|
+
}, 0);
|
|
320
|
+
this.emitExtrinsicMetrics(totExtrinsics, blocks.length, method, path, res);
|
|
321
|
+
}
|
|
244
322
|
};
|
|
245
323
|
this.initRoutes();
|
|
324
|
+
this.blockStore = options.blockStore;
|
|
246
325
|
}
|
|
247
326
|
initRoutes() {
|
|
248
327
|
this.router.use(this.path, (0, validate_1.validateBoolean)(['eventDocs', 'extrinsicDocs', 'finalized']));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlocksController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksController.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;AAGxE,yCAAuC;AAEvC,6CAAyC;
|
|
1
|
+
{"version":3,"file":"BlocksController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksController.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { BlocksService } from '../../services';
|
|
|
3
3
|
import type { ControllerOptions } from '../../types/chains-config';
|
|
4
4
|
import AbstractController from '../AbstractController';
|
|
5
5
|
export default class BlocksExtrinsicsController extends AbstractController<BlocksService> {
|
|
6
|
+
private blockStore;
|
|
6
7
|
constructor(api: ApiPromise, options: ControllerOptions);
|
|
7
8
|
protected initRoutes(): void;
|
|
8
9
|
/**
|
|
@@ -22,7 +22,7 @@ const services_1 = require("../../services");
|
|
|
22
22
|
const AbstractController_1 = __importDefault(require("../AbstractController"));
|
|
23
23
|
class BlocksExtrinsicsController extends AbstractController_1.default {
|
|
24
24
|
constructor(api, options) {
|
|
25
|
-
super(api, '/blocks/:blockId/extrinsics', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.
|
|
25
|
+
super(api, '/blocks/:blockId/extrinsics', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.hasQueryFeeApi));
|
|
26
26
|
/**
|
|
27
27
|
*
|
|
28
28
|
* @param _req Express Request
|
|
@@ -43,8 +43,18 @@ class BlocksExtrinsicsController extends AbstractController_1.default {
|
|
|
43
43
|
checkDecodedXcm: false,
|
|
44
44
|
paraId: undefined,
|
|
45
45
|
};
|
|
46
|
+
const cacheKey = hash.toString() +
|
|
47
|
+
Number(options.eventDocs) +
|
|
48
|
+
Number(options.extrinsicDocs) +
|
|
49
|
+
Number(options.checkFinalized) +
|
|
50
|
+
Number(options.noFees) +
|
|
51
|
+
Number(options.checkDecodedXcm);
|
|
52
|
+
const isBlockCached = this.blockStore.get(cacheKey);
|
|
46
53
|
const historicApi = await this.api.at(hash);
|
|
47
|
-
const block = await this.service.fetchBlock(hash, historicApi, options);
|
|
54
|
+
const block = isBlockCached ? isBlockCached : await this.service.fetchBlock(hash, historicApi, options);
|
|
55
|
+
if (!isBlockCached) {
|
|
56
|
+
this.blockStore.set(cacheKey, block);
|
|
57
|
+
}
|
|
48
58
|
/**
|
|
49
59
|
* Verify our param `extrinsicIndex` is an integer represented as a string
|
|
50
60
|
*/
|
|
@@ -57,6 +67,7 @@ class BlocksExtrinsicsController extends AbstractController_1.default {
|
|
|
57
67
|
BlocksExtrinsicsController.sanitizedSend(res, this.service.fetchExtrinsicByIndex(block, index));
|
|
58
68
|
};
|
|
59
69
|
this.initRoutes();
|
|
70
|
+
this.blockStore = options.blockStore;
|
|
60
71
|
}
|
|
61
72
|
initRoutes() {
|
|
62
73
|
this.safeMountAsyncGetHandlers([['/:extrinsicIndex', this.getExtrinsicByTimepoint]]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlocksExtrinsicsController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksExtrinsicsController.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;
|
|
1
|
+
{"version":3,"file":"BlocksExtrinsicsController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksExtrinsicsController.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,15 +22,24 @@ const services_1 = require("../../services");
|
|
|
22
22
|
const AbstractController_1 = __importDefault(require("../AbstractController"));
|
|
23
23
|
class BlocksRawExtrinsicsController extends AbstractController_1.default {
|
|
24
24
|
constructor(api, options) {
|
|
25
|
-
super(api, '/blocks/:blockId/extrinsics-raw', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.
|
|
25
|
+
super(api, '/blocks/:blockId/extrinsics-raw', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.hasQueryFeeApi));
|
|
26
26
|
/**
|
|
27
27
|
*
|
|
28
28
|
* @param _req Express Request
|
|
29
29
|
* @param res Express Response
|
|
30
30
|
*/
|
|
31
|
-
this.getBlockRawExtrinsics = async ({ params: { blockId } }, res) => {
|
|
31
|
+
this.getBlockRawExtrinsics = async ({ params: { blockId }, method, route }, res) => {
|
|
32
32
|
const hash = await this.getHashForBlock(blockId);
|
|
33
|
-
|
|
33
|
+
const rawBlock = await this.service.fetchBlockRaw(hash);
|
|
34
|
+
BlocksRawExtrinsicsController.sanitizedSend(res, rawBlock);
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
36
|
+
const path = route.path;
|
|
37
|
+
if (res.locals.metrics) {
|
|
38
|
+
const extrinsics_per_block_metrics = res.locals.metrics.registry['sas_extrinsics_per_block'];
|
|
39
|
+
extrinsics_per_block_metrics
|
|
40
|
+
.labels({ method: method, route: path, status_code: res.statusCode })
|
|
41
|
+
.observe(rawBlock.extrinsics.length);
|
|
42
|
+
}
|
|
34
43
|
};
|
|
35
44
|
this.initRoutes();
|
|
36
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlocksRawExtrinsicsController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksRawExtrinsicsController.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;AAKxE,6CAA+C;AAG/C,+EAAuD;AAEvD,MAAqB,6BAA8B,SAAQ,4BAAiC;IAC3F,YAAY,GAAe,EAAE,OAA0B;QACtD,KAAK,CACJ,GAAG,EACH,iCAAiC,EACjC,IAAI,wBAAa,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"BlocksRawExtrinsicsController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksRawExtrinsicsController.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;AAKxE,6CAA+C;AAG/C,+EAAuD;AAEvD,MAAqB,6BAA8B,SAAQ,4BAAiC;IAC3F,YAAY,GAAe,EAAE,OAA0B;QACtD,KAAK,CACJ,GAAG,EACH,iCAAiC,EACjC,IAAI,wBAAa,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC,CACzE,CAAC;QAQH;;;;WAIG;QACK,0BAAqB,GAA6C,KAAK,EAC9E,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EACtC,GAAG,EACa,EAAE;YAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACxD,6BAA6B,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAE3D,sEAAsE;YACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAc,CAAC;YAElC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE;gBACvB,MAAM,4BAA4B,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAqB,CAAC;gBACjH,4BAA4B;qBAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;qBACpE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aACtC;QACF,CAAC,CAAC;QA7BD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;CAyBD;AArCD,gDAqCC"}
|
package/build/src/logging/Log.js
CHANGED
|
@@ -14,9 +14,13 @@
|
|
|
14
14
|
//
|
|
15
15
|
// You should have received a copy of the GNU General Public License
|
|
16
16
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
17
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
21
|
exports.Log = void 0;
|
|
19
22
|
const winston_1 = require("winston");
|
|
23
|
+
const winston_loki_1 = __importDefault(require("winston-loki"));
|
|
20
24
|
const SidecarConfig_1 = require("../SidecarConfig");
|
|
21
25
|
const transports_1 = require("./transports");
|
|
22
26
|
/**
|
|
@@ -34,6 +38,13 @@ class Log {
|
|
|
34
38
|
if (SidecarConfig_1.SidecarConfig.config.LOG.WRITE) {
|
|
35
39
|
this._transports.push((0, transports_1.fileTransport)('logs.log'));
|
|
36
40
|
}
|
|
41
|
+
if (SidecarConfig_1.SidecarConfig.config.METRICS.ENABLED) {
|
|
42
|
+
this._transports.push(new winston_loki_1.default({
|
|
43
|
+
host: `http://${SidecarConfig_1.SidecarConfig.config.METRICS.LOKI_HOST}:${SidecarConfig_1.SidecarConfig.config.METRICS.LOKI_PORT}`,
|
|
44
|
+
useWinstonMetaAsLabels: true,
|
|
45
|
+
json: true,
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
37
48
|
this._logger = (0, winston_1.createLogger)({
|
|
38
49
|
transports: this._transports,
|
|
39
50
|
exitOnError: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Log.js","sourceRoot":"","sources":["../../../src/logging/Log.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE
|
|
1
|
+
{"version":3,"file":"Log.js","sourceRoot":"","sources":["../../../src/logging/Log.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;;AAExE,qCAA+C;AAE/C,gEAAyC;AAEzC,oDAAiD;AACjD,6CAA+D;AAE/D;;GAEG;AACH,MAAa,GAAG;IAGP,MAAM,CAAC,MAAM;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO,IAAI,CAAC,OAAO,CAAC;SACpB;QAED,IAAI,CAAC,WAAW,GAAG,CAAC,IAAA,6BAAgB,GAAE,CAAC,CAAC;QAExC;;WAEG;QACH,IAAI,6BAAa,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;YACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAA,0BAAa,EAAC,UAAU,CAAC,CAAC,CAAC;SACjD;QAED,IAAI,6BAAa,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE;YACzC,IAAI,CAAC,WAAW,CAAC,IAAI,CACpB,IAAI,sBAAa,CAAC;gBACjB,IAAI,EAAE,UAAU,6BAAa,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,6BAAa,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;gBAClG,sBAAsB,EAAE,IAAI;gBAC5B,IAAI,EAAE,IAAI;aACV,CAAC,CACF,CAAC;SACF;QAED,IAAI,CAAC,OAAO,GAAG,IAAA,sBAAY,EAAC;YAC3B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,WAAW,EAAE,KAAK;YAClB,iBAAiB,EAAE,IAAI,CAAC,WAAW;SACnC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM,KAAK,MAAM;QAChB,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;CACD;AA1CD,kBA0CC"}
|