@belopash/typeorm-store 2.0.0-rc.6 → 2.0.0-rc.8
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.map +1 -1
- package/lib/database.js +15 -9
- package/lib/database.js.map +1 -1
- package/lib/utils/cacheMap.d.ts +7 -2
- package/lib/utils/cacheMap.d.ts.map +1 -1
- package/lib/utils/cacheMap.js +22 -5
- package/lib/utils/cacheMap.js.map +1 -1
- package/package.json +2 -2
- package/src/database.ts +20 -14
- package/src/utils/cacheMap.ts +23 -5
package/lib/database.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AACA,OAAO,EACH,sBAAsB,IAAI,uBAAuB,EACjD,cAAc,EACd,sBAAsB,EACzB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAC,aAAa,EAAE,WAAW,EAAE,aAAa,EAAY,SAAS,EAAC,MAAM,wCAAwC,CAAA;AACrH,OAAO,EAAC,gBAAgB,EAA0B,MAAM,uCAAuC,CAAA;AAG/F,OAAO,EAAC,UAAU,EAAgB,MAAM,SAAS,CAAA;AACjD,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAA;AAGjD,OAAO,EAAC,sBAAsB,EAAE,gBAAgB,EAAC,CAAA;AAEjD,OAAO,EAAC,cAAc,EAAC,CAAA;AAEvB,MAAM,WAAW,sBAAuB,SAAQ,uBAAuB;IACnE;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;IAEjC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,QAAA,MAAM,kBAAkB,eAAyB,CAAA;AAEjD,qBAAa,eAAe;IACxB,SAAS,CAAC,YAAY,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,cAAc,EAAE,cAAc,CAAA;IACxC,SAAS,CAAC,uBAAuB,EAAE,OAAO,CAAA;IAC1C,SAAS,CAAC,aAAa,EAAE,OAAO,CAAA;IAChC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAA;IAChC,SAAS,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG;QACzB,CAAC,kBAAkB,CAAC,CAAC,EAAE,YAAY,CAAA;KACtC,CAAA;IACD,SAAS,CAAC,UAAU,EAAE,MAAM,CAAA;IAE5B,SAAgB,iBAAiB,EAAE,OAAO,CAAA;IAC1C,SAAgB,iBAAiB,EAAG,IAAI,CAAS;gBAErC,OAAO,CAAC,EAAE,sBAAsB;IAUtC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;cAcvB,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC;IAMrD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAInB,eAAe;YAqEf,QAAQ;IAetB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxG,WAAW,CACP,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAC1D,OAAO,CAAC,IAAI,CAAC;IAQhB,YAAY,CACR,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,GACjG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AACA,OAAO,EACH,sBAAsB,IAAI,uBAAuB,EACjD,cAAc,EACd,sBAAsB,EACzB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAC,aAAa,EAAE,WAAW,EAAE,aAAa,EAAY,SAAS,EAAC,MAAM,wCAAwC,CAAA;AACrH,OAAO,EAAC,gBAAgB,EAA0B,MAAM,uCAAuC,CAAA;AAG/F,OAAO,EAAC,UAAU,EAAgB,MAAM,SAAS,CAAA;AACjD,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAA;AAGjD,OAAO,EAAC,sBAAsB,EAAE,gBAAgB,EAAC,CAAA;AAEjD,OAAO,EAAC,cAAc,EAAC,CAAA;AAEvB,MAAM,WAAW,sBAAuB,SAAQ,uBAAuB;IACnE;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;IAEjC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,QAAA,MAAM,kBAAkB,eAAyB,CAAA;AAEjD,qBAAa,eAAe;IACxB,SAAS,CAAC,YAAY,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,cAAc,EAAE,cAAc,CAAA;IACxC,SAAS,CAAC,uBAAuB,EAAE,OAAO,CAAA;IAC1C,SAAS,CAAC,aAAa,EAAE,OAAO,CAAA;IAChC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAA;IAChC,SAAS,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG;QACzB,CAAC,kBAAkB,CAAC,CAAC,EAAE,YAAY,CAAA;KACtC,CAAA;IACD,SAAS,CAAC,UAAU,EAAE,MAAM,CAAA;IAE5B,SAAgB,iBAAiB,EAAE,OAAO,CAAA;IAC1C,SAAgB,iBAAiB,EAAG,IAAI,CAAS;gBAErC,OAAO,CAAC,EAAE,sBAAsB;IAUtC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;cAcvB,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC;IAMrD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAInB,eAAe;YAqEf,QAAQ;IAetB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxG,WAAW,CACP,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAC1D,OAAO,CAAC,IAAI,CAAC;IAQhB,YAAY,CACR,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,GACjG,OAAO,CAAC,IAAI,CAAC;IA2DhB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,cAAc;YAOR,YAAY;YAeZ,cAAc;YAmCd,MAAM;IAiBpB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,eAAe;CAa1B"}
|
package/lib/database.js
CHANGED
|
@@ -149,17 +149,23 @@ class TypeormDatabase {
|
|
|
149
149
|
await (0, hot_1.rollbackBlock)(this.statusSchema, em, chain[i].height);
|
|
150
150
|
}
|
|
151
151
|
if (info.newBlocks.length) {
|
|
152
|
-
let
|
|
153
|
-
if (
|
|
154
|
-
|
|
152
|
+
let unfinalizedStart = info.newBlocks.findIndex((b) => b.height > info.finalizedHead.height);
|
|
153
|
+
if (unfinalizedStart < 0) {
|
|
154
|
+
unfinalizedStart = info.newBlocks.length;
|
|
155
155
|
}
|
|
156
|
-
if (
|
|
157
|
-
await this.performUpdates((store) => cb(store, 0,
|
|
156
|
+
if (unfinalizedStart > 0) {
|
|
157
|
+
await this.performUpdates(async (store) => cb(store, 0, unfinalizedStart), em, new templates_1.TemplateRegistryTracker(em, this.statusSchema, info.finalizedHead.height));
|
|
158
158
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
159
|
+
if (unfinalizedStart < info.newBlocks.length) {
|
|
160
|
+
// To prevent transaction timeouts when handling many unfinalized blocks,
|
|
161
|
+
// we group them instead of handling each block individually.
|
|
162
|
+
let groupSize = Math.max(1, Math.floor((info.newBlocks.length - unfinalizedStart) / 100));
|
|
163
|
+
for (let i = unfinalizedStart; i < info.newBlocks.length; i += groupSize) {
|
|
164
|
+
let sliceEnd = Math.min(i + groupSize, info.newBlocks.length);
|
|
165
|
+
let lastBlock = info.newBlocks[sliceEnd - 1];
|
|
166
|
+
await this.insertHotBlock(em, lastBlock);
|
|
167
|
+
await this.performUpdates(async (store) => cb(store, i, sliceEnd), em, new templates_1.TemplateRegistryTracker(em, this.statusSchema, lastBlock.height), new hot_1.ChangeTracker(em, this.statusSchema, lastBlock.height));
|
|
168
|
+
}
|
|
163
169
|
}
|
|
164
170
|
}
|
|
165
171
|
chain = chain.slice(0, rollbackPos).concat(info.newBlocks);
|
package/lib/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/cacheMap.d.ts
CHANGED
|
@@ -25,8 +25,13 @@ export declare class CacheMap {
|
|
|
25
25
|
/**
|
|
26
26
|
* Store `entity` as the canonical instance for its id.
|
|
27
27
|
*
|
|
28
|
-
* `fromQuery` — the entity came from a TypeORM query
|
|
29
|
-
*
|
|
28
|
+
* `fromQuery` — the entity came from a TypeORM query. If no instance is cached yet,
|
|
29
|
+
* stores it and captures a baseline snapshot for dirty detection. If a different
|
|
30
|
+
* instance is already cached, the cached one is kept (it may be a reference already
|
|
31
|
+
* handed back to user code in a concurrent read); the baseline is only refreshed
|
|
32
|
+
* when that cached instance is still clean (no in-memory mutations vs. its baseline).
|
|
33
|
+
* This avoids silently dropping mutations made through one reference when a parallel
|
|
34
|
+
* `find()` re-loads the same row through a JOIN and traverses it through `persist`.
|
|
30
35
|
*
|
|
31
36
|
* `overwrite` — the caller explicitly requested upsert semantics (`replace: true`);
|
|
32
37
|
* replaces any existing instance without touching `loadedFromDb` / `baseline`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cacheMap.d.ts","sourceRoot":"","sources":["../../src/utils/cacheMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AACtC,OAAO,EAAC,aAAa,EAAC,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AAEvC,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,EAAE,CAEhG;AAQD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAM7G;AAED,qBAAa,YAAY,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IAC7D,KAAK,EAAE,CAAC,GAAG,IAAI,CAAO;IACtB,YAAY,UAAQ;IACpB,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAO;CACpC;AAED,qBAAa,QAAQ;IACjB,OAAO,CAAC,GAAG,CAA4D;IACvE,OAAO,CAAC,MAAM,CAAC,CAAQ;gBAEX,MAAM,CAAC,EAAE,MAAM;IAI3B,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAInE,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAIlD,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAQlD,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAKlD,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,sBAAsB,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAO7E
|
|
1
|
+
{"version":3,"file":"cacheMap.d.ts","sourceRoot":"","sources":["../../src/utils/cacheMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AACtC,OAAO,EAAC,aAAa,EAAC,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AAEvC,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,EAAE,CAEhG;AAQD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAM7G;AAED,qBAAa,YAAY,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IAC7D,KAAK,EAAE,CAAC,GAAG,IAAI,CAAO;IACtB,YAAY,UAAQ;IACpB,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAO;CACpC;AAED,qBAAa,QAAQ;IACjB,OAAO,CAAC,GAAG,CAA4D;IACvE,OAAO,CAAC,MAAM,CAAC,CAAQ;gBAEX,MAAM,CAAC,EAAE,MAAM;IAI3B,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAInE,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAIlD,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAQlD,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAKlD,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,sBAAsB,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAO7E;;;;;;;;;;;;;;;OAeG;IACH,GAAG,CAAC,CAAC,SAAS,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI;IAuD1H,OAAO,CAAC,cAAc;CAQzB"}
|
package/lib/utils/cacheMap.js
CHANGED
|
@@ -69,8 +69,13 @@ class CacheMap {
|
|
|
69
69
|
/**
|
|
70
70
|
* Store `entity` as the canonical instance for its id.
|
|
71
71
|
*
|
|
72
|
-
* `fromQuery` — the entity came from a TypeORM query
|
|
73
|
-
*
|
|
72
|
+
* `fromQuery` — the entity came from a TypeORM query. If no instance is cached yet,
|
|
73
|
+
* stores it and captures a baseline snapshot for dirty detection. If a different
|
|
74
|
+
* instance is already cached, the cached one is kept (it may be a reference already
|
|
75
|
+
* handed back to user code in a concurrent read); the baseline is only refreshed
|
|
76
|
+
* when that cached instance is still clean (no in-memory mutations vs. its baseline).
|
|
77
|
+
* This avoids silently dropping mutations made through one reference when a parallel
|
|
78
|
+
* `find()` re-loads the same row through a JOIN and traverses it through `persist`.
|
|
74
79
|
*
|
|
75
80
|
* `overwrite` — the caller explicitly requested upsert semantics (`replace: true`);
|
|
76
81
|
* replaces any existing instance without touching `loadedFromDb` / `baseline`.
|
|
@@ -96,10 +101,22 @@ class CacheMap {
|
|
|
96
101
|
if (cached.value === entity)
|
|
97
102
|
return;
|
|
98
103
|
if (opts?.fromQuery) {
|
|
99
|
-
cached
|
|
104
|
+
// Preserve the canonical cached instance: a concurrent reader may already
|
|
105
|
+
// hold a reference to it and be about to mutate it. Replacing it here would
|
|
106
|
+
// silently drop those mutations and reset the baseline to the freshly-loaded
|
|
107
|
+
// (untouched) row, so dirty-detection at sync time would miss the change.
|
|
108
|
+
const cachedValue = cached.value;
|
|
109
|
+
const cachedClean = cached.loadedFromDb &&
|
|
110
|
+
cached.baseline != null &&
|
|
111
|
+
!isSnapshotDirty(metadata, cachedValue, cached.baseline);
|
|
112
|
+
if (cachedClean || !cached.loadedFromDb) {
|
|
113
|
+
// Cached instance has no pending in-memory mutations (or has never been
|
|
114
|
+
// associated with a DB baseline at all). Safe to align baseline to the
|
|
115
|
+
// latest DB read so future dirty detection works against fresh data.
|
|
116
|
+
cached.baseline = captureColumnSnapshot(metadata, cachedValue);
|
|
117
|
+
}
|
|
100
118
|
cached.loadedFromDb = true;
|
|
101
|
-
|
|
102
|
-
this.logger?.debug(`replaced entity from query ${metadata.name} ${entity.id}`);
|
|
119
|
+
this.logger?.debug(`refreshed entity from query ${metadata.name} ${entity.id}`);
|
|
103
120
|
return;
|
|
104
121
|
}
|
|
105
122
|
if (opts?.overwrite) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cacheMap.js","sourceRoot":"","sources":["../../src/utils/cacheMap.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cacheMap.js","sourceRoot":"","sources":["../../src/utils/cacheMap.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@belopash/typeorm-store",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.8",
|
|
4
4
|
"description": "Optimized TypeORM based storage for squid mappings",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "git+https://github.com/belopash/squid-typeorm-store.git"
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"@subsquid/logger": "^1",
|
|
27
27
|
"@subsquid/typeorm-config": "^4",
|
|
28
|
-
"@subsquid/typeorm-store": "^1.
|
|
28
|
+
"@subsquid/typeorm-store": "^1.9.0",
|
|
29
29
|
"pg": "^8.11.3",
|
|
30
30
|
"typeorm": "^0.3.20"
|
|
31
31
|
},
|
package/src/database.ts
CHANGED
|
@@ -229,26 +229,32 @@ export class TypeormDatabase {
|
|
|
229
229
|
}
|
|
230
230
|
|
|
231
231
|
if (info.newBlocks.length) {
|
|
232
|
-
let
|
|
233
|
-
if (
|
|
234
|
-
|
|
232
|
+
let unfinalizedStart = info.newBlocks.findIndex((b) => b.height > info.finalizedHead.height)
|
|
233
|
+
if (unfinalizedStart < 0) {
|
|
234
|
+
unfinalizedStart = info.newBlocks.length
|
|
235
235
|
}
|
|
236
|
-
if (
|
|
236
|
+
if (unfinalizedStart > 0) {
|
|
237
237
|
await this.performUpdates(
|
|
238
|
-
(store) => cb(store, 0,
|
|
238
|
+
async (store) => cb(store, 0, unfinalizedStart),
|
|
239
239
|
em,
|
|
240
240
|
new TemplateRegistryTracker(em, this.statusSchema, info.finalizedHead.height)
|
|
241
241
|
)
|
|
242
242
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
243
|
+
if (unfinalizedStart < info.newBlocks.length) {
|
|
244
|
+
// To prevent transaction timeouts when handling many unfinalized blocks,
|
|
245
|
+
// we group them instead of handling each block individually.
|
|
246
|
+
let groupSize = Math.max(1, Math.floor((info.newBlocks.length - unfinalizedStart) / 100))
|
|
247
|
+
for (let i = unfinalizedStart; i < info.newBlocks.length; i += groupSize) {
|
|
248
|
+
let sliceEnd = Math.min(i + groupSize, info.newBlocks.length)
|
|
249
|
+
let lastBlock = info.newBlocks[sliceEnd - 1]
|
|
250
|
+
await this.insertHotBlock(em, lastBlock)
|
|
251
|
+
await this.performUpdates(
|
|
252
|
+
async (store) => cb(store, i, sliceEnd),
|
|
253
|
+
em,
|
|
254
|
+
new TemplateRegistryTracker(em, this.statusSchema, lastBlock.height),
|
|
255
|
+
new ChangeTracker(em, this.statusSchema, lastBlock.height)
|
|
256
|
+
)
|
|
257
|
+
}
|
|
252
258
|
}
|
|
253
259
|
}
|
|
254
260
|
|
package/src/utils/cacheMap.ts
CHANGED
|
@@ -74,8 +74,13 @@ export class CacheMap {
|
|
|
74
74
|
/**
|
|
75
75
|
* Store `entity` as the canonical instance for its id.
|
|
76
76
|
*
|
|
77
|
-
* `fromQuery` — the entity came from a TypeORM query
|
|
78
|
-
*
|
|
77
|
+
* `fromQuery` — the entity came from a TypeORM query. If no instance is cached yet,
|
|
78
|
+
* stores it and captures a baseline snapshot for dirty detection. If a different
|
|
79
|
+
* instance is already cached, the cached one is kept (it may be a reference already
|
|
80
|
+
* handed back to user code in a concurrent read); the baseline is only refreshed
|
|
81
|
+
* when that cached instance is still clean (no in-memory mutations vs. its baseline).
|
|
82
|
+
* This avoids silently dropping mutations made through one reference when a parallel
|
|
83
|
+
* `find()` re-loads the same row through a JOIN and traverses it through `persist`.
|
|
79
84
|
*
|
|
80
85
|
* `overwrite` — the caller explicitly requested upsert semantics (`replace: true`);
|
|
81
86
|
* replaces any existing instance without touching `loadedFromDb` / `baseline`.
|
|
@@ -104,10 +109,23 @@ export class CacheMap {
|
|
|
104
109
|
if (cached.value === entity) return
|
|
105
110
|
|
|
106
111
|
if (opts?.fromQuery) {
|
|
107
|
-
cached
|
|
112
|
+
// Preserve the canonical cached instance: a concurrent reader may already
|
|
113
|
+
// hold a reference to it and be about to mutate it. Replacing it here would
|
|
114
|
+
// silently drop those mutations and reset the baseline to the freshly-loaded
|
|
115
|
+
// (untouched) row, so dirty-detection at sync time would miss the change.
|
|
116
|
+
const cachedValue = cached.value
|
|
117
|
+
const cachedClean =
|
|
118
|
+
cached.loadedFromDb &&
|
|
119
|
+
cached.baseline != null &&
|
|
120
|
+
!isSnapshotDirty(metadata, cachedValue, cached.baseline)
|
|
121
|
+
if (cachedClean || !cached.loadedFromDb) {
|
|
122
|
+
// Cached instance has no pending in-memory mutations (or has never been
|
|
123
|
+
// associated with a DB baseline at all). Safe to align baseline to the
|
|
124
|
+
// latest DB read so future dirty detection works against fresh data.
|
|
125
|
+
cached.baseline = captureColumnSnapshot(metadata, cachedValue)
|
|
126
|
+
}
|
|
108
127
|
cached.loadedFromDb = true
|
|
109
|
-
|
|
110
|
-
this.logger?.debug(`replaced entity from query ${metadata.name} ${entity.id}`)
|
|
128
|
+
this.logger?.debug(`refreshed entity from query ${metadata.name} ${entity.id}`)
|
|
111
129
|
return
|
|
112
130
|
}
|
|
113
131
|
|