@subsquid/batch-processor 0.2.0-portal-api.19316d → 0.2.0-portal-api.d5861e
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/run.d.ts.map +1 -1
- package/lib/run.js +5 -0
- package/lib/run.js.map +1 -1
- package/lib/template-registry.d.ts +4 -0
- package/lib/template-registry.d.ts.map +1 -1
- package/lib/template-registry.js +34 -1
- package/lib/template-registry.js.map +1 -1
- package/package.json +2 -2
- package/src/run.ts +6 -0
- package/src/template-registry.test.ts +180 -0
- package/src/template-registry.ts +44 -1
package/lib/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,QAAQ,EAMX,MAAM,YAAY,CAAA;AACnB,OAAO,EACH,UAAU,EAEV,QAAQ,EAIX,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAC,KAAK,eAAe,EAAmB,MAAM,qBAAqB,CAAA;AAG1E,OAAO,EAAC,gBAAgB,EAAgB,MAAM,yCAAyC,CAAA;AAGvF,OAAO,EAAC,gBAAgB,EAAC,CAAA;AACzB,YAAY,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAA;AAIxD,MAAM,WAAW,kBAAkB,CAAC,KAAK,EAAE,KAAK;IAC5C;;OAEG;IACH,KAAK,EAAE,KAAK,CAAA;IACZ;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;OAEG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,SAAS,EAAE,eAAe,CAAA;CAC7B;AAGD,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,QAAQ,CAAA;CACnB;AAGD,MAAM,WAAW,UAAU;IACvB,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAChC;AAGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,GAAG,CAAC,KAAK,SAAS,SAAS,EAAE,KAAK,EAC9C,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,EACtB,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG;IAAC,iBAAiB,EAAE,IAAI,CAAA;CAAC,EAC/C,WAAW,EAAE,CAAC,GAAG,EAAE,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACrE,IAAI,CAAC,EAAE,UAAU,GAClB,IAAI,CAAA;AACP,wBAAgB,GAAG,CAAC,KAAK,SAAS,SAAS,EAAE,KAAK,EAC9C,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,EACtB,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,EACnB,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACxF,IAAI,CAAC,EAAE,UAAU,GAClB,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,QAAQ,EAMX,MAAM,YAAY,CAAA;AACnB,OAAO,EACH,UAAU,EAEV,QAAQ,EAIX,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAC,KAAK,eAAe,EAAmB,MAAM,qBAAqB,CAAA;AAG1E,OAAO,EAAC,gBAAgB,EAAgB,MAAM,yCAAyC,CAAA;AAGvF,OAAO,EAAC,gBAAgB,EAAC,CAAA;AACzB,YAAY,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAA;AAIxD,MAAM,WAAW,kBAAkB,CAAC,KAAK,EAAE,KAAK;IAC5C;;OAEG;IACH,KAAK,EAAE,KAAK,CAAA;IACZ;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;OAEG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,SAAS,EAAE,eAAe,CAAA;CAC7B;AAGD,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,QAAQ,CAAA;CACnB;AAGD,MAAM,WAAW,UAAU;IACvB,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAChC;AAGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,GAAG,CAAC,KAAK,SAAS,SAAS,EAAE,KAAK,EAC9C,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,EACtB,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG;IAAC,iBAAiB,EAAE,IAAI,CAAA;CAAC,EAC/C,WAAW,EAAE,CAAC,GAAG,EAAE,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACrE,IAAI,CAAC,EAAE,UAAU,GAClB,IAAI,CAAA;AACP,wBAAgB,GAAG,CAAC,KAAK,SAAS,SAAS,EAAE,KAAK,EAC9C,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,EACtB,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,EACnB,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACxF,IAAI,CAAC,EAAE,UAAU,GAClB,IAAI,CAAA;AAsWP,qBAAa,uBAAwB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,yBAAyB,QAAO;IACzC,QAAQ,CAAC,IAAI,6BAA4B;CAC5C;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,uBAAuB,CAEtF"}
|
package/lib/run.js
CHANGED
|
@@ -64,6 +64,9 @@ class ProcessorState {
|
|
|
64
64
|
prune(blockNumber) {
|
|
65
65
|
this.templates.prune(blockNumber);
|
|
66
66
|
}
|
|
67
|
+
commitTemplates() {
|
|
68
|
+
this.templates.commit();
|
|
69
|
+
}
|
|
67
70
|
async transact(range, fn) {
|
|
68
71
|
return this.templates.transact(range, fn);
|
|
69
72
|
}
|
|
@@ -183,6 +186,7 @@ class Processor {
|
|
|
183
186
|
return;
|
|
184
187
|
return map(store, sliceBlocks, isOnTop);
|
|
185
188
|
});
|
|
189
|
+
this.state.commitTemplates();
|
|
186
190
|
let newFinalizedHead = finalizedHead ?? this.state.finalizedHead;
|
|
187
191
|
if (newFinalizedHead) {
|
|
188
192
|
this.state.prune(newFinalizedHead.number);
|
|
@@ -208,6 +212,7 @@ class Processor {
|
|
|
208
212
|
nextHead: toHashAndHeight(nextHead),
|
|
209
213
|
isOnTop,
|
|
210
214
|
}, (store) => map(store, blocks, isOnTop));
|
|
215
|
+
this.state.commitTemplates();
|
|
211
216
|
this.state.prune(nextHead.number);
|
|
212
217
|
this.state.finalizedHead = nextHead;
|
|
213
218
|
this.state.unfinalizedHeads = [];
|
package/lib/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export declare class TemplateRegistry implements ITemplateRegistry {
|
|
|
11
11
|
private baseMutations;
|
|
12
12
|
private undoLog;
|
|
13
13
|
private pendingTemplates;
|
|
14
|
+
private committedIndex;
|
|
14
15
|
/**
|
|
15
16
|
* Rebuild state from finalized mutations and optionally replay hot block
|
|
16
17
|
* mutations to reconstruct the undo log.
|
|
@@ -22,6 +23,7 @@ export declare class TemplateRegistry implements ITemplateRegistry {
|
|
|
22
23
|
blockNumber: number;
|
|
23
24
|
templates: TemplateMutation[];
|
|
24
25
|
}[]): void;
|
|
26
|
+
commit(): void;
|
|
25
27
|
get(key: string): TemplateValue[];
|
|
26
28
|
has(key: string, value: string, block: number): boolean;
|
|
27
29
|
apply(mutation: TemplateMutation): boolean;
|
|
@@ -31,6 +33,8 @@ export declare class TemplateRegistry implements ITemplateRegistry {
|
|
|
31
33
|
}>;
|
|
32
34
|
rollbackTo(blockNumber: number): void;
|
|
33
35
|
prune(blockNumber: number): void;
|
|
36
|
+
private getUncommittedMutationsInRange;
|
|
37
|
+
private mergeData;
|
|
34
38
|
private applyToState;
|
|
35
39
|
private rebuild;
|
|
36
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-registry.d.ts","sourceRoot":"","sources":["../src/template-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,IAAI,iBAAiB,EAAE,aAAa,EAAC,MAAM,qCAAqC,CAAA;AAC7G,OAAO,KAAK,EAAC,WAAW,EAAQ,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAC,gBAAgB,EAAC,MAAM,YAAY,CAAA;AAE3C,MAAM,WAAW,eAAe;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1D,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAA;CAChE;AAgCD,qBAAa,gBAAiB,YAAW,iBAAiB;IACtD,OAAO,CAAC,KAAK,CAA0C;IACvD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,OAAO,CAAkE;IACjF,OAAO,CAAC,gBAAgB,CAAyB;
|
|
1
|
+
{"version":3,"file":"template-registry.d.ts","sourceRoot":"","sources":["../src/template-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,IAAI,iBAAiB,EAAE,aAAa,EAAC,MAAM,qCAAqC,CAAA;AAC7G,OAAO,KAAK,EAAC,WAAW,EAAQ,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAC,gBAAgB,EAAC,MAAM,YAAY,CAAA;AAE3C,MAAM,WAAW,eAAe;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1D,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAA;CAChE;AAgCD,qBAAa,gBAAiB,YAAW,iBAAiB;IACtD,OAAO,CAAC,KAAK,CAA0C;IACvD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,OAAO,CAAkE;IACjF,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,cAAc,CAAY;IAElC;;;;;;OAMG;IACH,IAAI,CACA,SAAS,EAAE,gBAAgB,EAAE,EAC7B,SAAS,CAAC,EAAE;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,gBAAgB,EAAE,CAAA;KAAC,EAAE,GACnE,IAAI;IAQP,MAAM,IAAI,IAAI;IAId,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE;IAYjC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAavD,KAAK,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAQpC,QAAQ,CACV,KAAK,EAAE,WAAW,EAClB,EAAE,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC;QAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAC,CAAC;IAqBxD,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IASrC,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAShC,OAAO,CAAC,8BAA8B;IAYtC,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,YAAY;IAqCpB,OAAO,CAAC,OAAO;CAelB"}
|
package/lib/template-registry.js
CHANGED
|
@@ -31,6 +31,7 @@ class TemplateRegistry {
|
|
|
31
31
|
this.baseMutations = [];
|
|
32
32
|
this.undoLog = [];
|
|
33
33
|
this.pendingTemplates = [];
|
|
34
|
+
this.committedIndex = 0;
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
36
37
|
* Rebuild state from finalized mutations and optionally replay hot block
|
|
@@ -42,9 +43,13 @@ class TemplateRegistry {
|
|
|
42
43
|
init(mutations, hotBlocks) {
|
|
43
44
|
this.baseMutations = mutations;
|
|
44
45
|
this.undoLog = hotBlocks ?? [];
|
|
46
|
+
this.committedIndex = this.undoLog.length;
|
|
45
47
|
this.pendingTemplates = [];
|
|
46
48
|
this.rebuild();
|
|
47
49
|
}
|
|
50
|
+
commit() {
|
|
51
|
+
this.committedIndex = this.undoLog.length;
|
|
52
|
+
}
|
|
48
53
|
get(key) {
|
|
49
54
|
let m = this.byKey.get(key);
|
|
50
55
|
if (m == null)
|
|
@@ -79,6 +84,7 @@ class TemplateRegistry {
|
|
|
79
84
|
return changed;
|
|
80
85
|
}
|
|
81
86
|
async transact(range, fn) {
|
|
87
|
+
let previousUncommitted = this.getUncommittedMutationsInRange(range);
|
|
82
88
|
let templates = new HandlerTemplates(range, this);
|
|
83
89
|
try {
|
|
84
90
|
await fn(templates);
|
|
@@ -93,13 +99,15 @@ class TemplateRegistry {
|
|
|
93
99
|
this.undoLog.push({ blockNumber: range.to, templates: this.pendingTemplates });
|
|
94
100
|
}
|
|
95
101
|
this.pendingTemplates = [];
|
|
96
|
-
|
|
102
|
+
let data = this.mergeData(templates.data, previousUncommitted);
|
|
103
|
+
return { data, changed };
|
|
97
104
|
}
|
|
98
105
|
rollbackTo(blockNumber) {
|
|
99
106
|
let splitIdx = upperBound(this.undoLog, blockNumber);
|
|
100
107
|
if (splitIdx >= this.undoLog.length)
|
|
101
108
|
return;
|
|
102
109
|
this.undoLog.length = splitIdx;
|
|
110
|
+
this.committedIndex = Math.min(this.committedIndex, splitIdx);
|
|
103
111
|
this.pendingTemplates = [];
|
|
104
112
|
this.rebuild();
|
|
105
113
|
}
|
|
@@ -109,6 +117,31 @@ class TemplateRegistry {
|
|
|
109
117
|
this.baseMutations.push(...this.undoLog[i].templates);
|
|
110
118
|
}
|
|
111
119
|
this.undoLog = this.undoLog.slice(splitIdx);
|
|
120
|
+
this.committedIndex = Math.max(0, this.committedIndex - splitIdx);
|
|
121
|
+
}
|
|
122
|
+
getUncommittedMutationsInRange(range) {
|
|
123
|
+
let result = [];
|
|
124
|
+
for (let i = this.committedIndex; i < this.undoLog.length; i++) {
|
|
125
|
+
for (let m of this.undoLog[i].templates) {
|
|
126
|
+
if (m.blockNumber >= range.from && m.blockNumber <= range.to) {
|
|
127
|
+
result.push(m);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
mergeData(handlerData, previousUncommitted) {
|
|
134
|
+
if (previousUncommitted.length === 0)
|
|
135
|
+
return handlerData;
|
|
136
|
+
let result = [...previousUncommitted];
|
|
137
|
+
for (let m of handlerData) {
|
|
138
|
+
let isDuplicate = previousUncommitted.some(p => p.type === m.type && p.key === m.key &&
|
|
139
|
+
p.value === m.value && p.blockNumber === m.blockNumber);
|
|
140
|
+
if (!isDuplicate) {
|
|
141
|
+
result.push(m);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return result;
|
|
112
145
|
}
|
|
113
146
|
applyToState({ type, key, value, blockNumber }) {
|
|
114
147
|
if (type === 'add') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-registry.js","sourceRoot":"","sources":["../src/template-registry.ts"],"names":[],"mappings":";;;AAUA,MAAM,gBAAgB;IAGlB,YACqB,KAAkB,EAClB,QAA0B;QAD1B,UAAK,GAAL,KAAK,CAAa;QAClB,aAAQ,GAAR,QAAQ,CAAkB;QAJtC,SAAI,GAAuB,EAAE,CAAA;IAKnC,CAAC;IAEJ,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,WAAmB;QAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,KAAa,EAAE,WAAmB;QAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IAClD,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,WAAmB;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IACrD,CAAC;IAEO,MAAM,CAAC,IAA8B,EAAE,GAAW,EAAE,KAAa,EAAE,WAAmB;QAC1F,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,UAAU,CAAC,eAAe,WAAW,0BAA0B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAC/F,CAAC;QACD,IAAI,QAAQ,GAAqB,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAC,CAAA;QAChE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC5B,CAAC;CACJ;AAED,MAAa,gBAAgB;IAA7B;QACY,UAAK,GAAG,IAAI,GAAG,EAAgC,CAAA;QAC/C,kBAAa,GAAuB,EAAE,CAAA;QACtC,YAAO,GAAgE,EAAE,CAAA;QACzE,qBAAgB,GAAuB,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"template-registry.js","sourceRoot":"","sources":["../src/template-registry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@subsquid/batch-processor",
|
|
3
|
-
"version": "0.2.0-portal-api.
|
|
3
|
+
"version": "0.2.0-portal-api.d5861e",
|
|
4
4
|
"description": "ETL processor",
|
|
5
5
|
"license": "GPL-3.0-or-later",
|
|
6
6
|
"repository": "git@github.com:subsquid/squid-sdk.git",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"@subsquid/util-internal-counters": "^1.3.2",
|
|
21
21
|
"@subsquid/util-internal-prometheus-server": "^1.3.0",
|
|
22
22
|
"@subsquid/util-internal-range": "^0.3.0",
|
|
23
|
-
"@subsquid/util-internal-data-source": "0.0.1-portal-api.
|
|
23
|
+
"@subsquid/util-internal-data-source": "0.0.1-portal-api.d5861e"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@types/mocha": "^10.0.7",
|
package/src/run.ts
CHANGED
|
@@ -149,6 +149,10 @@ class ProcessorState implements ITemplateRegistry {
|
|
|
149
149
|
this.templates.prune(blockNumber)
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
+
commitTemplates(): void {
|
|
153
|
+
this.templates.commit()
|
|
154
|
+
}
|
|
155
|
+
|
|
152
156
|
async transact(
|
|
153
157
|
range: FiniteRange,
|
|
154
158
|
fn: (templates: TemplateManager) => Promise<void>,
|
|
@@ -310,6 +314,7 @@ class Processor<B extends BlockBase, S> {
|
|
|
310
314
|
return map(store, sliceBlocks, isOnTop)
|
|
311
315
|
}
|
|
312
316
|
)
|
|
317
|
+
this.state.commitTemplates()
|
|
313
318
|
|
|
314
319
|
let newFinalizedHead = finalizedHead ?? this.state.finalizedHead
|
|
315
320
|
if (newFinalizedHead) {
|
|
@@ -339,6 +344,7 @@ class Processor<B extends BlockBase, S> {
|
|
|
339
344
|
},
|
|
340
345
|
(store) => map(store, blocks, isOnTop)
|
|
341
346
|
)
|
|
347
|
+
this.state.commitTemplates()
|
|
342
348
|
|
|
343
349
|
this.state.prune(nextHead.number)
|
|
344
350
|
this.state.finalizedHead = nextHead
|
|
@@ -170,6 +170,7 @@ describe('TemplateRegistry', function () {
|
|
|
170
170
|
await reg.transact(range, async (t) => {
|
|
171
171
|
t.add('log', '0xabc', 100)
|
|
172
172
|
})
|
|
173
|
+
reg.commit()
|
|
173
174
|
let result = await reg.transact(range, async () => {})
|
|
174
175
|
assert.strictEqual(result.changed, false)
|
|
175
176
|
assert.deepStrictEqual(result.data, [])
|
|
@@ -648,4 +649,183 @@ describe('TemplateRegistry', function () {
|
|
|
648
649
|
])
|
|
649
650
|
})
|
|
650
651
|
})
|
|
652
|
+
|
|
653
|
+
describe('two-pass retry (uncommitted mutations)', function () {
|
|
654
|
+
it('returns uncommitted mutations when handler produces no new changes', async function () {
|
|
655
|
+
let reg = new TemplateRegistry()
|
|
656
|
+
let range = {from: 0, to: 200}
|
|
657
|
+
|
|
658
|
+
let r1 = await reg.transact(range, async (t) => {
|
|
659
|
+
t.add('log', '0xabc', 100)
|
|
660
|
+
})
|
|
661
|
+
assert.strictEqual(r1.changed, true)
|
|
662
|
+
|
|
663
|
+
let r2 = await reg.transact(range, async () => {})
|
|
664
|
+
assert.strictEqual(r2.changed, false)
|
|
665
|
+
assert.deepStrictEqual(r2.data, [
|
|
666
|
+
{type: 'add', key: 'log', value: '0xabc', blockNumber: 100},
|
|
667
|
+
])
|
|
668
|
+
})
|
|
669
|
+
|
|
670
|
+
it('returns uncommitted mutations when handler skips add due to has() guard', async function () {
|
|
671
|
+
let reg = new TemplateRegistry()
|
|
672
|
+
let range = {from: 0, to: 200}
|
|
673
|
+
|
|
674
|
+
await reg.transact(range, async (t) => {
|
|
675
|
+
t.add('factory', '0xabc', 100)
|
|
676
|
+
})
|
|
677
|
+
|
|
678
|
+
let r2 = await reg.transact(range, async (t) => {
|
|
679
|
+
if (!t.has('factory', '0xabc', 100)) {
|
|
680
|
+
t.add('factory', '0xabc', 100)
|
|
681
|
+
}
|
|
682
|
+
})
|
|
683
|
+
assert.strictEqual(r2.changed, false)
|
|
684
|
+
assert.deepStrictEqual(r2.data, [
|
|
685
|
+
{type: 'add', key: 'factory', value: '0xabc', blockNumber: 100},
|
|
686
|
+
])
|
|
687
|
+
})
|
|
688
|
+
|
|
689
|
+
it('merges uncommitted mutations with new handler mutations', async function () {
|
|
690
|
+
let reg = new TemplateRegistry()
|
|
691
|
+
let range = {from: 0, to: 300}
|
|
692
|
+
|
|
693
|
+
await reg.transact(range, async (t) => {
|
|
694
|
+
t.add('factory', '0xabc', 100)
|
|
695
|
+
})
|
|
696
|
+
|
|
697
|
+
let r2 = await reg.transact(range, async (t) => {
|
|
698
|
+
if (!t.has('factory', '0xabc', 100)) {
|
|
699
|
+
t.add('factory', '0xabc', 100)
|
|
700
|
+
}
|
|
701
|
+
t.add('pool', '0xdef', 200)
|
|
702
|
+
})
|
|
703
|
+
assert.strictEqual(r2.changed, true)
|
|
704
|
+
assert.deepStrictEqual(r2.data, [
|
|
705
|
+
{type: 'add', key: 'factory', value: '0xabc', blockNumber: 100},
|
|
706
|
+
{type: 'add', key: 'pool', value: '0xdef', blockNumber: 200},
|
|
707
|
+
])
|
|
708
|
+
})
|
|
709
|
+
|
|
710
|
+
it('handles three-pass retry with cascading template discovery', async function () {
|
|
711
|
+
let reg = new TemplateRegistry()
|
|
712
|
+
let range = {from: 0, to: 300}
|
|
713
|
+
|
|
714
|
+
await reg.transact(range, async (t) => {
|
|
715
|
+
t.add('factory', '0xabc', 100)
|
|
716
|
+
})
|
|
717
|
+
|
|
718
|
+
await reg.transact(range, async (t) => {
|
|
719
|
+
if (!t.has('factory', '0xabc', 100)) {
|
|
720
|
+
t.add('factory', '0xabc', 100)
|
|
721
|
+
}
|
|
722
|
+
t.add('pool', '0xdef', 200)
|
|
723
|
+
})
|
|
724
|
+
|
|
725
|
+
let r3 = await reg.transact(range, async (t) => {
|
|
726
|
+
if (!t.has('factory', '0xabc', 100)) {
|
|
727
|
+
t.add('factory', '0xabc', 100)
|
|
728
|
+
}
|
|
729
|
+
if (!t.has('pool', '0xdef', 200)) {
|
|
730
|
+
t.add('pool', '0xdef', 200)
|
|
731
|
+
}
|
|
732
|
+
})
|
|
733
|
+
assert.strictEqual(r3.changed, false)
|
|
734
|
+
assert.deepStrictEqual(r3.data, [
|
|
735
|
+
{type: 'add', key: 'factory', value: '0xabc', blockNumber: 100},
|
|
736
|
+
{type: 'add', key: 'pool', value: '0xdef', blockNumber: 200},
|
|
737
|
+
])
|
|
738
|
+
})
|
|
739
|
+
|
|
740
|
+
it('commit() clears uncommitted status', async function () {
|
|
741
|
+
let reg = new TemplateRegistry()
|
|
742
|
+
let range = {from: 0, to: 200}
|
|
743
|
+
|
|
744
|
+
await reg.transact(range, async (t) => {
|
|
745
|
+
t.add('log', '0xabc', 100)
|
|
746
|
+
})
|
|
747
|
+
reg.commit()
|
|
748
|
+
|
|
749
|
+
let r2 = await reg.transact(range, async () => {})
|
|
750
|
+
assert.strictEqual(r2.changed, false)
|
|
751
|
+
assert.deepStrictEqual(r2.data, [])
|
|
752
|
+
})
|
|
753
|
+
|
|
754
|
+
it('uncommitted mutations are filtered by range', async function () {
|
|
755
|
+
let reg = new TemplateRegistry()
|
|
756
|
+
|
|
757
|
+
await reg.transact({from: 0, to: 200}, async (t) => {
|
|
758
|
+
t.add('factory', '0xabc', 100)
|
|
759
|
+
t.add('pool', '0xdef', 200)
|
|
760
|
+
})
|
|
761
|
+
|
|
762
|
+
let r2 = await reg.transact({from: 0, to: 150}, async () => {})
|
|
763
|
+
assert.strictEqual(r2.changed, false)
|
|
764
|
+
assert.deepStrictEqual(r2.data, [
|
|
765
|
+
{type: 'add', key: 'factory', value: '0xabc', blockNumber: 100},
|
|
766
|
+
])
|
|
767
|
+
})
|
|
768
|
+
|
|
769
|
+
it('uncommitted mutations survive rollbackTo within committed range', async function () {
|
|
770
|
+
let reg = new TemplateRegistry()
|
|
771
|
+
|
|
772
|
+
await reg.transact({from: 0, to: 100}, async (t) => {
|
|
773
|
+
t.add('log', '0xabc', 50)
|
|
774
|
+
})
|
|
775
|
+
reg.commit()
|
|
776
|
+
|
|
777
|
+
await reg.transact({from: 101, to: 200}, async (t) => {
|
|
778
|
+
t.add('log', '0xdef', 150)
|
|
779
|
+
})
|
|
780
|
+
|
|
781
|
+
reg.rollbackTo(100)
|
|
782
|
+
|
|
783
|
+
let result = await reg.transact({from: 101, to: 200}, async (t) => {
|
|
784
|
+
t.add('log', '0xdef', 150)
|
|
785
|
+
})
|
|
786
|
+
assert.strictEqual(result.changed, true)
|
|
787
|
+
assert.deepStrictEqual(values(reg, 'log'), [
|
|
788
|
+
{value: '0xabc', from: 50, to: undefined},
|
|
789
|
+
{value: '0xdef', from: 150, to: undefined},
|
|
790
|
+
])
|
|
791
|
+
})
|
|
792
|
+
|
|
793
|
+
it('prune adjusts committedIndex correctly', async function () {
|
|
794
|
+
let reg = new TemplateRegistry()
|
|
795
|
+
|
|
796
|
+
await reg.transact({from: 0, to: 100}, async (t) => {
|
|
797
|
+
t.add('log', '0xabc', 50)
|
|
798
|
+
})
|
|
799
|
+
reg.commit()
|
|
800
|
+
|
|
801
|
+
await reg.transact({from: 101, to: 200}, async (t) => {
|
|
802
|
+
t.add('log', '0xdef', 150)
|
|
803
|
+
})
|
|
804
|
+
|
|
805
|
+
reg.prune(100)
|
|
806
|
+
|
|
807
|
+
let r = await reg.transact({from: 101, to: 200}, async () => {})
|
|
808
|
+
assert.strictEqual(r.changed, false)
|
|
809
|
+
assert.deepStrictEqual(r.data, [
|
|
810
|
+
{type: 'add', key: 'log', value: '0xdef', blockNumber: 150},
|
|
811
|
+
])
|
|
812
|
+
})
|
|
813
|
+
|
|
814
|
+
it('deduplicates handler data against uncommitted mutations', async function () {
|
|
815
|
+
let reg = new TemplateRegistry()
|
|
816
|
+
let range = {from: 0, to: 200}
|
|
817
|
+
|
|
818
|
+
await reg.transact(range, async (t) => {
|
|
819
|
+
t.add('log', '0xabc', 100)
|
|
820
|
+
})
|
|
821
|
+
|
|
822
|
+
let r2 = await reg.transact(range, async (t) => {
|
|
823
|
+
t.add('log', '0xabc', 100)
|
|
824
|
+
})
|
|
825
|
+
assert.strictEqual(r2.changed, false)
|
|
826
|
+
assert.deepStrictEqual(r2.data, [
|
|
827
|
+
{type: 'add', key: 'log', value: '0xabc', blockNumber: 100},
|
|
828
|
+
])
|
|
829
|
+
})
|
|
830
|
+
})
|
|
651
831
|
})
|
package/src/template-registry.ts
CHANGED
|
@@ -43,6 +43,7 @@ export class TemplateRegistry implements ITemplateRegistry {
|
|
|
43
43
|
private baseMutations: TemplateMutation[] = []
|
|
44
44
|
private undoLog: Array<{blockNumber: number, templates: TemplateMutation[]}> = []
|
|
45
45
|
private pendingTemplates: TemplateMutation[] = []
|
|
46
|
+
private committedIndex: number = 0
|
|
46
47
|
|
|
47
48
|
/**
|
|
48
49
|
* Rebuild state from finalized mutations and optionally replay hot block
|
|
@@ -57,10 +58,15 @@ export class TemplateRegistry implements ITemplateRegistry {
|
|
|
57
58
|
): void {
|
|
58
59
|
this.baseMutations = mutations
|
|
59
60
|
this.undoLog = hotBlocks ?? []
|
|
61
|
+
this.committedIndex = this.undoLog.length
|
|
60
62
|
this.pendingTemplates = []
|
|
61
63
|
this.rebuild()
|
|
62
64
|
}
|
|
63
65
|
|
|
66
|
+
commit(): void {
|
|
67
|
+
this.committedIndex = this.undoLog.length
|
|
68
|
+
}
|
|
69
|
+
|
|
64
70
|
get(key: string): TemplateValue[] {
|
|
65
71
|
let m = this.byKey.get(key)
|
|
66
72
|
if (m == null) return []
|
|
@@ -98,6 +104,8 @@ export class TemplateRegistry implements ITemplateRegistry {
|
|
|
98
104
|
range: FiniteRange,
|
|
99
105
|
fn: (templates: TemplateManager) => Promise<void>,
|
|
100
106
|
): Promise<{data: TemplateMutation[]; changed: boolean}> {
|
|
107
|
+
let previousUncommitted = this.getUncommittedMutationsInRange(range)
|
|
108
|
+
|
|
101
109
|
let templates = new HandlerTemplates(range, this)
|
|
102
110
|
try {
|
|
103
111
|
await fn(templates)
|
|
@@ -111,13 +119,16 @@ export class TemplateRegistry implements ITemplateRegistry {
|
|
|
111
119
|
this.undoLog.push({blockNumber: range.to, templates: this.pendingTemplates})
|
|
112
120
|
}
|
|
113
121
|
this.pendingTemplates = []
|
|
114
|
-
|
|
122
|
+
|
|
123
|
+
let data = this.mergeData(templates.data, previousUncommitted)
|
|
124
|
+
return {data, changed}
|
|
115
125
|
}
|
|
116
126
|
|
|
117
127
|
rollbackTo(blockNumber: number): void {
|
|
118
128
|
let splitIdx = upperBound(this.undoLog, blockNumber)
|
|
119
129
|
if (splitIdx >= this.undoLog.length) return
|
|
120
130
|
this.undoLog.length = splitIdx
|
|
131
|
+
this.committedIndex = Math.min(this.committedIndex, splitIdx)
|
|
121
132
|
this.pendingTemplates = []
|
|
122
133
|
this.rebuild()
|
|
123
134
|
}
|
|
@@ -128,6 +139,38 @@ export class TemplateRegistry implements ITemplateRegistry {
|
|
|
128
139
|
this.baseMutations.push(...this.undoLog[i].templates)
|
|
129
140
|
}
|
|
130
141
|
this.undoLog = this.undoLog.slice(splitIdx)
|
|
142
|
+
this.committedIndex = Math.max(0, this.committedIndex - splitIdx)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
private getUncommittedMutationsInRange(range: FiniteRange): TemplateMutation[] {
|
|
146
|
+
let result: TemplateMutation[] = []
|
|
147
|
+
for (let i = this.committedIndex; i < this.undoLog.length; i++) {
|
|
148
|
+
for (let m of this.undoLog[i].templates) {
|
|
149
|
+
if (m.blockNumber >= range.from && m.blockNumber <= range.to) {
|
|
150
|
+
result.push(m)
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return result
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
private mergeData(
|
|
158
|
+
handlerData: TemplateMutation[],
|
|
159
|
+
previousUncommitted: TemplateMutation[]
|
|
160
|
+
): TemplateMutation[] {
|
|
161
|
+
if (previousUncommitted.length === 0) return handlerData
|
|
162
|
+
|
|
163
|
+
let result = [...previousUncommitted]
|
|
164
|
+
for (let m of handlerData) {
|
|
165
|
+
let isDuplicate = previousUncommitted.some(p =>
|
|
166
|
+
p.type === m.type && p.key === m.key &&
|
|
167
|
+
p.value === m.value && p.blockNumber === m.blockNumber
|
|
168
|
+
)
|
|
169
|
+
if (!isDuplicate) {
|
|
170
|
+
result.push(m)
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return result
|
|
131
174
|
}
|
|
132
175
|
|
|
133
176
|
private applyToState({type, key, value, blockNumber}: TemplateMutation): boolean {
|