@subsquid/batch-processor 1.0.0-portal-api.721f49 → 1.0.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/lib/database.d.ts +25 -8
- package/lib/database.d.ts.map +1 -1
- package/lib/run.d.ts +25 -11
- package/lib/run.d.ts.map +1 -1
- package/lib/run.js +183 -149
- package/lib/run.js.map +1 -1
- package/lib/util.d.ts +2 -2
- package/lib/util.d.ts.map +1 -1
- package/lib/util.js +1 -1
- package/lib/util.js.map +1 -1
- package/package.json +12 -9
- package/src/database.ts +28 -13
- package/src/find-rollback-index.test.ts +85 -0
- package/src/run.ts +219 -152
- package/src/test/processor.test.ts +651 -0
- package/src/util.ts +3 -3
- package/lib/metrics.d.ts +0 -21
- package/lib/metrics.d.ts.map +0 -1
- package/lib/metrics.js +0 -92
- package/lib/metrics.js.map +0 -1
- package/src/metrics.ts +0 -111
package/lib/metrics.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAKA,qBAAa,OAAO;IAChB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,aAAa,CAAkD;IAEvE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK3C,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAKpE,aAAa,CACT,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,qBAAqB,EAAE,MAAM,EAC7B,mBAAmB,EAAE,MAAM,GAC5B,IAAI;IAKP,cAAc,IAAI,MAAM;IAIxB,qBAAqB,IAAI,MAAM;IAI/B,YAAY,IAAI,MAAM;IAItB,iBAAiB,IAAI,MAAM;IAI3B,YAAY,IAAI,MAAM;IAItB,eAAe,IAAI,MAAM;IAIzB,mBAAmB,IAAI,MAAM;IAI7B,aAAa,IAAI,MAAM;IAQvB,OAAO,IAAI,IAAI;CA+BlB"}
|
package/lib/metrics.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Metrics = void 0;
|
|
4
|
-
const util_internal_counters_1 = require("@subsquid/util-internal-counters");
|
|
5
|
-
const prom_client_1 = require("prom-client");
|
|
6
|
-
const util_1 = require("./util");
|
|
7
|
-
class Metrics {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.chainHeight = -1;
|
|
10
|
-
this.lastBlock = -1;
|
|
11
|
-
this.mappingSpeed = new util_internal_counters_1.Speed({ windowSize: 5 });
|
|
12
|
-
this.mappingItemSpeed = new util_internal_counters_1.Speed({ windowSize: 5 });
|
|
13
|
-
this.blockProgress = new util_internal_counters_1.Progress({ initialValue: 0, windowSize: 20 });
|
|
14
|
-
}
|
|
15
|
-
setChainHeight(height) {
|
|
16
|
-
this.chainHeight = Math.max(height, this.lastBlock);
|
|
17
|
-
}
|
|
18
|
-
setLastProcessedBlock(height) {
|
|
19
|
-
this.lastBlock = height;
|
|
20
|
-
this.chainHeight = Math.max(this.chainHeight, this.lastBlock);
|
|
21
|
-
}
|
|
22
|
-
updateProgress(processed, left, time) {
|
|
23
|
-
this.blockProgress.setTargetValue(processed + left);
|
|
24
|
-
this.blockProgress.setCurrentValue(processed, time);
|
|
25
|
-
}
|
|
26
|
-
registerBatch(batchSize, batchItemSize, batchMappingStartTime, batchMappingEndTime) {
|
|
27
|
-
this.mappingSpeed.push(batchSize, batchMappingStartTime, batchMappingEndTime);
|
|
28
|
-
this.mappingItemSpeed.push(batchItemSize || 1, batchMappingStartTime, batchMappingEndTime);
|
|
29
|
-
}
|
|
30
|
-
getChainHeight() {
|
|
31
|
-
return this.chainHeight;
|
|
32
|
-
}
|
|
33
|
-
getLastProcessedBlock() {
|
|
34
|
-
return this.lastBlock;
|
|
35
|
-
}
|
|
36
|
-
getSyncSpeed() {
|
|
37
|
-
return this.blockProgress.speed();
|
|
38
|
-
}
|
|
39
|
-
getSyncEtaSeconds() {
|
|
40
|
-
return this.blockProgress.eta();
|
|
41
|
-
}
|
|
42
|
-
getSyncRatio() {
|
|
43
|
-
return this.blockProgress.ratio();
|
|
44
|
-
}
|
|
45
|
-
getMappingSpeed() {
|
|
46
|
-
return this.mappingSpeed.speed();
|
|
47
|
-
}
|
|
48
|
-
getMappingItemSpeed() {
|
|
49
|
-
return this.mappingItemSpeed.speed();
|
|
50
|
-
}
|
|
51
|
-
getStatusLine() {
|
|
52
|
-
return `${this.lastBlock} / ${this.chainHeight}, ` +
|
|
53
|
-
`rate: ${Math.round(this.getSyncSpeed())} blocks/sec, ` +
|
|
54
|
-
`mapping: ${Math.round(this.getMappingSpeed())} blocks/sec, ` +
|
|
55
|
-
`${Math.round(this.getMappingItemSpeed())} items/sec, ` +
|
|
56
|
-
`eta: ${(0, util_1.timeInterval)(this.getSyncEtaSeconds())}`;
|
|
57
|
-
}
|
|
58
|
-
install() {
|
|
59
|
-
new prom_client_1.Gauge({
|
|
60
|
-
name: 'sqd_processor_chain_height',
|
|
61
|
-
help: 'Chain height of the data source',
|
|
62
|
-
collect: collect(() => this.getChainHeight())
|
|
63
|
-
});
|
|
64
|
-
new prom_client_1.Gauge({
|
|
65
|
-
name: 'sqd_processor_last_block',
|
|
66
|
-
help: 'Last processed block',
|
|
67
|
-
collect: collect(() => this.getLastProcessedBlock())
|
|
68
|
-
});
|
|
69
|
-
new prom_client_1.Gauge({
|
|
70
|
-
name: 'sqd_processor_mapping_blocks_per_second',
|
|
71
|
-
help: 'Mapping performance',
|
|
72
|
-
collect: collect(() => this.getMappingSpeed())
|
|
73
|
-
});
|
|
74
|
-
new prom_client_1.Gauge({
|
|
75
|
-
name: 'sqd_processor_sync_eta_seconds',
|
|
76
|
-
help: 'Estimated time until all required blocks will be processed or until the chain height will be reached',
|
|
77
|
-
collect: collect(() => this.getSyncEtaSeconds())
|
|
78
|
-
});
|
|
79
|
-
new prom_client_1.Gauge({
|
|
80
|
-
name: 'sqd_processor_sync_ratio',
|
|
81
|
-
help: 'Percentage of processed blocks',
|
|
82
|
-
collect: collect(() => this.getSyncRatio())
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
exports.Metrics = Metrics;
|
|
87
|
-
function collect(fn) {
|
|
88
|
-
return function () {
|
|
89
|
-
this.set(fn());
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=metrics.js.map
|
package/lib/metrics.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":";;;AAAA,6EAAgE;AAChE,6CAAiC;AACjC,iCAAmC;AAGnC,MAAa,OAAO;IAApB;QACY,gBAAW,GAAG,CAAC,CAAC,CAAA;QAChB,cAAS,GAAG,CAAC,CAAC,CAAA;QACd,iBAAY,GAAG,IAAI,8BAAK,CAAC,EAAC,UAAU,EAAE,CAAC,EAAC,CAAC,CAAA;QACzC,qBAAgB,GAAG,IAAI,8BAAK,CAAC,EAAC,UAAU,EAAE,CAAC,EAAC,CAAC,CAAA;QAC7C,kBAAa,GAAG,IAAI,iCAAQ,CAAC,EAAC,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC,CAAC,CAAA;IA6F3E,CAAC;IA3FG,cAAc,CAAC,MAAc;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IACvD,CAAC;IAED,qBAAqB,CAAC,MAAc;QAChC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAA;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IACjE,CAAC;IAED,cAAc,CAAC,SAAiB,EAAE,IAAY,EAAE,IAAa;QACzD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;QACnD,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IACvD,CAAC;IAED,aAAa,CACT,SAAiB,EACjB,aAAqB,EACrB,qBAA6B,EAC7B,mBAA2B;QAE3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,EAAE,mBAAmB,CAAC,CAAA;QAC7E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE,qBAAqB,EAAE,mBAAmB,CAAC,CAAA;IAC9F,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,WAAW,CAAA;IAC3B,CAAC;IAED,qBAAqB;QACjB,OAAO,IAAI,CAAC,SAAS,CAAA;IACzB,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;IACrC,CAAC;IAED,iBAAiB;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAA;IACnC,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;IACrC,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;IACpC,CAAC;IAED,mBAAmB;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAA;IACxC,CAAC;IAED,aAAa;QACT,OAAO,GAAG,IAAI,CAAC,SAAS,MAAM,IAAI,CAAC,WAAW,IAAI;YAClD,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,eAAe;YACvD,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,eAAe;YAC7D,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,cAAc;YACvD,QAAQ,IAAA,mBAAY,EAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAA;IACpD,CAAC;IAED,OAAO;QACH,IAAI,mBAAK,CAAC;YACN,IAAI,EAAE,4BAA4B;YAClC,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;SAChD,CAAC,CAAA;QAEF,IAAI,mBAAK,CAAC;YACN,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;SACvD,CAAC,CAAA;QAEF,IAAI,mBAAK,CAAC;YACN,IAAI,EAAE,yCAAyC;YAC/C,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;SACjD,CAAC,CAAA;QAEF,IAAI,mBAAK,CAAC;YACN,IAAI,EAAE,gCAAgC;YACtC,IAAI,EAAE,sGAAsG;YAC5G,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAC,CAAA;QAEF,IAAI,mBAAK,CAAC;YACN,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,gCAAgC;YACtC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;SAC9C,CAAC,CAAA;IACN,CAAC;CACJ;AAlGD,0BAkGC;AAGD,SAAS,OAAO,CAAC,EAAgB;IAC7B,OAAO;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;IAClB,CAAC,CAAA;AACL,CAAC"}
|
package/src/metrics.ts
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import {Progress, Speed} from '@subsquid/util-internal-counters'
|
|
2
|
-
import {Gauge} from 'prom-client'
|
|
3
|
-
import {timeInterval} from './util'
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export class Metrics {
|
|
7
|
-
private chainHeight = -1
|
|
8
|
-
private lastBlock = -1
|
|
9
|
-
private mappingSpeed = new Speed({windowSize: 5})
|
|
10
|
-
private mappingItemSpeed = new Speed({windowSize: 5})
|
|
11
|
-
private blockProgress = new Progress({initialValue: 0, windowSize: 20})
|
|
12
|
-
|
|
13
|
-
setChainHeight(height: number): void {
|
|
14
|
-
this.chainHeight = Math.max(height, this.lastBlock)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
setLastProcessedBlock(height: number): void {
|
|
18
|
-
this.lastBlock = height
|
|
19
|
-
this.chainHeight = Math.max(this.chainHeight, this.lastBlock)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
updateProgress(processed: number, left: number, time?: bigint): void {
|
|
23
|
-
this.blockProgress.setTargetValue(processed + left)
|
|
24
|
-
this.blockProgress.setCurrentValue(processed, time)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
registerBatch(
|
|
28
|
-
batchSize: number,
|
|
29
|
-
batchItemSize: number,
|
|
30
|
-
batchMappingStartTime: bigint,
|
|
31
|
-
batchMappingEndTime: bigint,
|
|
32
|
-
): void {
|
|
33
|
-
this.mappingSpeed.push(batchSize, batchMappingStartTime, batchMappingEndTime)
|
|
34
|
-
this.mappingItemSpeed.push(batchItemSize || 1, batchMappingStartTime, batchMappingEndTime)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
getChainHeight(): number {
|
|
38
|
-
return this.chainHeight
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
getLastProcessedBlock(): number {
|
|
42
|
-
return this.lastBlock
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
getSyncSpeed(): number {
|
|
46
|
-
return this.blockProgress.speed()
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
getSyncEtaSeconds(): number {
|
|
50
|
-
return this.blockProgress.eta()
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
getSyncRatio(): number {
|
|
54
|
-
return this.blockProgress.ratio()
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
getMappingSpeed(): number {
|
|
58
|
-
return this.mappingSpeed.speed()
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
getMappingItemSpeed(): number {
|
|
62
|
-
return this.mappingItemSpeed.speed()
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
getStatusLine(): string {
|
|
66
|
-
return `${this.lastBlock} / ${this.chainHeight}, ` +
|
|
67
|
-
`rate: ${Math.round(this.getSyncSpeed())} blocks/sec, ` +
|
|
68
|
-
`mapping: ${Math.round(this.getMappingSpeed())} blocks/sec, ` +
|
|
69
|
-
`${Math.round(this.getMappingItemSpeed())} items/sec, ` +
|
|
70
|
-
`eta: ${timeInterval(this.getSyncEtaSeconds())}`
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
install(): void {
|
|
74
|
-
new Gauge({
|
|
75
|
-
name: 'sqd_processor_chain_height',
|
|
76
|
-
help: 'Chain height of the data source',
|
|
77
|
-
collect: collect(() => this.getChainHeight())
|
|
78
|
-
})
|
|
79
|
-
|
|
80
|
-
new Gauge({
|
|
81
|
-
name: 'sqd_processor_last_block',
|
|
82
|
-
help: 'Last processed block',
|
|
83
|
-
collect: collect(() => this.getLastProcessedBlock())
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
new Gauge({
|
|
87
|
-
name: 'sqd_processor_mapping_blocks_per_second',
|
|
88
|
-
help: 'Mapping performance',
|
|
89
|
-
collect: collect(() => this.getMappingSpeed())
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
new Gauge({
|
|
93
|
-
name: 'sqd_processor_sync_eta_seconds',
|
|
94
|
-
help: 'Estimated time until all required blocks will be processed or until the chain height will be reached',
|
|
95
|
-
collect: collect(() => this.getSyncEtaSeconds())
|
|
96
|
-
})
|
|
97
|
-
|
|
98
|
-
new Gauge({
|
|
99
|
-
name: 'sqd_processor_sync_ratio',
|
|
100
|
-
help: 'Percentage of processed blocks',
|
|
101
|
-
collect: collect(() => this.getSyncRatio())
|
|
102
|
-
})
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
function collect(fn: () => number) {
|
|
108
|
-
return function(this: Gauge<string>) {
|
|
109
|
-
this.set(fn())
|
|
110
|
-
}
|
|
111
|
-
}
|