@harperfast/harper 5.1.20 → 5.1.21

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.
Files changed (34) hide show
  1. package/dist/resources/DatabaseTransaction.d.ts +27 -0
  2. package/dist/resources/DatabaseTransaction.js +90 -11
  3. package/dist/resources/DatabaseTransaction.js.map +1 -1
  4. package/dist/resources/LMDBTransaction.js +38 -4
  5. package/dist/resources/LMDBTransaction.js.map +1 -1
  6. package/npm-shrinkwrap.json +2 -2
  7. package/package.json +1 -1
  8. package/resources/DatabaseTransaction.ts +97 -17
  9. package/resources/LMDBTransaction.ts +38 -8
  10. package/studio/web/assets/{Chat-SdD1EZca.js → Chat-b9-qoGXp.js} +2 -2
  11. package/studio/web/assets/{Chat-SdD1EZca.js.map → Chat-b9-qoGXp.js.map} +1 -1
  12. package/studio/web/assets/{FloatingChat-GMq6tHK9.js → FloatingChat-Bq6AvYFl.js} +4 -4
  13. package/studio/web/assets/{FloatingChat-GMq6tHK9.js.map → FloatingChat-Bq6AvYFl.js.map} +1 -1
  14. package/studio/web/assets/{applications-B5hhv7uA.js → applications-BPFKQ92y.js} +2 -2
  15. package/studio/web/assets/{applications-B5hhv7uA.js.map → applications-BPFKQ92y.js.map} +1 -1
  16. package/studio/web/assets/{index-VFcpNWgq.js → index-_5XSo5PH.js} +6 -6
  17. package/studio/web/assets/{index-VFcpNWgq.js.map → index-_5XSo5PH.js.map} +1 -1
  18. package/studio/web/assets/{index.lazy-DgcJojIA.js → index.lazy-jQ_a-mFH.js} +4 -4
  19. package/studio/web/assets/{index.lazy-DgcJojIA.js.map → index.lazy-jQ_a-mFH.js.map} +1 -1
  20. package/studio/web/assets/{profile-BqN-8vzm.js → profile-RZ7cuXoD.js} +2 -2
  21. package/studio/web/assets/{profile-BqN-8vzm.js.map → profile-RZ7cuXoD.js.map} +1 -1
  22. package/studio/web/assets/{setComponentFile-CHFvFq9u.js → setComponentFile-D4f00LuA.js} +2 -2
  23. package/studio/web/assets/{setComponentFile-CHFvFq9u.js.map → setComponentFile-D4f00LuA.js.map} +1 -1
  24. package/studio/web/assets/{setup-CQ3vWJSr.js → setup-dry32YNk.js} +2 -2
  25. package/studio/web/assets/{setup-CQ3vWJSr.js.map → setup-dry32YNk.js.map} +1 -1
  26. package/studio/web/assets/{status-BsW5fjuh.js → status-F00GIQcN.js} +2 -2
  27. package/studio/web/assets/{status-BsW5fjuh.js.map → status-F00GIQcN.js.map} +1 -1
  28. package/studio/web/assets/{swagger-ui-react-DITdeB9-.js → swagger-ui-react-nMokvXmk.js} +2 -2
  29. package/studio/web/assets/{swagger-ui-react-DITdeB9-.js.map → swagger-ui-react-nMokvXmk.js.map} +1 -1
  30. package/studio/web/assets/{tsMode-Dyph-OUs.js → tsMode-CD7Co90y.js} +2 -2
  31. package/studio/web/assets/{tsMode-Dyph-OUs.js.map → tsMode-CD7Co90y.js.map} +1 -1
  32. package/studio/web/assets/{useEntityRestURL-D0QTUqex.js → useEntityRestURL-DzCjVLBd.js} +2 -2
  33. package/studio/web/assets/{useEntityRestURL-D0QTUqex.js.map → useEntityRestURL-DzCjVLBd.js.map} +1 -1
  34. package/studio/web/index.html +1 -1
@@ -1,4 +1,5 @@
1
1
  import { Transaction as LMDBTransaction } from 'lmdb';
2
+ import { ServerError } from '../utility/errors/hdbError.ts';
2
3
  import type { Context, Id } from './ResourceInterface.ts';
