harper 5.0.18 → 5.0.19
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/dist/resources/RocksTransactionLogStore.js +80 -21
- package/dist/resources/RocksTransactionLogStore.js.map +1 -1
- package/dist/resources/Table.js +79 -18
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/auditStore.d.ts +1 -0
- package/dist/resources/auditStore.js +1 -1
- package/dist/resources/auditStore.js.map +1 -1
- package/package.json +1 -1
- package/resources/RocksTransactionLogStore.ts +0 -26
- package/resources/Table.ts +81 -17
- package/resources/auditStore.ts +0 -11
- package/studio/web/assets/{index-Tv7e9k8K.js → index-BIjBsaWw.js} +5 -5
- package/studio/web/assets/{index-Tv7e9k8K.js.map → index-BIjBsaWw.js.map} +1 -1
- package/studio/web/assets/{index.lazy-De4JGuec.js → index.lazy-DN6bSQzR.js} +2 -2
- package/studio/web/assets/{index.lazy-De4JGuec.js.map → index.lazy-DN6bSQzR.js.map} +1 -1
- package/studio/web/assets/{profile-voeNsl4C.js → profile-Dyrp-ZIJ.js} +2 -2
- package/studio/web/assets/{profile-voeNsl4C.js.map → profile-Dyrp-ZIJ.js.map} +1 -1
- package/studio/web/assets/{status-110CCE-v.js → status-BrfTnnpt.js} +2 -2
- package/studio/web/assets/{status-110CCE-v.js.map → status-BrfTnnpt.js.map} +1 -1
- package/studio/web/index.html +1 -1
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.RocksTransactionLogStore = void 0;
|
|
4
37
|
const rocksdb_js_1 = require("@harperfast/rocksdb-js");
|
|
@@ -8,6 +41,7 @@ const auditStore_ts_1 = require("./auditStore.js");
|
|
|
8
41
|
const node_worker_threads_1 = require("node:worker_threads");
|
|
9
42
|
const node_events_1 = require("node:events");
|
|
10
43
|
const lmdb_1 = require("lmdb");
|
|
44
|
+
const harperLogger = __importStar(require("../utility/logging/harper_logger.js"));
|
|
11
45
|
if (!process.env.HARPER_NO_FLUSH_ON_EXIT && node_worker_threads_1.isMainThread) {
|
|
12
46
|
// we want to be able to test log replay
|
|
13
47
|
process.on('exit', () => (0, rocksdb_js_1.shutdown)());
|
|
@@ -273,29 +307,54 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
|
|
|
273
307
|
iterable.iterate = () => aggregateIterator;
|
|
274
308
|
}
|
|
275
309
|
const mappedAggregateIterable = iterable.map(({ timestamp, data, endTxn }) => {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
//
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
310
|
+
// Per-entry try/catch: a corrupt rocks prelude (first 4-16 bytes) would otherwise
|
|
311
|
+
// throw a raw `RangeError: Offset is outside the bounds of the DataView` out
|
|
312
|
+
// through `iterable.map`, escape the for-of consumer, and land as an
|
|
313
|
+
// uncaughtException on a later tick — stalling outgoing replication at the
|
|
314
|
+
// failing offset on every catch-up attempt. On error, yield a sentinel record
|
|
315
|
+
// with the timestamp preserved so iteration advances past the bad entry;
|
|
316
|
+
// downstream consumers already skip records with no `tableId`/`type`.
|
|
317
|
+
try {
|
|
318
|
+
const decoder = new auditStore_ts_1.Decoder(data.buffer, data.byteOffset, data.byteLength);
|
|
319
|
+
data.dataView = decoder;
|
|
320
|
+
// This represents the data that shouldn't be transferred for replication
|
|
321
|
+
let structureVersion = decoder.getUint32(0);
|
|
322
|
+
let position = 4;
|
|
323
|
+
let previousResidencyId;
|
|
324
|
+
let previousVersion;
|
|
325
|
+
if (structureVersion & HAS_PREVIOUS_RESIDENCY_ID) {
|
|
326
|
+
previousResidencyId = decoder.getUint32(position);
|
|
327
|
+
position += 4;
|
|
328
|
+
}
|
|
329
|
+
if (structureVersion & HAS_PREVIOUS_VERSION) {
|
|
330
|
+
// does previous residency id and version actually require separate flags?
|
|
331
|
+
previousVersion = decoder.getFloat64(position);
|
|
332
|
+
position += 8;
|
|
333
|
+
}
|
|
334
|
+
const auditRecord = (0, auditStore_ts_1.readAuditEntry)(data, position, undefined);
|
|
335
|
+
auditRecord.version = timestamp;
|
|
336
|
+
auditRecord.endTxn = endTxn;
|
|
337
|
+
auditRecord.previousResidencyId = previousResidencyId;
|
|
338
|
+
auditRecord.previousVersion = previousVersion;
|
|
339
|
+
auditRecord.structureVersion = structureVersion & 0x00ffffff;
|
|
340
|
+
return auditRecord;
|
|
286
341
|
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
342
|
+
catch (error) {
|
|
343
|
+
harperLogger.error('Failed to decode rocks transaction log entry; skipping', error, {
|
|
344
|
+
timestamp,
|
|
345
|
+
byteLength: data?.byteLength,
|
|
346
|
+
});
|
|
347
|
+
return {
|
|
348
|
+
version: timestamp,
|
|
349
|
+
endTxn,
|
|
350
|
+
type: undefined,
|
|
351
|
+
tableId: undefined,
|
|
352
|
+
recordId: undefined,
|
|
353
|
+
getValue: () => undefined,
|
|
354
|
+
getBinaryValue: () => undefined,
|
|
355
|
+
getBinaryRecordId: () => undefined,
|
|
356
|
+
};
|
|
291
357
|
}
|
|
292
|
-
const auditRecord = (0, auditStore_ts_1.readAuditEntry)(data, position, undefined, true);
|
|
293
|
-
auditRecord.version = timestamp;
|
|
294
|
-
auditRecord.endTxn = endTxn;
|
|
295
|
-
auditRecord.previousResidencyId = previousResidencyId;
|
|
296
|
-
auditRecord.previousVersion = previousVersion;
|
|
297
|
-
auditRecord.structureVersion = structureVersion & 0x00ffffff;
|
|
298
|
-
return auditRecord;
|
|
299
358
|
});
|
|
300
359
|
// Add methods to the mapped iterable if we have an aggregate iterator
|
|
301
360
|
if (aggregateIterator?.addLog) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RocksTransactionLogStore.js","sourceRoot":"","sources":["../../resources/RocksTransactionLogStore.ts"],"names":[],"mappings":";;;AAAA,uDAAwG;AACxG,qEAAiE;AACjE,yDAAuD;AACvD,mDAAyG;AACzG,6DAAmD;AACnD,6CAA2C;AAC3C,+BAAgC;AAGhC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,kCAAY,EAAE,CAAC;IAC1D,wCAAwC;IACxC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAA,qBAAQ,GAAE,CAAC,CAAC;AACtC,CAAC;AAED,wGAAwG;AACxG,MAAM,yBAAyB,GAAG,UAAU,CAAC;AAC7C,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAOxC;;;;;GAKG;AACH,MAAa,wBAAyB,SAAQ,0BAAY;IACzD,GAAG,CAAiB;IACpB,QAAQ,CAAoB,CAAC,uCAAuC;IACpE,SAAS,GAAgC,IAAI,GAAG,EAAE,CAAC;IACnD,OAAO,GAAG,CAAC,CAAC,CAAC,+DAA+D;IAC5E,SAAS,CAAgB;IACzB,gBAAgB,GAAG,IAAI,CAAC,CAAC,oFAAoF;IAC7G,YAAY,YAA2B;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,YAAiB,EAAE,WAAqC,EAAE,OAAY;QACzE,IAAI,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACjC,6CAA6C;YAC7C,OAAO;QACR,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC;QACxF,IAAI,WAAuB,CAAC;QAC5B,IAAI,WAAW,YAAY,UAAU;YAAE,WAAW,GAAG,WAAW,CAAC;aAC5D,CAAC;YACL,MAAM,uBAAuB,GAC5B,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjE,WAAW,CAAC,gBAAgB,CAAC;YAC9B,8BAAc,CAAC,SAAS,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;YACrD,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,WAAW,CAAC,mBAAmB,EAAE,CAAC;gBACrC,8BAAc,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;gBAC7D,QAAQ,GAAG,CAAC,CAAC;YACd,CAAC;YACD,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;gBAChC,8BAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;gBAC/D,QAAQ,IAAI,CAAC,CAAC;YACf,CAAC;YACD,WAAW,GAAG,IAAA,gCAAgB,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;gBACrC,OAAO,CAAC,WAAW,CAAC,UAAU,GAAG,EAAE,CAAC;gBACpC,OAAO,CAAC,WAAW,CAAC,QAAQ,GAAG,GAAG,EAAE;oBACnC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC1D,CAAC,CAAC;YACH,CAAC;YACD,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC;QACD,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,MAAc;QACrB,OAAO,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,CAAC;IAED,OAAO,CAAC,YAAiB,EAAE,KAAU,EAAE,OAAY;QAClD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAA,eAAQ,EAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;IACF,CAAC;IACD,GAAG,CAAC,GAAQ,EAAE,OAAe,EAAE,QAAa,EAAE,MAAc;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,CAAC,GAAQ,EAAE,OAAe,EAAE,QAAa,EAAE,MAAc;QAC/D,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC7E,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC9C,CAAC;YACD,4DAA4D;YAC5D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBAClF,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;oBAC9D,OAAO,KAAK,CAAC;gBACd,CAAC;gBACD,IAAI,KAAK,CAAC,OAAO,KAAK,GAAG;oBAAE,OAAO,CAAC,gCAAgC;YACpE,CAAC;QACF,CAAC;aAAM,CAAC;YACP,6FAA6F;YAC7F,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;IACD,SAAS,CAAC,GAAQ;QACjB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,QAAQ;QACP,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACpC,CAAC;IACD,YAAY,CAAC,OAAe,EAAE,GAAmB;QAChD,MAAM,MAAM,GAAG,CAAC,IAAA,oCAAiB,EAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAW,CAAC;QACjE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAS,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjC,OAAO,MAAM,CAAC;IACf,CAAC;IAED,QAAQ;QACP,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,iFAAiF;YACjF,OAAO,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,OAAO,CAAC,gBAAgB;YACzD,uBAAuB;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,eAAe,CAAC,OAAe;QAC9B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,OAUR;QACA,IAAI,QAAQ,GAAG,IAAI,oCAAgB,EAAoB,CAAC;QACxD,IAAI,iBAAyC,CAAC;QAC9C,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,GAAG,GAAG,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3G,IAAI,CAAC,GAAG,EAAE,CAAC;gBACV,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;oBACrC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACP,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvC,CAAC;gBACD,IAAI,CAAC,GAAG,EAAE,CAAC;oBACV,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC1C,CAAC;YACF,CAAC;YACD,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzC,QAAQ,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC;QACxC,CAAC;aAAM,CAAC;YACP,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAClC,IAAI,IAAI,GAAqB,EAAE,CAAC;YAChC,qDAAqD;YACrD,IAAI,WAAkB,CAAC;YACvB,IAAI,aAAqB,CAAC;YAC1B,MAAM,SAAS,GAAyC,EAAE,CAAC;YAC3D,MAAM,eAAe,GAAG,GAAG,EAAE;gBAC5B,IAAI,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;oBACpC,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAC3D,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CACjD,CAAC;oBACF,KAAK,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;wBAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;4BACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACf,IAAI,YAAY,GAAG,OAAO,CAAC;4BAC3B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gCACxB,6CAA6C;gCAC7C,YAAY,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC7E,CAAC;iCAAM,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;gCAC/B,yGAAyG;gCACzG,yGAAyG;gCACzG,qDAAqD;gCACrD,YAAY,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;4BAC1D,CAAC;4BACD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;wBACzC,CAAC;oBACF,CAAC;oBACD,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;oBAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;wBACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4BACtC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;4BAClB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gCAC/B,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gCAClB,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;4BAC1B,CAAC;wBACF,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5D,CAAC,CAAC;YACF,eAAe,EAAE,CAAC;YAElB,iBAAiB,GAAG;gBACnB,IAAI;oBACH,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC9B,wFAAwF;wBACxF,8DAA8D;wBAC9D,eAAe,EAAE,CAAC;oBACnB,CAAC;oBACD,IAAI,QAA0B,CAAC;oBAC/B,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;oBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC7C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;wBAC9B,yBAAyB;wBACzB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;4BACjB,SAAS;wBACV,CAAC;wBACD,yCAAyC;wBACzC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;wBAC1B,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;4BACtD,QAAQ,GAAG,IAAI,CAAC;4BAChB,aAAa,GAAG,CAAC,CAAC;wBACnB,CAAC;oBACF,CAAC;oBACD,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;wBACxB,uEAAuE;wBACvE,WAAW,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;wBAC7D,OAAO;4BACN,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;4BAC/C,IAAI,EAAE,KAAK;yBACX,CAAC;oBACH,CAAC,CAAC,mBAAmB;oBACrB,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,0DAA0D;oBAClF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACzC,CAAC;gBACD,MAAM,CAAC,OAAe;oBACrB,IAAI,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;oBAClD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;wBAChB,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACtC,CAAC;gBACF,CAAC;gBACD,SAAS,EAAE,CAAC,OAAe,EAAE,EAAE;oBAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBACxC,IAAI,CAAC,GAAG;wBAAE,OAAO,CAAC,YAAY;oBAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBAC/C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;wBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;wBACtB,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;wBAC3B,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;wBAC7B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACnC,CAAC;gBACF,CAAC;aACD,CAAC;YACF,QAAQ,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC;QAC5C,CAAC;QACD,MAAM,uBAAuB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAoB,EAAE,EAAE;YAE9F,MAAM,OAAO,GAAG,IAAI,uBAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3E,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,yEAAyE;YACzE,IAAI,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,mBAA2B,CAAC;YAChC,IAAI,eAAuB,CAAC;YAC5B,IAAI,gBAAgB,GAAG,yBAAyB,EAAE,CAAC;gBAClD,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAClD,QAAQ,IAAI,CAAC,CAAC;YACf,CAAC;YACD,IAAI,gBAAgB,GAAG,oBAAoB,EAAE,CAAC;gBAC7C,0EAA0E;gBAC1E,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC/C,QAAQ,IAAI,CAAC,CAAC;YACf,CAAC;YACD,MAAM,WAAW,GAAG,IAAA,8BAAc,EAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YACpE,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC;YAChC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;YAC5B,WAAW,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;YACtD,WAAW,CAAC,eAAe,GAAG,eAAe,CAAC;YAC9C,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,GAAG,UAAU,CAAC;YAC7D,OAAO,WAAW,CAAC;QAkDpB,CAAC,CAAC,CAAC;QACH,sEAAsE;QACtE,IAAI,iBAAiB,EAAE,MAAM,EAAE,CAAC;YAC/B,uBAAuB,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAC1D,uBAAuB,CAAC,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC;QACjE,CAAC;QACD,OAAO,uBAAuB,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,QAAc;QACrB,OAAO,EAAE,CAAC,CAAC,uBAAuB;QAClC,2BAA2B;QAC3B,iCAAiC;IAClC,CAAC;IACD,QAAQ;QACP,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;YAClC,SAAS,IAAI,IAAI,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,OAAO;YACN,IAAI;YACJ,SAAS;SACT,CAAC;IACH,CAAC;IAED,mBAAmB,CAAC,GAAoB,EAAE,aAA0B,EAAE,OAAmC;QACxG,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IACD,EAAE,CAAC,SAAiB,EAAE,QAAa;QAClC,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC/C,CAAC;IACF,CAAC;IACD,OAAO,CAAC,GAAQ,EAAE,UAAuB;QACxC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,CAAC,GAAQ;QACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM;QACX,yEAAyE;QACzE,mCAAmC;IACpC,CAAC;CACD;AAnYD,4DAmYC"}
|
|
1
|
+
{"version":3,"file":"RocksTransactionLogStore.js","sourceRoot":"","sources":["../../resources/RocksTransactionLogStore.ts"],"names":[],"mappings":"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"}
|
package/dist/resources/Table.js
CHANGED
|
@@ -93,6 +93,7 @@ exports.EVICTED = 8; // note that 2 is reserved for timestamps
|
|
|
93
93
|
const TEST_WRITE_KEY_BUFFER = Buffer.allocUnsafeSlow(8192);
|
|
94
94
|
const MAX_KEY_BYTES = 1978;
|
|
95
95
|
const EVENT_HIGH_WATER_MARK = 100;
|
|
96
|
+
const REPLAY_YIELD_INTERVAL = 100; // yield to the event loop every N records during subscription replay
|
|
96
97
|
const FULL_PERMISSIONS = {
|
|
97
98
|
read: true,
|
|
98
99
|
insert: true,
|
|
@@ -2464,9 +2465,19 @@ function makeTable(options) {
|
|
|
2464
2465
|
if (!request)
|
|
2465
2466
|
request = {};
|
|
2466
2467
|
const getFullRecord = !request.rawEvents;
|
|
2467
|
-
|
|
2468
|
+
// While the count, !omitCurrent, and non-collection branches replay older messages, real-time
|
|
2469
|
+
// messages from the listener accumulate here and are drained at the end of the IIFE so they
|
|
2470
|
+
// arrive after the replayed history, in order. The startTime branch sets this to null and
|
|
2471
|
+
// uses dropDuringReplay instead — its snapshot:false cursor picks up the live tail directly.
|
|
2472
|
+
let pendingRealTimeQueue = [];
|
|
2473
|
+
// Set during the startTime audit-log replay. The cursor iterates the audit log forward with
|
|
2474
|
+
// snapshot:false, which catches any commits that land during yield points; dropping in the
|
|
2475
|
+
// listener avoids duplicate delivery.
|
|
2476
|
+
let dropDuringReplay = false;
|
|
2468
2477
|
const thisId = requestTargetToId(request) ?? null; // treat undefined and null as the root
|
|
2469
2478
|
const subscription = (0, transactionBroadcast_ts_1.addSubscription)(TableResource, thisId, function (id, auditRecord, localTime, beginTxn) {
|
|
2479
|
+
if (dropDuringReplay)
|
|
2480
|
+
return;
|
|
2470
2481
|
try {
|
|
2471
2482
|
let type = auditRecord.type;
|
|
2472
2483
|
let value;
|
|
@@ -2511,6 +2522,12 @@ function makeTable(options) {
|
|
|
2511
2522
|
logger_ts_1.logger.error?.(error);
|
|
2512
2523
|
}
|
|
2513
2524
|
}, request.startTime || 0, request);
|
|
2525
|
+
// Attach the request.listener BEFORE invoking the IIFE so that sync sends from the
|
|
2526
|
+
// IIFE's prologue go directly to the listener via emit('data') instead of accumulating
|
|
2527
|
+
// in subscription.queue. Without this, the IIFE can fill the queue past
|
|
2528
|
+
// EVENT_HIGH_WATER_MARK and hit waitForDrain before the consumer's listener exists.
|
|
2529
|
+
if (request.listener)
|
|
2530
|
+
subscription.on('data', request.listener);
|
|
2514
2531
|
const result = (async () => {
|
|
2515
2532
|
const isCollection = request.isCollection ?? thisId == null;
|
|
2516
2533
|
if (isCollection) {
|
|
@@ -2524,17 +2541,25 @@ function makeTable(options) {
|
|
|
2524
2541
|
if (count > 1000)
|
|
2525
2542
|
count = 1000; // don't allow too many, we have to hold these in memory
|
|
2526
2543
|
let startTime = request.startTime;
|
|
2544
|
+
let recordsSinceYield = 0;
|
|
2527
2545
|
if (isCollection) {
|
|
2528
2546
|
// a collection should retrieve all descendant ids
|
|
2529
2547
|
if (startTime) {
|
|
2530
2548
|
if (count)
|
|
2531
2549
|
throw new hdbError_js_1.ClientError('startTime and previousCount can not be combined for a table level subscription');
|
|
2532
|
-
// start time specified, get the audit history for this time range
|
|
2550
|
+
// start time specified, get the audit history for this time range. We drop real-time
|
|
2551
|
+
// messages during this loop because the snapshot:false cursor will pick them up itself.
|
|
2552
|
+
pendingRealTimeQueue = null;
|
|
2553
|
+
dropDuringReplay = true;
|
|
2533
2554
|
for (const auditRecord of auditStore.getRange({
|
|
2534
2555
|
start: startTime,
|
|
2535
2556
|
exclusiveStart: true,
|
|
2536
2557
|
snapshot: false, // no need for a snapshot, audits don't change
|
|
2537
2558
|
})) {
|
|
2559
|
+
if (++recordsSinceYield >= REPLAY_YIELD_INTERVAL) {
|
|
2560
|
+
recordsSinceYield = 0;
|
|
2561
|
+
await rest();
|
|
2562
|
+
}
|
|
2538
2563
|
if (auditRecord.tableId !== tableId)
|
|
2539
2564
|
continue;
|
|
2540
2565
|
const id = auditRecord.recordId;
|
|
@@ -2554,15 +2579,34 @@ function makeTable(options) {
|
|
|
2554
2579
|
return;
|
|
2555
2580
|
}
|
|
2556
2581
|
}
|
|
2557
|
-
|
|
2558
|
-
//await rest(); // yield for fairness
|
|
2559
|
-
subscription.startTime = auditRecord.localTime; // update so we don't double send
|
|
2582
|
+
subscription.startTime = auditRecord.localTime ?? auditRecord.version; // update so we don't double send
|
|
2560
2583
|
}
|
|
2584
|
+
// No catch-up sweep needed. With snapshot:false (lmdb), notifyFromTransactionData
|
|
2585
|
+
// calls resetReadTxn before iterating, which bumps renewId; on the cursor's next
|
|
2586
|
+
// .next() it renews to a fresh txn whose snapshot is at least as recent. With
|
|
2587
|
+
// rocksdb, the audit-log iterator re-reads `_lastCommittedPosition` on each next()
|
|
2588
|
+
// (live tail). Either way, at loop exit subscription.startTime is at or past
|
|
2589
|
+
// lastTxnTime, and the gate in notifyFromTransactionData handles the handoff
|
|
2590
|
+
// once dropDuringReplay flips back.
|
|
2591
|
+
dropDuringReplay = false;
|
|
2561
2592
|
}
|
|
2562
2593
|
else if (count) {
|
|
2594
|
+
// Raise the listener's gate up front so that any in-flight 'committed' callbacks
|
|
2595
|
+
// for records the cursor will capture in `history` get gated out of
|
|
2596
|
+
// pendingRealTimeQueue rather than queued and re-emitted as duplicates after
|
|
2597
|
+
// history is sent. getNextMonotonicTime() returns a strictly-greater value than
|
|
2598
|
+
// any audit record's localTime issued so far — it's the same source Harper uses
|
|
2599
|
+
// to assign localTimes — so this gates exactly the records the cursor's
|
|
2600
|
+
// snapshot:true view can see. Anything committed strictly after this point will
|
|
2601
|
+
// pass the gate and reach the queue.
|
|
2602
|
+
subscription.startTime = (0, commonUtility_js_1.getNextMonotonicTime)();
|
|
2563
2603
|
const history = [];
|
|
2564
2604
|
// we are collecting the history in reverse order to get the right count, then reversing to send
|
|
2565
2605
|
for (const auditRecord of auditStore.getRange({ start: 'z', end: false, reverse: true })) {
|
|
2606
|
+
if (++recordsSinceYield >= REPLAY_YIELD_INTERVAL) {
|
|
2607
|
+
recordsSinceYield = 0;
|
|
2608
|
+
await rest();
|
|
2609
|
+
}
|
|
2566
2610
|
try {
|
|
2567
2611
|
if (auditRecord.tableId !== tableId)
|
|
2568
2612
|
continue;
|
|
@@ -2583,22 +2627,34 @@ function makeTable(options) {
|
|
|
2583
2627
|
catch (error) {
|
|
2584
2628
|
logger_ts_1.logger.error?.('Error getting history entry', auditRecord.localTime, error);
|
|
2585
2629
|
}
|
|
2586
|
-
// TODO: Would like to do this asynchronously, but would need to catch up on anything published during iteration
|
|
2587
|
-
//await rest(); // yield for fairness
|
|
2588
2630
|
}
|
|
2589
2631
|
for (let i = history.length; i > 0;) {
|
|
2590
2632
|
send(history[--i]);
|
|
2591
2633
|
}
|
|
2592
|
-
if (history[0])
|
|
2593
|
-
subscription.startTime = history[0].localTime; // update so don't double send
|
|
2594
2634
|
}
|
|
2595
2635
|
else if (!request.omitCurrent) {
|
|
2636
|
+
// Raise the listener's gate up front so that any in-flight 'committed' callbacks
|
|
2637
|
+
// for pre-subscribe commits (which haven't yet advanced lastTxnTime when subscribe
|
|
2638
|
+
// is called) get gated out of the queue. Otherwise the listener fires for them
|
|
2639
|
+
// during cursor yields and emits stale events the cursor either covered (current
|
|
2640
|
+
// state) or correctly skipped (e.g., deletes via `if (!value) continue`).
|
|
2641
|
+
// getNextMonotonicTime() is the same source Harper uses to assign audit record
|
|
2642
|
+
// localTimes, so the gate cuts at a precise instant in the same time domain.
|
|
2643
|
+
subscription.startTime = (0, commonUtility_js_1.getNextMonotonicTime)();
|
|
2644
|
+
// Retained-message semantics: subscriber may legitimately receive a record twice
|
|
2645
|
+
// if a post-subscribe write hits a key the cursor also visits. This is
|
|
2646
|
+
// idempotent for "current state then live updates" — both deliveries land at
|
|
2647
|
+
// the same final state. We don't dedupe.
|
|
2596
2648
|
for (const { key: id, value, version, localTime, size } of primaryStore.getRange({
|
|
2597
2649
|
start: thisId ?? false,
|
|
2598
2650
|
end: thisId == null ? undefined : [thisId, ordered_binary_1.MAXIMUM_KEY],
|
|
2599
2651
|
versions: true,
|
|
2600
2652
|
snapshot: false, // no need for a snapshot, just want the latest data
|
|
2601
2653
|
})) {
|
|
2654
|
+
if (++recordsSinceYield >= REPLAY_YIELD_INTERVAL) {
|
|
2655
|
+
recordsSinceYield = 0;
|
|
2656
|
+
await rest();
|
|
2657
|
+
}
|
|
2602
2658
|
if (!value)
|
|
2603
2659
|
continue;
|
|
2604
2660
|
send({ id, localTime, value, version, type: 'put', size });
|
|
@@ -2629,13 +2685,19 @@ function makeTable(options) {
|
|
|
2629
2685
|
}
|
|
2630
2686
|
logger_ts_1.logger.trace?.('Subscription from', startTime, 'from', thisId, localTime);
|
|
2631
2687
|
if (startTime < localTime) {
|
|
2632
|
-
// start time specified, get the audit history for this record
|
|
2688
|
+
// start time specified, get the audit history for this record. Set startTime up
|
|
2689
|
+
// front so the listener gate skips any in-flight 'committed' for this version
|
|
2690
|
+
// during the yields below — otherwise that event would be queued and drained as a
|
|
2691
|
+
// duplicate of the entry send.
|
|
2692
|
+
subscription.startTime = localTime ?? entry?.version;
|
|
2633
2693
|
const history = [];
|
|
2634
2694
|
let nextTime = localTime;
|
|
2635
2695
|
let nodeId = entry?.nodeId;
|
|
2636
2696
|
do {
|
|
2637
|
-
|
|
2638
|
-
|
|
2697
|
+
if (++recordsSinceYield >= REPLAY_YIELD_INTERVAL) {
|
|
2698
|
+
recordsSinceYield = 0;
|
|
2699
|
+
await rest();
|
|
2700
|
+
}
|
|
2639
2701
|
const auditRecord = auditStore.getSync(nextTime, tableId, thisId, nodeId);
|
|
2640
2702
|
if (auditRecord) {
|
|
2641
2703
|
if (startTime < nextTime) {
|
|
@@ -2661,7 +2723,6 @@ function makeTable(options) {
|
|
|
2661
2723
|
for (let i = history.length; i > 0;) {
|
|
2662
2724
|
send(history[--i]);
|
|
2663
2725
|
}
|
|
2664
|
-
subscription.startTime = localTime; // make sure we don't re-broadcast the current version that we already sent
|
|
2665
2726
|
}
|
|
2666
2727
|
if (!request.omitCurrent && entry?.value) {
|
|
2667
2728
|
// if retain and it exists, send the current value first
|
|
@@ -2673,10 +2734,12 @@ function makeTable(options) {
|
|
|
2673
2734
|
}
|
|
2674
2735
|
}
|
|
2675
2736
|
// now send any queued messages
|
|
2676
|
-
|
|
2677
|
-
|
|
2737
|
+
if (pendingRealTimeQueue) {
|
|
2738
|
+
for (const event of pendingRealTimeQueue) {
|
|
2739
|
+
send(event);
|
|
2740
|
+
}
|
|
2741
|
+
pendingRealTimeQueue = null;
|
|
2678
2742
|
}
|
|
2679
|
-
pendingRealTimeQueue = null;
|
|
2680
2743
|
})();
|
|
2681
2744
|
result.catch((error) => {
|
|
2682
2745
|
harper_logger_js_1.default.error?.('Error in real-time subscription:', error);
|
|
@@ -2688,8 +2751,6 @@ function makeTable(options) {
|
|
|
2688
2751
|
}
|
|
2689
2752
|
subscription.send(event);
|
|
2690
2753
|
}
|
|
2691
|
-
if (request.listener)
|
|
2692
|
-
subscription.on('data', request.listener);
|
|
2693
2754
|
return subscription;
|
|
2694
2755
|
}
|
|
2695
2756
|
/**
|