@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.
@@ -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;IAqDhB,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"}
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 finalizedEnd = info.newBlocks.findIndex((b) => b.height > info.finalizedHead.height);
153
- if (finalizedEnd < 0) {
154
- finalizedEnd = info.newBlocks.length;
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 (finalizedEnd > 0) {
157
- await this.performUpdates((store) => cb(store, 0, finalizedEnd), em, new templates_1.TemplateRegistryTracker(em, this.statusSchema, info.finalizedHead.height));
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
- for (let i = finalizedEnd; i < info.newBlocks.length; i++) {
160
- let b = info.newBlocks[i];
161
- await this.insertHotBlock(em, b);
162
- await this.performUpdates((store) => cb(store, i, i + 1), em, new templates_1.TemplateRegistryTracker(em, this.statusSchema, b.height), new hot_1.ChangeTracker(em, this.statusSchema, b.height));
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);
@@ -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":";;;;;;;;;;;;;;;AAAA,6CAA6C;AAM7C,yDAA4E;AAE5E,qEAA+F;AAC/F,2DAAqE;AACrE,oDAA2B;AAC3B,qCAAiD;AACjD,mCAA6B;AAC7B,uDAAiD;AACjD,6DAAwD;AA0BxD,MAAM,kBAAkB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;AAEjD,MAAa,eAAe;IAcxB,YAAY,OAAgC;QAF5B,sBAAiB,GAAG,IAAa,CAAA;QAG7C,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,WAAW,IAAI,iBAAiB,CAAA;QAC7D,IAAI,CAAC,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,cAAc,CAAA;QAC/D,IAAI,CAAC,uBAAuB,GAAG,OAAO,EAAE,uBAAuB,IAAI,IAAI,CAAA;QACvE,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,IAAI,CAAA;QACnD,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,IAAI,CAAA;QACnD,IAAI,CAAC,iBAAiB,GAAG,OAAO,EAAE,gBAAgB,IAAI,IAAI,CAAA;QAC1D,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAA,gBAAM,EAAC,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,mBAAmB,CAAC,CAAA;QAE7C,IAAI,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAE5C,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAA;QACvF,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA,CAAC,eAAe;YACxD,IAAI,CAAC,GAAG,GAAG,SAAS,CAAA;YACpB,MAAM,CAAC,CAAA;QACX,CAAC;IACL,CAAC;IAES,KAAK,CAAC,oBAAoB;QAChC,MAAM,GAAG,GAAG,IAAA,gCAAe,EAAC,EAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAC,CAAC,CAAA;QAC1D,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC,GAAG,CAAC,CAAA;QACtC,OAAO,UAAU,CAAC,UAAU,EAAE,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,MAAM,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,CAAA;IACjE,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,EAAiB;QAC3C,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QAEjC,MAAM,EAAE,CAAC,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAA;QACvD,MAAM,EAAE,CAAC,KAAK,CACV,8BAA8B,MAAM,WAAW;YAC3C,uBAAuB;YACvB,wBAAwB;YACxB,0BAA0B;YAC1B,sBAAsB;YACtB,GAAG,CACV,CAAA;QACD,MAAM,EAAE,CAAC,KAAK;QACV,yDAAyD;QACzD,eAAe,MAAM,yDAAyD,CACjF,CAAA;QACD,MAAM,EAAE,CAAC,KAAK;QACV,yDAAyD;QACzD,eAAe,MAAM,sDAAsD,CAC9E,CAAA;QACD,MAAM,EAAE,CAAC,KAAK,CAAC,8BAA8B,MAAM,0DAA0D,CAAC,CAAA;QAC9G,MAAM,EAAE,CAAC,KAAK,CACV,8BAA8B,MAAM,mBAAmB;YACnD,yCAAyC,MAAM,gCAAgC;YAC/E,uBAAuB;YACvB,yBAAyB;YACzB,mCAAmC;YACnC,GAAG,CACV,CAAA;QACD,MAAM,EAAE,CAAC,KAAK,CACV,8BAA8B,MAAM,sBAAsB;YACtD,qBAAqB;YACrB,uBAAuB;YACvB,yBAAyB;YACzB,6BAA6B;YAC7B,uBAAuB;YACvB,8CAA8C;YAC9C,GAAG,CACV,CAAA;QAED,IAAI,MAAM,GAAwC,MAAM,EAAE,CAAC,KAAK,CAC5D,mCAAmC,MAAM,sBAAsB,CAClE,CAAA;QACD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,MAAM,iDAAiD,CAAC,CAAA;YACtF,OAAO,qBAAqB,CAAC,EAAC,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC,CAAA;QAC5F,CAAC;QAED,IAAI,YAAY,GAAU,MAAM,EAAE,CAAC,KAAK,CACpC,8CAA8C,MAAM,qBAAqB;YACrE,oEAAoE,EACxE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CACrB,CAAA;QACD,IAAI,SAAS,GAAuB,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;QAEzE,IAAI,SAAS,GAAoB,MAAM,EAAE,CAAC,KAAK,CAAC,4BAA4B,MAAM,4BAA4B,CAAC,CAAA;QAC/G,IAAI,GAAG,GAAe,EAAE,CAAA;QACxB,KAAK,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;YAC1B,IAAI,iBAAiB,GAAU,MAAM,EAAE,CAAC,KAAK,CACzC,8CAA8C,MAAM,qBAAqB;gBACrE,2DAA2D,EAC/D,CAAC,KAAK,CAAC,MAAM,CAAC,CACjB,CAAA;YACD,GAAG,CAAC,IAAI,CAAC,EAAC,GAAG,KAAK,EAAE,SAAS,EAAE,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAC,CAAC,CAAA;QAC/E,CAAC;QAED,OAAO,qBAAqB,CAAC,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAC,CAAC,CAAA;IAChE,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,EAAiB;QACpC,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QAEjC,IAAI,MAAM,GAAwC,MAAM,EAAE,CAAC,KAAK,CAC5D,mCAAmC,MAAM,sBAAsB,CAClE,CAAA;QAED,IAAA,gBAAM,EAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;QAE1B,IAAI,MAAM,GAAoB,MAAM,EAAE,CAAC,KAAK,CAAC,4BAA4B,MAAM,4BAA4B,CAAC,CAAA;QAC5G,IAAI,GAAG,GAAe,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC,CAAC,CAAA;QAE9D,OAAO,qBAAqB,CAAC,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC,CAAA;IACpE,CAAC;IAED,QAAQ,CAAC,IAAiB,EAAE,EAA4D;QACpF,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YAC5B,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YACnC,IAAI,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,GAAG,IAAI,CAAA;YAE3C,IAAA,gBAAM,EAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YACnD,IAAA,gBAAM,EAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAA;YACpC,IAAA,gBAAM,EAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;YACjC,IAAA,gBAAM,EAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;YAE9B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBACxB,MAAM,IAAA,mBAAa,EAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;YAC5D,CAAC;YAED,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,mCAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;YAElG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAClD,CAAC,CAAC,CAAA;IACN,CAAC;IAED,WAAW,CACP,IAAe,EACf,EAAyD;QAEzD,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;YAC/D,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;YACtC,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAED,YAAY,CACR,IAAe,EACf,EAAgG;QAEhG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YAC5B,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YACnC,IAAI,KAAK,GAAoB,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;YAElD,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;YACpD,IAAA,gBAAM,EAAC,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,IAAA,yBAAS,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;YAExF,IAAI,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YACvE,IAAA,gBAAM,EAAC,WAAW,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAA;YAClC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC7B,IAAA,gBAAM,EAAC,WAAW,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAA;YACtD,CAAC;YACD,IAAA,gBAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YAE9D,IAAI,WAAW,GAAG,WAAW,GAAG,CAAC,CAAA;YAEjC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,MAAM,IAAA,mBAAa,EAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAC/D,CAAC;YAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACxB,IAAI,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;gBAC5F,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;oBACvB,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;gBAC5C,CAAC;gBACD,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;oBACvB,MAAM,IAAI,CAAC,cAAc,CACrB,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,gBAAgB,CAAC,EAC/C,EAAE,EACF,IAAI,mCAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAChF,CAAA;gBACL,CAAC;gBACD,IAAI,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;oBAC3C,yEAAyE;oBACzE,6DAA6D;oBAC7D,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,gBAAgB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;oBACzF,KAAK,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;wBACvE,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;wBAC7D,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAA;wBAC5C,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;wBACxC,MAAM,IAAI,CAAC,cAAc,CACrB,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EACvC,EAAE,EACF,IAAI,mCAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,EACpE,IAAI,mBAAa,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAC7D,CAAA;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;YAED,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAE1D,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;YAEzD,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAChE,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,eAAe,CAAC,EAAiB,EAAE,eAAuB;QAC9D,OAAO,EAAE,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,aAAa,EAAE,+BAA+B,EAAE,CAAC,eAAe,CAAC,CAAC,CAAA;IAC1G,CAAC;IAEO,cAAc,CAAC,EAAiB,EAAE,KAAoB;QAC1D,OAAO,EAAE,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,aAAa,EAAE,2CAA2C,EAAE;YAC5F,KAAK,CAAC,MAAM;YACZ,KAAK,CAAC,IAAI;SACb,CAAC,CAAA;IACN,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,EAAiB,EAAE,KAAa,EAAE,IAAmB;QAC5E,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QAEjC,IAAI,MAAM,GAAuC,MAAM,EAAE,CAAC,KAAK,CAC3D,UAAU,MAAM,mFAAmF,EACnG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAClC,CAAA;QAED,IAAI,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QAE3B,2EAA2E;QAC3E,wEAAwE;QACxE,gBAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAA;IAChD,CAAC;IAEO,KAAK,CAAC,cAAc,CACxB,EAA4D,EAC5D,EAAiB,EACjB,gBAAyC,EACzC,YAA4B;QAE5B,IAAI,KAAK,GAAG,IAAI,aAAK,CAAC;YAClB,EAAE;YACF,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE;YAC7B,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;YACvC,OAAO,EAAE,YAAY;YACrB,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,aAAa,EAAE,IAAI,CAAC,aAAa;SACpC,CAAC,CAAA;QAEF,IAAI,CAAC;YACD,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;YAE5B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;YACtB,CAAC;YAED,IAAI,MAAM,EAAE,SAAS,EAAE,CAAC;gBACpB,MAAM,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACpD,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,KAAK,CAAC,KAAK,EAAE,CAAA;YACb,MAAM,CAAC,CAAA;QACX,CAAC;gBAAS,CAAC;YACP,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;QAC5B,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,EAAwC;QACzD,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,OAAO,IAAI,EAAE,CAAC;YACV,IAAI,CAAC;gBACD,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;gBAClB,IAAA,gBAAM,EAAC,GAAG,IAAI,IAAI,EAAE,eAAe,CAAC,CAAA;gBACpC,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;YACzD,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBACd,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;oBAC/B,OAAO,IAAI,CAAC,CAAA;gBAChB,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,CAAA;gBACX,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAEO,aAAa;QACjB,IAAI,GAAG,GAAG,IAAA,6BAAa,EAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjC,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAC/C,CAAC;IAGO,SAAS;QACb,OAAO,IAAA,qBAAY,EAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;IAEO,eAAe;QACnB,IAAI,UAAU,GAAG,IAAA,6BAAa,EAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACxC,IAAI,YAAY,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAA;QACjD,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACvB,YAAY,GAAG,IAAI,2BAAY,CAAC;gBAC5B,UAAU;gBACV,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;aAC1C,CAAC,CAAA;YACF,UAAU,CAAC,kBAAkB,CAAC,GAAG,YAAY,CAAA;QACjD,CAAC;QAED,OAAO,YAAY,CAAA;IACvB,CAAC;CACJ;AAvUD,0CAuUC;AAjBW;IADP,mBAAG;;;;gDAGH;AAiBL,MAAM,QAAQ,GAAG,sFAAsF,CAAA;AAEvG,SAAS,qBAAqB,CAAC,KAAoB;IAC/C,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAEzB,mDAAmD;IACnD,IAAA,gBAAM,EAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;IAEpC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;IAEvC,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAmB,EAAE,KAAsB;IACtE,IAAI,IAAI,GAAG,IAAI,CAAA;IACf,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QAClB,IAAA,gBAAM,EAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,oCAAoC,CAAC,CAAA;QACpE,IAAI,GAAG,CAAC,CAAA;IACZ,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAM;IAC/B,OAAO;QACH,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;QAC/B,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,WAAW,EAAE,CAAC,CAAC,YAAY;KAC9B,CAAA;AACL,CAAC"}
@@ -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; replaces any existing
29
- * instance and captures a baseline snapshot for dirty detection.
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;;;;;;;;;;OAUG;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;IA0C1H,OAAO,CAAC,cAAc;CAQzB"}
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"}
@@ -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; replaces any existing
73
- * instance and captures a baseline snapshot for dirty detection.
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.value = entity;
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
- cached.baseline = captureColumnSnapshot(metadata, entity);
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":";;;AAIA,sDAEC;AAQD,0CAMC;AAhBD,SAAgB,qBAAqB,CAAC,QAAwB,EAAE,MAAqB;IACjF,OAAO,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;AACpF,CAAC;AAED,SAAS,WAAW,CAAC,CAAU,EAAE,CAAU;IACvC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAChC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI;QAAE,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAA;IAC9E,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,SAAgB,eAAe,CAAC,QAAwB,EAAE,MAAqB,EAAE,QAAmB;IAChG,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAA;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;IACpF,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,MAAa,YAAY;IAAzB;QACI,UAAK,GAAa,IAAI,CAAA;QACtB,iBAAY,GAAG,KAAK,CAAA;QACpB,aAAQ,GAAqB,IAAI,CAAA;IACrC,CAAC;CAAA;AAJD,oCAIC;AAED,MAAa,QAAQ;IAIjB,YAAY,MAAe;QAHnB,QAAG,GAAmD,IAAI,GAAG,EAAE,CAAA;QAInE,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;IAED,GAAG,CAAC,QAAwB,EAAE,EAAU;QACpC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,GAAG,CAAC,QAAwB,EAAE,EAAU;QACpC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAA;IACzD,CAAC;IAED,MAAM,CAAC,QAAwB,EAAE,EAAU;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAM;QAE5B,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,YAAY,EAAE,CAAC,CAAA;QACpC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,sBAAsB,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,CAAC,QAAwB,EAAE,EAAU;QACvC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,YAAY,EAAE,CAAC,CAAA;QACzD,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,kBAAkB,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;QAC7B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED;;;OAGG;IACH,sBAAsB,CAAC,QAAwB,EAAE,MAAqB;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QAC5C,IAAI,MAAM,EAAE,KAAK,IAAI,IAAI;YAAE,OAAM;QACjC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAA;QAC1B,MAAM,CAAC,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IACnE,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,GAAG,CAA0B,QAAwB,EAAE,MAAS,EAAE,IAAiD;QAC/G,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QAE9C,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACpC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACjB,MAAM,GAAG,IAAI,YAAY,EAAE,CAAA;YAC3B,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACnC,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAA;YACrB,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC;gBAClB,MAAM,CAAC,YAAY,GAAG,IAAI,CAAA;gBAC1B,MAAM,CAAC,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YAC7D,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,gBAAgB,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;YAChE,OAAM;QACV,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM;YAAE,OAAM;QAEnC,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC;YAClB,0EAA0E;YAC1E,4EAA4E;YAC5E,6EAA6E;YAC7E,0EAA0E;YAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAA;YAChC,MAAM,WAAW,GACb,MAAM,CAAC,YAAY;gBACnB,MAAM,CAAC,QAAQ,IAAI,IAAI;gBACvB,CAAC,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC5D,IAAI,WAAW,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBACtC,wEAAwE;gBACxE,uEAAuE;gBACvE,qEAAqE;gBACrE,MAAM,CAAC,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;YAClE,CAAC;YACD,MAAM,CAAC,YAAY,GAAG,IAAI,CAAA;YAC1B,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,+BAA+B,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;YAC/E,OAAM;QACV,CAAC;QAED,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAA;YACrB,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,+BAA+B,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;YAC/E,OAAM;QACV,CAAC;QAED,MAAM,IAAI,KAAK,CACX,UAAU,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,mEAAmE;YACnG,sHAAsH;YACtH,gFAAgF,CACvF,CAAA;IACL,CAAC;IAEO,cAAc,CAA0B,QAAwB;QACpE,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAChC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACd,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;YACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;QAC/B,CAAC;QACD,OAAO,GAAmC,CAAA;IAC9C,CAAC;CACJ;AA5HD,4BA4HC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@belopash/typeorm-store",
3
- "version": "2.0.0-rc.6",
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.8.0",
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 finalizedEnd = info.newBlocks.findIndex((b) => b.height > info.finalizedHead.height)
233
- if (finalizedEnd < 0) {
234
- finalizedEnd = info.newBlocks.length
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 (finalizedEnd > 0) {
236
+ if (unfinalizedStart > 0) {
237
237
  await this.performUpdates(
238
- (store) => cb(store, 0, finalizedEnd),
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
- for (let i = finalizedEnd; i < info.newBlocks.length; i++) {
244
- let b = info.newBlocks[i]
245
- await this.insertHotBlock(em, b)
246
- await this.performUpdates(
247
- (store) => cb(store, i, i + 1),
248
- em,
249
- new TemplateRegistryTracker(em, this.statusSchema, b.height),
250
- new ChangeTracker(em, this.statusSchema, b.height)
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
 
@@ -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; replaces any existing
78
- * instance and captures a baseline snapshot for dirty detection.
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.value = entity
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
- cached.baseline = captureColumnSnapshot(metadata, entity)
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