3
4
  import { Transaction as RocksTransaction } from '@harperfast/rocksdb-js';
4
5
  import type { RootDatabaseKind } from './databases.ts';
@@ -11,6 +12,14 @@ export declare const TRANSACTION_STATE: {
11
12
  export declare function replicationConfirmation(callback: any): void;
12
13
  declare class StartedTransaction extends Error {
13
14
  }
15
+ /**
16
+ * Built when the long-transaction monitor aborts a write-bearing transaction that stayed open past the
17
+ * limit (STORAGE_MAXTRANSACTIONOPENTIME). Surfacing this instead of silently force-committing a partial
18
+ * write set preserves atomicity and avoids the index corruption described in issue #1407: the
19
+ * application gets an actionable error and owns how it splits long-running work into smaller
20
+ * transactions, while core keeps the consistency guarantee.
21
+ */
22
+ export declare function transactionOpenTooLongError(): ServerError;
14
23
  type MaybePromise<T> = T | Promise<T>;
15
24
  export type CommitOptions = {
16
25
  doneWriting?: boolean;
@@ -72,6 +81,7 @@ export declare class DatabaseTransaction implements Transaction {
72
81
  replicatedConfirmation: number;
73
82
  sourceApply?: boolean;
74
83
  isReplay?: boolean;
84
+ timedOut?: boolean;
75
85
  getReadTxn(): ReadTransaction;
76
86
  useReadTxn(): ReadTransaction;
77
87
  doneReadTxn(): void;
@@ -84,6 +94,23 @@ export declare class DatabaseTransaction implements Transaction {
84
94
  */
85
95
  commit(options?: CommitOptions): MaybePromise<CommitResolution>;
86
96
  abort(): void;
97
+ /**
98
+ * True if this transaction — or any database in its multi-store `next` chain — has writes accumulated
99
+ * that have not yet been committed. Writes to a second database live on `next` (see txnForContext), so a
100
+ * transaction that reads database A (head, tracked via its read snapshot, empty `writes`) and writes
101
+ * database B (`next`) must still count as write-bearing, or the monitor would misclassify it as read-only
102
+ * and force-commit B's writes via the commit cascade (issue #1407, multi-store path).
103
+ */
104
+ hasPendingWrites(): boolean;
105
+ /**
106
+ * Abort and poison this transaction because it exceeded the open-transaction limit. The next write or
107
+ * commit throws transactionOpenTooLongError so the request fails cleanly and rolls back, rather than the
108
+ * monitor force-committing a partial write set on the application's behalf (issue #1407). The whole
109
+ * multi-store `next` chain is poisoned and aborted: writes to a second database live on `next`, so
110
+ * leaving it un-poisoned would let the head's commit cascade force-commit them (or orphan its resources
111
+ * until it self-times-out).
112
+ */
113
+ abortDueToTimeout(): void;
87
114
  directCommitSync(): void;
88
115
  getContext(): Context;
89
116
  setContext(context: any): void;
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.ImmediateTransaction = exports.DatabaseTransaction = exports.TRANSACTION_STATE = void 0;
37
37
  exports.replicationConfirmation = replicationConfirmation;
38
+ exports.transactionOpenTooLongError = transactionOpenTooLongError;
38
39
  exports.setTxnExpiration = setTxnExpiration;
39
40
  const blob_ts_1 = require("./blob.js");
40
41
  const commonUtility_ts_1 = require("../utility/lmdb/commonUtility.js");
@@ -66,6 +67,19 @@ function replicationConfirmation(callback) {
66
67
  let txnExpiration = envMngr.get(hdbTerms_ts_1.CONFIG_PARAMS.STORAGE_MAXTRANSACTIONOPENTIME) ?? 30000;
67
68
  class StartedTransaction extends Error {
68
69
  }
70
+ /**
71
+ * Built when the long-transaction monitor aborts a write-bearing transaction that stayed open past the
72
+ * limit (STORAGE_MAXTRANSACTIONOPENTIME). Surfacing this instead of silently force-committing a partial
73
+ * write set preserves atomicity and avoids the index corruption described in issue #1407: the
74
+ * application gets an actionable error and owns how it splits long-running work into smaller
75
+ * transactions, while core keeps the consistency guarantee.
76
+ */
77
+ function transactionOpenTooLongError() {
78
+ // 422 rather than 503: the condition is deterministic for a given transaction shape, so a retryable
79
+ // status (503/408) would invite clients and gateways to auto-retry the same doomed long transaction.
80
+ // 422 signals the request itself must change (split the work), which is the actionable response.
81
+ return new hdbError_ts_1.ServerError('Transaction was aborted after exceeding the open-transaction limit; split long-running work into smaller transactions', 422);
82
+ }
69
83
  class DatabaseTransaction {
70
84
  #context;
71
85
  writes = []; // the set of writes to commit if the conditions are met
@@ -141,6 +155,8 @@ class DatabaseTransaction {
141
155
  this.overloadChecked = true; // only check this once, don't interrupt ongoing transactions that have already made writes
142
156
  }
143
157
  addWrite(operation) {
158
+ if (this.timedOut)
159
+ throw transactionOpenTooLongError();
144
160
  this.writes.push(operation);
145
161
  if (!operation.deferSave) {
146
162
  // Setting saved to false means to defer saving
@@ -208,6 +224,8 @@ class DatabaseTransaction {
208
224
  * Resolves with information on the timestamp and success of the commit
209
225
  */
210
226
  commit(options = {}) {
227
+ if (this.timedOut)
228
+ throw transactionOpenTooLongError();
211
229
  let transaction = options.transaction ?? this.transaction; // we need to preserve this transaction as we might to resurrect it if we have to retry
212
230
  for (let i = 0; i < this.writes.length; i++) {
213
231
  let operation = this.writes[i];
@@ -408,6 +426,47 @@ class DatabaseTransaction {
408
426
  if (this.#context?.resourceCache)
409
427
  this.#context.resourceCache = null;
410
428
  }
429
+ /**
430
+ * True if this transaction — or any database in its multi-store `next` chain — has writes accumulated
431
+ * that have not yet been committed. Writes to a second database live on `next` (see txnForContext), so a
432
+ * transaction that reads database A (head, tracked via its read snapshot, empty `writes`) and writes
433
+ * database B (`next`) must still count as write-bearing, or the monitor would misclassify it as read-only
434
+ * and force-commit B's writes via the commit cascade (issue #1407, multi-store path).
435
+ */
436
+ hasPendingWrites() {
437
+ for (let txn = this; txn; txn = txn.next) {
438
+ if (txn.writes.some((write) => write))
439
+ return true;
440
+ }
441
+ return false;
442
+ }
443
+ /**
444
+ * Abort and poison this transaction because it exceeded the open-transaction limit. The next write or
445
+ * commit throws transactionOpenTooLongError so the request fails cleanly and rolls back, rather than the
446
+ * monitor force-committing a partial write set on the application's behalf (issue #1407). The whole
447
+ * multi-store `next` chain is poisoned and aborted: writes to a second database live on `next`, so
448
+ * leaving it un-poisoned would let the head's commit cascade force-commit them (or orphan its resources
449
+ * until it self-times-out).
450
+ */
451
+ abortDueToTimeout() {
452
+ // Poison every link first, then abort each, so a throw from one link's abort() can't leave later links
453
+ // in the chain un-poisoned (and thus eligible to be force-committed by a later commit cascade).
454
+ for (let txn = this; txn; txn = txn.next) {
455
+ txn.timedOut = true;
456
+ // Force the CLOSED path when releasing the read snapshot: doneReadTxn() flushes lingering writes via
457
+ // commit() while open === LINGERING, and commit() now throws transactionOpenTooLongError once poisoned.
458
+ // Closing first makes the release discard (abort) the uncommitted writes instead, which is the intent.
459
+ txn.open = exports.TRANSACTION_STATE.CLOSED;
460
+ }
461
+ for (let txn = this; txn; txn = txn.next) {
462
+ try {
463
+ txn.abort();
464
+ }
465
+ catch (error) {
466
+ harperLogger.debug?.(`Error aborting timed-out transaction in chain: ${error.message}`);
467
+ }
468
+ }
469
+ }
411
470
  directCommitSync() {
412
471
  trackedTxns.delete(this);
413
472
  this.transaction?.commitSync();
@@ -457,20 +516,40 @@ function startMonitoringTxns() {
457
516
  for (const txn of trackedTxns) {
458
517
  if (txn.timeout <= 0) {
459
518
  const url = txn.getContext()?.url;
460
- harperLogger.error(`Transaction was open too long and has been committed, from table: ${txn.db?.name + (url ? ' path: ' + url : '')}`, ...(txn.startedFrom ? [`was started from ${txn.startedFrom.resourceName}.${txn.startedFrom.method}`] : []), ...(DEBUG_LONG_TXNS ? ['starting stack trace', txn.stackTraces] : []));
461
- // reset the transaction
462
- try {
463
- const result = txn.commit();
464
- if (result?.then) {
465
- result.catch((error) => {
466
- harperLogger.debug?.(`Error committing timed out transaction: ${error.message}`);
467
- });
519
+ if (txn.hasPendingWrites() && !txn.sourceApply && !txn.isReplay) {
520
+ // Abort and surface an error rather than force-committing a partial write set: silently
521
+ // committing on the application's behalf breaks atomicity and can leave orphaned
522
+ // secondary-index entries that only a full index rebuild repairs (issue #1407). The app
523
+ // owns long-running work (split into smaller transactions); core owns consistency.
524
+ // Canonical-source applies (replication peer / external caching source) and crash-recovery
525
+ // replay are excluded: they have no resubscribe/resume path, so aborting a write would drop
526
+ // it while the resume cursor advances past it — a permanent divergence (harper-pro#348). For
527
+ // those, keep the prior force-commit behavior below.
528
+ harperLogger.error(`Transaction was open too long and has been aborted after exceeding the open-transaction limit, from table: ${txn.db?.name + (url ? ' path: ' + url : '')}`, ...(txn.startedFrom ? [`was started from ${txn.startedFrom.resourceName}.${txn.startedFrom.method}`] : []), ...(DEBUG_LONG_TXNS ? ['starting stack trace', txn.stackTraces] : []));
529
+ try {
530
+ txn.abortDueToTimeout();
531
+ }
532
+ catch (error) {
533
+ harperLogger.debug?.(`Error aborting timed out transaction: ${error.message}`);
468
534
  }
469
535
  }
470
- catch (error) {
471
- harperLogger.debug?.(`Error committing timed out transaction: ${error.message}`);
536
+ else {
537
+ // Read-only long transaction (no atomicity/index risk e.g. a large scan or export), or a
538
+ // canonical-source apply/replay that must never drop a write: preserve the prior behavior of
539
+ // committing to close out the snapshot without poisoning the transaction.
540
+ try {
541
+ const result = txn.commit();
542
+ if (result?.then) {
543
+ result.catch((error) => {
544
+ harperLogger.debug?.(`Error committing timed out transaction: ${error.message}`);
545
+ });
546
+ }
547
+ }
548
+ catch (error) {
549
+ harperLogger.debug?.(`Error committing timed out transaction: ${error.message}`);
550
+ }
551
+ txn.timeout = txnExpiration;
472
552
  }
473
- txn.timeout = txnExpiration;
474
553
  }
475
554
  else {
476
555
  txn.timeout -= txnExpiration;
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseTransaction.js","sourceRoot":"","sources":["../../resources/DatabaseTransaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DatabaseTransaction.js","sourceRoot":"","sources":["../../resources/DatabaseTransaction.ts"],"names":[],"mappings":"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"}
@@ -108,6 +108,8 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
108
108
  }
109
109
  }
110
110
  addWrite(operation) {
111
+ if (this.timedOut)
112
+ throw (0, DatabaseTransaction_1.transactionOpenTooLongError)();
111
113
  if (this.open === exports.TRANSACTION_STATE.CLOSED) {
112
114
  throw new Error('Can not use a transaction that is no longer open');
113
115
  }
@@ -135,6 +137,8 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
135
137
  * Resolves with information on the timestamp and success of the commit
136
138
  */
137
139
  commit(options = {}) {
140
+ if (this.timedOut)
141
+ throw (0, DatabaseTransaction_1.transactionOpenTooLongError)();
138
142
  options = options || {};
139
143
  let txnTime = this.timestamp;
140
144
  if (!txnTime)
@@ -375,10 +379,40 @@ function startMonitoringTxns() {
375
379
  for (const txn of trackedTxns) {
376
380
  if (txn.timeout <= 0) {
377
381
  const url = txn.getContext()?.url;
378
- harperLogger.error(`Transaction was open too long and has been committed, from table: ${txn.db?.name + (url ? ' path: ' + url : '')}`);
379
- // reset the transaction
380
- txn.commit();
381
- txn.timeout = txnExpiration;
382
+ if (txn.hasPendingWrites() && !txn.sourceApply && !txn.isReplay) {
383
+ // Abort and surface an error rather than force-committing a partial write set: silently
384
+ // committing on the application's behalf breaks atomicity and can leave orphaned
385
+ // secondary-index entries that only a full index rebuild repairs (issue #1407). The app
386
+ // owns long-running work (split into smaller transactions); core owns consistency.
387
+ // Canonical-source applies (replication peer / external caching source) and crash-recovery
388
+ // replay are excluded: they have no resubscribe/resume path, so aborting a write would drop
389
+ // it while the resume cursor advances past it — a permanent divergence (harper-pro#348). For
390
+ // those, keep the prior force-commit behavior below.
391
+ harperLogger.error(`Transaction was open too long and has been aborted after exceeding the open-transaction limit, from table: ${txn.db?.name + (url ? ' path: ' + url : '')}`);
392
+ try {
393
+ txn.abortDueToTimeout();
394
+ }
395
+ catch (error) {
396
+ harperLogger.debug?.(`Error aborting timed out transaction: ${error.message}`);
397
+ }
398
+ }
399
+ else {
400
+ // Read-only long transaction (no atomicity/index risk — e.g. a large scan or export), or a
401
+ // canonical-source apply/replay that must never drop a write: preserve the prior behavior of
402
+ // committing to close out the snapshot without poisoning the transaction.
403
+ try {
404
+ const result = txn.commit();
405
+ if (result?.then) {
406
+ result.catch((error) => {
407
+ harperLogger.debug?.(`Error committing timed out transaction: ${error.message}`);
408
+ });
409
+ }
410
+ }
411
+ catch (error) {
412
+ harperLogger.debug?.(`Error committing timed out transaction: ${error.message}`);
413
+ }
414
+ txn.timeout = txnExpiration;
415
+ }
382
416
  }
383
417
  else {
384
418
  txn.timeout -= txnExpiration;
@@ -1 +1 @@
1
- {"version":3,"file":"LMDBTransaction.js","sourceRoot":"","sources":["../../resources/LMDBTransaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LMDBTransaction.js","sourceRoot":"","sources":["../../resources/LMDBTransaction.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "harper",
3
- "version": "5.1.20",
3
+ "version": "5.1.21",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "harper",
9
- "version": "5.1.20",
9
+ "version": "5.1.21",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@aws-sdk/client-s3": "^3.1012.0",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@harperfast/harper",
3
3
  "description": "Harper is an open-source Node.js performance platform that unifies database, cache, application, and messaging layers into one in-memory process.",
4
- "version": "5.1.20",
4
+ "version": "5.1.21",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://harper.fast",
7
7
  "bugs": {
@@ -34,6 +34,23 @@ let txnExpiration = envMngr.get(CONFIG_PARAMS.STORAGE_MAXTRANSACTIONOPENTIME) ??
34
34
 
35
35
  class StartedTransaction extends Error {}
36
36
 
37
+ /**
38
+ * Built when the long-transaction monitor aborts a write-bearing transaction that stayed open past the
39
+ * limit (STORAGE_MAXTRANSACTIONOPENTIME). Surfacing this instead of silently force-committing a partial
40
+ * write set preserves atomicity and avoids the index corruption described in issue #1407: the
41
+ * application gets an actionable error and owns how it splits long-running work into smaller
42
+ * transactions, while core keeps the consistency guarantee.
43
+ */
44
+ export function transactionOpenTooLongError(): ServerError {
45
+ // 422 rather than 503: the condition is deterministic for a given transaction shape, so a retryable
46
+ // status (503/408) would invite clients and gateways to auto-retry the same doomed long transaction.
47
+ // 422 signals the request itself must change (split the work), which is the actionable response.
48
+ return new ServerError(
49
+ 'Transaction was aborted after exceeding the open-transaction limit; split long-running work into smaller transactions',
50
+ 422
51
+ );
52
+ }
53
+
37
54
  type MaybePromise<T> = T | Promise<T>;
38
55
 
39
56
  export type CommitOptions = {
@@ -109,6 +126,10 @@ export class DatabaseTransaction implements Transaction {
109
126
  // An explicit marker rather than overloading `retries`, which is also bumped by transient
110
127
  // conflict retries and never reset, so it cannot reliably signal "this is a replay".
111
128
  declare isReplay?: boolean;
129
+ // Set by the long-transaction monitor when it aborts a write-bearing transaction that exceeded the
130
+ // open-transaction limit. Once poisoned, any further addWrite/commit throws transactionOpenTooLongError
131
+ // so the request rolls back cleanly instead of silently committing a partial write set (issue #1407).
132
+ declare timedOut?: boolean;
112
133
 
113
134
  getReadTxn(): ReadTransaction {
114
135
  this.readTxnRefCount = (this.readTxnRefCount || 0) + 1;
@@ -173,6 +194,7 @@ export class DatabaseTransaction implements Transaction {
173
194
  }
174
195
 
175
196
  addWrite(operation: TransactionWrite) {
197
+ if (this.timedOut) throw transactionOpenTooLongError();
176
198
  this.writes.push(operation);
177
199
  if (!operation.deferSave) {
178
200
  // Setting saved to false means to defer saving
@@ -237,6 +259,7 @@ export class DatabaseTransaction implements Transaction {
237
259
  * Resolves with information on the timestamp and success of the commit
238
260
  */
239
261
  commit(options: CommitOptions = {}): MaybePromise<CommitResolution> {
262
+ if (this.timedOut) throw transactionOpenTooLongError();
240
263
  let transaction = options.transaction ?? this.transaction; // we need to preserve this transaction as we might to resurrect it if we have to retry
241
264
  for (let i = 0; i < this.writes.length; i++) {
242
265
  let operation = this.writes[i];
@@ -445,6 +468,45 @@ export class DatabaseTransaction implements Transaction {
445
468
  this.writes = [];
446
469
  if (this.#context?.resourceCache) this.#context.resourceCache = null;
447
470
  }
471
+ /**
472
+ * True if this transaction — or any database in its multi-store `next` chain — has writes accumulated
473
+ * that have not yet been committed. Writes to a second database live on `next` (see txnForContext), so a
474
+ * transaction that reads database A (head, tracked via its read snapshot, empty `writes`) and writes
475
+ * database B (`next`) must still count as write-bearing, or the monitor would misclassify it as read-only
476
+ * and force-commit B's writes via the commit cascade (issue #1407, multi-store path).
477
+ */
478
+ hasPendingWrites(): boolean {
479
+ for (let txn: DatabaseTransaction = this; txn; txn = txn.next) {
480
+ if (txn.writes.some((write) => write)) return true;
481
+ }
482
+ return false;
483
+ }
484
+ /**
485
+ * Abort and poison this transaction because it exceeded the open-transaction limit. The next write or
486
+ * commit throws transactionOpenTooLongError so the request fails cleanly and rolls back, rather than the
487
+ * monitor force-committing a partial write set on the application's behalf (issue #1407). The whole
488
+ * multi-store `next` chain is poisoned and aborted: writes to a second database live on `next`, so
489
+ * leaving it un-poisoned would let the head's commit cascade force-commit them (or orphan its resources
490
+ * until it self-times-out).
491
+ */
492
+ abortDueToTimeout(): void {
493
+ // Poison every link first, then abort each, so a throw from one link's abort() can't leave later links
494
+ // in the chain un-poisoned (and thus eligible to be force-committed by a later commit cascade).
495
+ for (let txn: DatabaseTransaction = this; txn; txn = txn.next) {
496
+ txn.timedOut = true;
497
+ // Force the CLOSED path when releasing the read snapshot: doneReadTxn() flushes lingering writes via
498
+ // commit() while open === LINGERING, and commit() now throws transactionOpenTooLongError once poisoned.
499
+ // Closing first makes the release discard (abort) the uncommitted writes instead, which is the intent.
500
+ txn.open = TRANSACTION_STATE.CLOSED;
501
+ }
502
+ for (let txn: DatabaseTransaction = this; txn; txn = txn.next) {
503
+ try {
504
+ txn.abort();
505
+ } catch (error) {
506
+ harperLogger.debug?.(`Error aborting timed-out transaction in chain: ${error.message}`);
507
+ }
508
+ }
509
+ }
448
510
  directCommitSync(): void {
449
511
  trackedTxns.delete(this);
450
512
  this.transaction?.commitSync();
@@ -504,25 +566,43 @@ function startMonitoringTxns() {
504
566
  for (const txn of trackedTxns) {
505
567
  if (txn.timeout <= 0) {
506
568
  const url = (txn.getContext() as any)?.url;
507
- harperLogger.error(
508
- `Transaction was open too long and has been committed, from table: ${
509
- (txn.db as any)?.name + (url ? ' path: ' + url : '')
510
- }`,
511
- ...(txn.startedFrom ? [`was started from ${txn.startedFrom.resourceName}.${txn.startedFrom.method}`] : []),
512
- ...(DEBUG_LONG_TXNS ? ['starting stack trace', txn.stackTraces] : [])
513
- );
514
- // reset the transaction
515
- try {
516
- const result = txn.commit();
517
- if ((result as any)?.then) {
518
- (result as any).catch((error) => {
519
- harperLogger.debug?.(`Error committing timed out transaction: ${error.message}`);
520
- });
569
+ if (txn.hasPendingWrites() && !txn.sourceApply && !txn.isReplay) {
570
+ // Abort and surface an error rather than force-committing a partial write set: silently
571
+ // committing on the application's behalf breaks atomicity and can leave orphaned
572
+ // secondary-index entries that only a full index rebuild repairs (issue #1407). The app
573
+ // owns long-running work (split into smaller transactions); core owns consistency.
574
+ // Canonical-source applies (replication peer / external caching source) and crash-recovery
575
+ // replay are excluded: they have no resubscribe/resume path, so aborting a write would drop
576
+ // it while the resume cursor advances past it — a permanent divergence (harper-pro#348). For
577
+ // those, keep the prior force-commit behavior below.
578
+ harperLogger.error(
579
+ `Transaction was open too long and has been aborted after exceeding the open-transaction limit, from table: ${
580
+ (txn.db as any)?.name + (url ? ' path: ' + url : '')
581
+ }`,
582
+ ...(txn.startedFrom ? [`was started from ${txn.startedFrom.resourceName}.${txn.startedFrom.method}`] : []),
583
+ ...(DEBUG_LONG_TXNS ? ['starting stack trace', txn.stackTraces] : [])
584
+ );
585
+ try {
586
+ txn.abortDueToTimeout();
587
+ } catch (error) {
588
+ harperLogger.debug?.(`Error aborting timed out transaction: ${error.message}`);
589
+ }
590
+ } else {
591
+ // Read-only long transaction (no atomicity/index risk — e.g. a large scan or export), or a
592
+ // canonical-source apply/replay that must never drop a write: preserve the prior behavior of
593
+ // committing to close out the snapshot without poisoning the transaction.
594
+ try {
595
+ const result = txn.commit();
596
+ if ((result as any)?.then) {
597
+ (result as any).catch((error) => {
598
+ harperLogger.debug?.(`Error committing timed out transaction: ${error.message}`);
599
+ });
600
+ }
601
+ } catch (error) {
602
+ harperLogger.debug?.(`Error committing timed out transaction: ${error.message}`);
521
603
  }
522
- } catch (error) {
523
- harperLogger.debug?.(`Error committing timed out transaction: ${error.message}`);
604
+ txn.timeout = txnExpiration;
524
605
  }
525
- txn.timeout = txnExpiration;
526
606
  } else {
527
607
  txn.timeout -= txnExpiration;
528
608
  }