@peerbit/shared-log 16.0.32 → 16.0.33

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/README.md CHANGED
@@ -4,6 +4,32 @@ A log that can be replicated
4
4
 
5
5
  ## Persisted delivery recovery
6
6
 
7
+ Transport connections, topic coverage, and persisted-receipt capability are not
8
+ entry-leader eligibility. If the first fresh persisted-delivery leader plan for
9
+ any committed entry is empty or contains only the writer, delivery still fails
10
+ immediately with `NoPeersError` as the cause of `PersistedDeliveryError`; it does
11
+ not wait for initial leader discovery or maturity. The error identifies missing
12
+ eligible remote entry leaders, not necessarily missing network connections.
13
+
14
+ Before a new write, applications can use each relevant log's
15
+ `waitForReplicator(remoteKey, { timeout, signal })`, retaining its default role
16
+ maturity, followed by `waitForPersistedReceiptPeerReadiness(remoteKey, ...)`.
17
+ Do not substitute `waitForReplicators({ coverageThreshold: 1 })`: a full local
18
+ replica can satisfy that coverage without a remote. The default role maturity
19
+ is at least five seconds for replicating writers and can increase with the gap
20
+ between known role timestamps; non-replicating writers use zero. Readiness on
21
+ one log therefore does not establish readiness on another log with a different
22
+ replication role.
23
+
24
+ These waits are advisory, not a guarantee that a future entry will have the
25
+ requested remote leaders. Readiness without `entries` does not check entry
26
+ leadership or role maturity. For already committed entries, its `entries` option
27
+ also requires a fresh leader plan using `replicas` (the total leader-plan degree,
28
+ not `minAcks`). Only the following persisted delivery proves durability. A
29
+ `PersistedDeliveryError` retains exact `committedHashes`,
30
+ `localCommitSucceeded: true`, and `retrySafe: false`; never replay the original
31
+ write merely because its delivery failed.
32
+
7
33
  Persisted delivery maintains bounded advisory recovery for currently selected
8
34
  entry leaders, including incomplete capability/receive state and unconfirmed or
9
35
  replacement V2 sessions. It reuses the persisted-readiness watchdog; readiness
@@ -1,6 +1,6 @@
1
1
  export declare const isNotStartedError: (e: Error) => boolean;
2
2
  export declare class NoPeersError extends Error {
3
- constructor(topic: string);
3
+ constructor(topic: string, delivery?: "persisted");
4
4
  }
5
5
  /**
6
6
  * A persisted-delivery request failed after the entries were committed locally.
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB,GAAI,GAAG,KAAK,YAczC,CAAC;AAEF,qBAAa,YAAa,SAAQ,KAAK;gBAC1B,KAAK,EAAE,MAAM;CAKzB;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAChD,QAAQ,CAAC,oBAAoB,QAAQ;IACrC,QAAQ,CAAC,SAAS,SAAS;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;gBAEhC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC;CAuB7D;AAED;;;;;;;GAOG;AACH,qBAAa,6BAA8B,SAAQ,KAAK;gBAC3C,KAAK,EAAE,OAAO;CAQ1B;AAED;;;;;GAKG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IAClD,QAAQ,CAAC,mBAAmB,QAAQ;IACpC,QAAQ,CAAC,SAAS,SAAS;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAW;gBAGxC,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE;QACT,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;KAC9B;CAwCF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB,GAAI,GAAG,KAAK,YAczC,CAAC;AAEF,qBAAa,YAAa,SAAQ,KAAK;gBAC1B,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW;CAOjD;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAChD,QAAQ,CAAC,oBAAoB,QAAQ;IACrC,QAAQ,CAAC,SAAS,SAAS;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;gBAEhC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC;CAuB7D;AAED;;;;;;;GAOG;AACH,qBAAa,6BAA8B,SAAQ,KAAK;gBAC3C,KAAK,EAAE,OAAO;CAQ1B;AAED;;;;;GAKG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IAClD,QAAQ,CAAC,mBAAmB,QAAQ;IACpC,QAAQ,CAAC,SAAS,SAAS;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAW;gBAGxC,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE;QACT,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;KAC9B;CAwCF"}
@@ -18,8 +18,10 @@ export const isNotStartedError = (e) => {
18
18
  return false;
19
19
  };
20
20
  export class NoPeersError extends Error {
21
- constructor(topic) {
22
- super(`No peers found for topic ${topic}. Please make sure you are connected to the network and try again.`);
21
+ constructor(topic, delivery) {
22
+ super(delivery === "persisted"
23
+ ? `No currently eligible remote entry leaders for persisted delivery on topic ${topic}. Transport connectivity and receipt capability alone do not establish entry-leader eligibility.`
24
+ : `No peers found for topic ${topic}. Please make sure you are connected to the network and try again.`);
23
25
  }
24
26
  }
25
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -3826,7 +3826,7 @@ let SharedLog = (() => {
3826
3826
  needsInitialLeaderCheck = false;
3827
3827
  if (leadersByEntry.some((leaders) => leaders.size === 0 ||
3828
3828
  (leaders.size === 1 && leaders.has(selfHash)))) {
3829
- throw new NoPeersError(this.rpc.topic);
3829
+ throw new NoPeersError(this.rpc.topic, "persisted");
3830
3830
  }
3831
3831
  }
3832
3832
  for (let index = 0; index < entryArray.length; index++) {