@peerbit/shared-log 12.2.0-369b236 → 12.2.0-6aaa5dd
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/benchmark/pid-convergence.d.ts +2 -0
- package/dist/benchmark/pid-convergence.d.ts.map +1 -0
- package/dist/benchmark/pid-convergence.js +138 -0
- package/dist/benchmark/pid-convergence.js.map +1 -0
- package/dist/benchmark/rateless-iblt-sender-startsync.d.ts +2 -0
- package/dist/benchmark/rateless-iblt-sender-startsync.d.ts.map +1 -0
- package/dist/benchmark/rateless-iblt-sender-startsync.js +104 -0
- package/dist/benchmark/rateless-iblt-sender-startsync.js.map +1 -0
- package/dist/benchmark/rateless-iblt-startsync-cache.d.ts +2 -0
- package/dist/benchmark/rateless-iblt-startsync-cache.d.ts.map +1 -0
- package/dist/benchmark/rateless-iblt-startsync-cache.js +112 -0
- package/dist/benchmark/rateless-iblt-startsync-cache.js.map +1 -0
- package/dist/benchmark/sync-catchup.d.ts +3 -0
- package/dist/benchmark/sync-catchup.d.ts.map +1 -0
- package/dist/benchmark/sync-catchup.js +109 -0
- package/dist/benchmark/sync-catchup.js.map +1 -0
- package/dist/src/index.d.ts +10 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +242 -82
- package/dist/src/index.js.map +1 -1
- package/dist/src/ranges.d.ts +1 -0
- package/dist/src/ranges.d.ts.map +1 -1
- package/dist/src/ranges.js +48 -18
- package/dist/src/ranges.js.map +1 -1
- package/dist/src/sync/index.d.ts +14 -0
- package/dist/src/sync/index.d.ts.map +1 -1
- package/dist/src/sync/rateless-iblt.d.ts +14 -22
- package/dist/src/sync/rateless-iblt.d.ts.map +1 -1
- package/dist/src/sync/rateless-iblt.js +137 -22
- package/dist/src/sync/rateless-iblt.js.map +1 -1
- package/dist/src/sync/simple.d.ts +3 -1
- package/dist/src/sync/simple.d.ts.map +1 -1
- package/dist/src/sync/simple.js +23 -1
- package/dist/src/sync/simple.js.map +1 -1
- package/package.json +18 -18
- package/src/index.ts +306 -126
- package/src/ranges.ts +97 -65
- package/src/sync/index.ts +19 -0
- package/src/sync/rateless-iblt.ts +187 -41
- package/src/sync/simple.ts +25 -2
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAEN,aAAa,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGN,KAAK,KAAK,EAMV,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACN,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,EACL,GAAG,EACH,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,IAAI,EACJ,YAAY,EACZ,KAAK,kBAAkB,EACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAe,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAmBxD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,QAAQ,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EACN,KAAK,uBAAuB,EAE5B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQ3C,OAAO,EACN,OAAO,EACP,OAAO,EACP,KAAK,cAAc,EACnB,KAAK,OAAO,EAIZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EACN,KAAK,eAAe,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,iBAAiB,EACjB,KAAK,yBAAyB,EAC9B,4BAA4B,EAC5B,4BAA4B,EAgB5B,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,KAAK,qBAAqB,EAC1B,2BAA2B,EAC3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,KAAK,qBAAqB,EAC1B,2BAA2B,EAC3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,EACjC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,gBAAgB,EAChB,8BAA8B,EAC9B,6BAA6B,EAG7B,KAAK,iBAAiB,EAOtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EACX,WAAW,EACX,uBAAuB,EACvB,WAAW,EACX,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,2BAA2B,EAC3B,2BAA2B,GAC3B,CAAC;AACF,OAAO,EAAE,KAAK,QAAQ,EAAE,mBAAmB,EAAE,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,YAAY,EACX,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,6BAA6B,GAC7B,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,KAAK,yBAAyB,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,KAAK,eAAe,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,UAAU,EACf,YAAY,GACZ,CAAC;AACF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,CAAC;AACjD,eAAO,MAAM,MAAM,oCAAiC,CAAC;AAmBrD,MAAM,MAAM,wBAAwB,GACjC,OAAO,CAAC,iBAAiB,CAAC,GAC1B;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI;IAChE,MAAM,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,GAAG;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,QAAQ,CAAA;SAAE,CAAC;KACnD,CAAC;CACF,GAAG,CACD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;CAAE,GACjD;IAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAAC,UAAU,EAAE,KAAK,CAAA;CAAE,GAChD;IAAE,MAAM,CAAC,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAA;CAAE,CAChD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACrC,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,qBAAqB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,GAAG,IACrD,yBAAyB,CAAC,CAAC,CAAC,GAC5B,uBAAuB,GACvB,uBAAuB,EAAE,GACzB,MAAM,GACN,OAAO,CAAC;AAEX,KAAK,0BAA0B,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,GAAG,IAAI;IAChE,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;CAClC,CAAC;AACF,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,GAAG,IACzD,qBAAqB,CAAC,CAAC,CAAC,GACxB,0BAA0B,CAAC,CAAC,CAAC,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,CAAC;AA2EzB,UAAU,eAAe,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK;IAChD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,gBAAgB,EAAE,KAAK,UAAU,EAAE;QAClC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,IAAI,CAAC;QACX,uBAAuB,EAAE,OAAO,CAAC;QACjC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;KAC9B,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC;IACzB,gBAAgB,EAAE,KACjB,UAAU,EAAE;QACX,EAAE,CAAC,EAAE,UAAU,CAAC;QAChB,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QAC1B,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,EAAE,iBAAiB,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,SAAS,EAAE,aAAa,CAAA;KAAE,CAAC,KAC1D,yBAAyB,CAAC,CAAC,CAAC,CAAC;CAClC;AA2BD,MAAM,MAAM,gBAAgB,CAC3B,CAAC,EACD,CAAC,SAAS,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EACtC,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,SAAS,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GACnE,CAAC,GACD,KAAK,IACL;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACxE,IAAI,CAAC,EAAE,CACN,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,KAC7C,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,WAAW,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IACzC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,4BAA4B,CAAC,CAAC,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,OAAO,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C,CAAC;AAEF,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAChD,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAI3C,eAAO,MAAM,oBAAoB,IAAI,CAAC;AA0BtC,MAAM,MAAM,IAAI,CACf,CAAC,EACD,CAAC,SAAS,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EACtC,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,SAAS,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GACnE,CAAC,GACD,KAAK,IACL,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEhE,MAAM,MAAM,eAAe,GAAG;IAC7B,MAAM,CAAC,EAAE,IAAI,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG;IACvD,QAAQ,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,KAAK,GAAG,aAAa,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,eAAe,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAAE,SAAS,EAAE,aAAa,CAAA;CAAE,CAAC;AAC/D,MAAM,MAAM,oBAAoB,GAAG;IAAE,SAAS,EAAE,aAAa,CAAA;CAAE,CAAC;AAChE,MAAM,MAAM,sBAAsB,GAAG;IAAE,SAAS,EAAE,aAAa,CAAA;CAAE,CAAC;AAClE,MAAM,MAAM,qBAAqB,GAAG;IAAE,SAAS,EAAE,aAAa,CAAA;CAAE,CAAC;AAEjE,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACrD,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;IACpD,kBAAkB,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAC;IACtD,oBAAoB,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAC1D,mBAAmB,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAC;CACxD;AAED,qBACa,SAAS,CACrB,CAAC,EACD,CAAC,SAAS,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,EAC5C,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,SAAS,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GACnE,CAAC,GACD,KAAK,CACP,SAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,CAAC;IAEhD,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAGZ,GAAG,EAAE,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAG7C,OAAO,CAAC,cAAc,CAAW;IACjC,OAAO,CAAC,sBAAsB,CAAW;IAEzC,OAAO,CAAC,sBAAsB,CAAuC;IACrE,OAAO,CAAC,sBAAsB,CAA6B;IAC3D,OAAO,CAAC,gBAAgB,CAAiB;IACzC,OAAO,CAAC,kBAAkB,CAAiB;IAE3C,iBAAiB,EAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,sBAAsB,CAAW;IAKzC,gBAAgB,EAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5C,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,mBAAmB,CAAqB;IAEhD,OAAO,CAAC,oBAAoB,CAAC,CAEG;IAEhC,OAAO,CAAC,cAAc,CAAC,CAEI;IAC3B,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,sBAAsB,CAAO;IACrC,OAAO,CAAC,eAAe,CAQrB;IAEF,OAAO,CAAC,aAAa,CAQnB;IAGF,eAAe,EAAG,GAAG,CACpB,MAAM,EACN,GAAG,CACF,MAAM,EACN;QACC,KAAK,EAAE,iBAAiB,CAAC;QACzB,OAAO,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;KACvC,CACD,CACD,CAAC;IAEF,OAAO,CAAC,4BAA4B,CAAuB;IAE3D,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,cAAc,CAAU;IAEhC,OAAO,CAAC,IAAI,CAAC,CAEmB;IAGhC,OAAO,CAAC,+BAA+B,CAE1B;IAGb,gBAAgB,EAAG,uBAAuB,CAAC;QAC1C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACpD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC1B,CAAC,CAAC;IACH,OAAO,CAAC,0BAA0B,CAShC;IAEF,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,mCAAmC,CAA4B;IAEvE,OAAO,CAAC,2BAA2B,CAEjC;IAGF,OAAO,CAAC,eAAe,CAAC,CAAS;IAEjC,WAAW,EAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAE7B,QAAQ,EAAG,iBAAiB,CAAC;IAE7B,OAAO,CAAC,QAAQ,CAAC,CAAW;IAE5B,qBAAqB,EAAG,MAAM,CAAC;IAC/B,wBAAwB,EAAG,MAAM,CAAC;IAClC,iBAAiB,EAAG,MAAM,CAAC;IAC3B,wBAAwB,EAAG,MAAM,CAAC;IAElC,qBAAqB,EAAG,wBAAwB,CAAC;IACjD,OAAO,EAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnD,MAAM,EAAG,CAAC,CAAC;IACX,eAAe,EAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACrC,QAAQ,EAAE,GAAG,CAAC;gBAEF,UAAU,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,UAAU,CAAA;KAAE;IAM5C,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,IAAI,qBAAqB,YAExB;IAED,OAAO,KAAK,WAAW,GAEtB;YAGa,OAAO;IAqBf,aAAa;IAOnB,OAAO,CAAC,8BAA8B;YAkBxB,UAAU;IAuNxB,yBAAyB,CAAC,OAAO,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC;IA8B1D,SAAS,CACd,YAAY,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAC5D,OAAO,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,EAAE,CACV,GAAG,EAAE,6BAA6B,GAAG,8BAA8B,KAC/D,IAAI,CAAC;KACV;IA2CI,WAAW,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAAE;YAmDlD,gBAAgB;YA2DhB,8BAA8B;YAgB9B,qCAAqC;YAmBrC,uBAAuB;YAiDvB,mBAAmB;IAgR3B,wBAAwB,CAC7B,KAAK,EAAE,yBAAyB,CAAC,CAAC,CAAC,EAAE,EACrC,OAAO,GAAE;QACR,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,CACV,GAAG,EAAE,6BAA6B,GAAG,8BAA8B,KAC/D,IAAI,CAAC;KACL;IAuCP,OAAO,CAAC,4BAA4B;IAiBpC,wBAAwB,CACvB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC5B,KAAK,CAAC,EAAE,OAAO;YAkBF,+BAA+B;IAYvC,MAAM,CACX,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,SAAS,GAC1C,OAAO,CAAC;QACV,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;KACjC,CAAC;IAiWI,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YA4SpC,uCAAuC;IAgC/C,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B1B,KAAK;IAIL,uBAAuB;IA4EvB,cAAc;IAKpB,IAAI,KAAK,WAER;IAEK,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAU1B,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IA2BzB,QAAQ,CACb,UAAU,EACP;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAA;KAAE,GAC/B;QAAE,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,EAC3C,OAAO,CAAC,EAAE;QACT,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EACH;YACA,uBAAuB,CAAC,EAAE,MAAM,CAAC;SAChC,GACD,OAAO,CAAC;QACX,MAAM,CAAC,EAAE,WAAW,CAAC;KACrB;YAmGY,MAAM;IAsDd,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAUvC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAYtC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxB,SAAS,CACd,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAqeV,2BAA2B,CAAC,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE;IAgBvD,iBAAiB,CAAC,UAAU,CAAC,EAAE;QACpC,uDAAuD;QACvD,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QAC1B,qDAAqD;QACrD,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QAExB,gCAAgC;QAChC,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB;IAUK,wBAAwB;IAUxB,yBAAyB;IAKzB,wBAAwB;IAYxB,6BAA6B;IAQ7B,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAclE,UAAU,CAAC,WAAW,EAAE;QAAE,WAAW,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBrE,IAAI,gBAAgB,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAK1D;IAED,IAAI,qBAAqB,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAKrD;IAED;;OAEG;IACG,cAAc;IAYd,IAAI,CACT,OAAO,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,EAAE,EAC7C,OAAO,CAAC,EAAE;QACT,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EACP,OAAO,GACP;YACA,aAAa,CAAC,EAAE,OAAO,CAAC;YACxB,YAAY,CAAC,EAAE,OAAO,CAAC;SACtB,CAAC;KACL,GACC,OAAO,CAAC,IAAI,CAAC;IA8HV,iBAAiB,CACtB,GAAG,EAAE,aAAa,EAClB,OAAO,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB;IAyHI,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAClC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;KAC1B;YA6Ea,mBAAmB;IA2E3B,iBAAiB,CACtB,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,EACvE,WAAW,EAAE,MAAM;YAUN,cAAc;YAOd,iBAAiB;YAwDjB,iBAAiB;IAIzB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAuDvC,WAAW,CAChB,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,EAC5B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,YAAY,EACnD,OAAO,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAEjC,OAAO,CAAC,EACL;YACA,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;SACzB,GACD,KAAK,CAAC;KACT,GACC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IA4B5C,QAAQ,CACb,UAAU,EAAE;QACX,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACpD,QAAQ,EAAE,MAAM,CAAC;KACjB,EACD,OAAO,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAEjC,OAAO,CAAC,EACL;YACA,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;SACzB,GACD,KAAK,CAAC;KACT,GACC,OAAO,CAAC,OAAO,CAAC;YAaL,YAAY;IA0CpB,oBAAoB,CACzB,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,EACnD,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB,GACC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAM5C,YAAY,CACjB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,OAAO,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB;IAWI,wBAAwB,CAC7B,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,MAAM,EAAE,EAChB,UAAU,EAAE,OAAO;IAwEpB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,sBAAsB;IAc9B,KAAK,CACJ,OAAO,EAAE,GAAG,CACX,MAAM,EACN;QACC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACpD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;KAC5C,CACD,EACD,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GACjD,OAAO,CAAC,GAAG,CAAC,EAAE;IA+OjB;;OAEG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM;IAe5B,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM;IAe/B,YAAY,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE;IAa/C,aAAa,CAAC,OAAO,CAAC,EAAE;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;KACxB;IAIK,mBAAmB,CACxB,eAAe,EACZ,kBAAkB,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAChD,kBAAkB,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAAE;IA6GhD,iBAAiB,CAAC,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC;IAetD,eAAe,CAAC,GAAG,EAAE,WAAW,CAAC,iBAAiB,CAAC;IAenD,sBAAsB;IA2F5B,OAAO,CAAC,qBAAqB;IAgBvB,eAAe;YAoCP,YAAY;IAW1B,cAAc,CAAC,IAAI,EAAE,MAAM;CAG3B"}
|
package/dist/src/index.js
CHANGED
|
@@ -169,10 +169,17 @@ const createIndexableDomainFromResolution = (resolution) => {
|
|
|
169
169
|
export const DEFAULT_MIN_REPLICAS = 2;
|
|
170
170
|
export const WAIT_FOR_REPLICATOR_TIMEOUT = 9000;
|
|
171
171
|
export const WAIT_FOR_ROLE_MATURITY = 5000;
|
|
172
|
-
|
|
172
|
+
// TODO(prune): Investigate if/when a non-zero prune delay is required for correctness
|
|
173
|
+
// (e.g. responsibility/replication-info message reordering in multi-peer scenarios).
|
|
174
|
+
// Prefer making pruning robust without timing-based heuristics.
|
|
175
|
+
export const WAIT_FOR_PRUNE_DELAY = 0;
|
|
173
176
|
const PRUNE_DEBOUNCE_INTERVAL = 500;
|
|
174
177
|
// DONT SET THIS ANY LOWER, because it will make the pid controller unstable as the system responses are not fast enough to updates from the pid controller
|
|
175
178
|
const RECALCULATE_PARTICIPATION_DEBOUNCE_INTERVAL = 1000;
|
|
179
|
+
const RECALCULATE_PARTICIPATION_MIN_RELATIVE_CHANGE = 0.01;
|
|
180
|
+
const RECALCULATE_PARTICIPATION_MIN_RELATIVE_CHANGE_WITH_CPU_LIMIT = 0.005;
|
|
181
|
+
const RECALCULATE_PARTICIPATION_MIN_RELATIVE_CHANGE_WITH_MEMORY_LIMIT = 0.001;
|
|
182
|
+
const RECALCULATE_PARTICIPATION_RELATIVE_DENOMINATOR_FLOOR = 1e-3;
|
|
176
183
|
const DEFAULT_DISTRIBUTION_DEBOUNCE_TIME = 500;
|
|
177
184
|
const getIdForDynamicRange = (publicKey) => {
|
|
178
185
|
return sha256Sync(concat([publicKey.bytes, new TextEncoder().encode("dynamic")]));
|
|
@@ -217,6 +224,7 @@ let SharedLog = (() => {
|
|
|
217
224
|
coordinateToHash;
|
|
218
225
|
recentlyRebalanced;
|
|
219
226
|
uniqueReplicators;
|
|
227
|
+
_replicatorsReconciled;
|
|
220
228
|
/* private _totalParticipation!: number; */
|
|
221
229
|
// gid -> coordinate -> publicKeyHash list (of owners)
|
|
222
230
|
_gidPeersHistory;
|
|
@@ -296,14 +304,6 @@ let SharedLog = (() => {
|
|
|
296
304
|
}
|
|
297
305
|
setupRebalanceDebounceFunction(interval = RECALCULATE_PARTICIPATION_DEBOUNCE_INTERVAL) {
|
|
298
306
|
this.rebalanceParticipationDebounced = undefined;
|
|
299
|
-
// make the rebalancing to respect warmup time
|
|
300
|
-
let intervalTime = interval * 2;
|
|
301
|
-
let timeout = setTimeout(() => {
|
|
302
|
-
intervalTime = interval;
|
|
303
|
-
}, this.timeUntilRoleMaturity);
|
|
304
|
-
this._closeController.signal.addEventListener("abort", () => {
|
|
305
|
-
clearTimeout(timeout);
|
|
306
|
-
});
|
|
307
307
|
this.rebalanceParticipationDebounced = debounceFixedInterval(() => this.rebalanceParticipation(),
|
|
308
308
|
/* Math.max(
|
|
309
309
|
REBALANCE_DEBOUNCE_INTERVAL,
|
|
@@ -312,7 +312,7 @@ let SharedLog = (() => {
|
|
|
312
312
|
REBALANCE_DEBOUNCE_INTERVAL
|
|
313
313
|
)
|
|
314
314
|
) */
|
|
315
|
-
|
|
315
|
+
interval);
|
|
316
316
|
}
|
|
317
317
|
async _replicate(options, { reset, checkDuplicates, announce, mergeSegments, rebalance, } = {}) {
|
|
318
318
|
let offsetWasProvided = false;
|
|
@@ -690,15 +690,29 @@ let SharedLog = (() => {
|
|
|
690
690
|
})
|
|
691
691
|
.all()).map((x) => x.value);
|
|
692
692
|
let prevCount = deleted.length;
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
693
|
+
const existingById = new Map(deleted.map((x) => [x.idString, x]));
|
|
694
|
+
const hasSameRanges = deleted.length === ranges.length &&
|
|
695
|
+
ranges.every((range) => {
|
|
696
|
+
const existing = existingById.get(range.idString);
|
|
697
|
+
return existing != null && existing.equalRange(range);
|
|
698
|
+
});
|
|
699
|
+
// Avoid churn on repeated full-state announcements that don't change any
|
|
700
|
+
// replication ranges. This prevents unnecessary `replication:change`
|
|
701
|
+
// events and rebalancing cascades.
|
|
702
|
+
if (hasSameRanges) {
|
|
703
|
+
diffs = [];
|
|
704
|
+
}
|
|
705
|
+
else {
|
|
706
|
+
await this.replicationIndex.del({ query: { hash: from.hashcode() } });
|
|
707
|
+
diffs = [
|
|
708
|
+
...deleted.map((x) => {
|
|
709
|
+
return { range: x, type: "removed", timestamp };
|
|
710
|
+
}),
|
|
711
|
+
...ranges.map((x) => {
|
|
712
|
+
return { range: x, type: "added", timestamp };
|
|
713
|
+
}),
|
|
714
|
+
];
|
|
715
|
+
}
|
|
702
716
|
isNewReplicator = prevCount === 0 && ranges.length > 0;
|
|
703
717
|
}
|
|
704
718
|
else {
|
|
@@ -716,16 +730,18 @@ let SharedLog = (() => {
|
|
|
716
730
|
existing.push(result.value);
|
|
717
731
|
}
|
|
718
732
|
}
|
|
733
|
+
let prevCountForOwner = undefined;
|
|
719
734
|
if (existing.length === 0) {
|
|
720
|
-
|
|
735
|
+
prevCountForOwner = await this.replicationIndex.count({
|
|
721
736
|
query: new StringMatch({ key: "hash", value: from.hashcode() }),
|
|
722
737
|
});
|
|
723
|
-
isNewReplicator =
|
|
738
|
+
isNewReplicator = prevCountForOwner === 0;
|
|
724
739
|
}
|
|
725
740
|
else {
|
|
726
741
|
isNewReplicator = false;
|
|
727
742
|
}
|
|
728
|
-
if (checkDuplicates
|
|
743
|
+
if (checkDuplicates &&
|
|
744
|
+
(existing.length > 0 || (prevCountForOwner ?? 0) > 0)) {
|
|
729
745
|
let deduplicated = [];
|
|
730
746
|
// TODO also deduplicate/de-overlap among the ranges that ought to be inserted?
|
|
731
747
|
for (const range of ranges) {
|
|
@@ -1252,6 +1268,7 @@ let SharedLog = (() => {
|
|
|
1252
1268
|
this.coordinateToHash = new Cache({ max: 1e6, ttl: 1e4 });
|
|
1253
1269
|
this.recentlyRebalanced = new Cache({ max: 1e4, ttl: 1e5 });
|
|
1254
1270
|
this.uniqueReplicators = new Set();
|
|
1271
|
+
this._replicatorsReconciled = false;
|
|
1255
1272
|
this.openTime = +new Date();
|
|
1256
1273
|
this.oldestOpenTime = this.openTime;
|
|
1257
1274
|
this.distributionDebounceTime =
|
|
@@ -1259,8 +1276,8 @@ let SharedLog = (() => {
|
|
|
1259
1276
|
this.timeUntilRoleMaturity =
|
|
1260
1277
|
options?.timeUntilRoleMaturity ?? WAIT_FOR_ROLE_MATURITY;
|
|
1261
1278
|
this.waitForReplicatorTimeout =
|
|
1262
|
-
options?.waitForReplicatorTimeout
|
|
1263
|
-
this.waitForPruneDelay = options?.waitForPruneDelay
|
|
1279
|
+
options?.waitForReplicatorTimeout ?? WAIT_FOR_REPLICATOR_TIMEOUT;
|
|
1280
|
+
this.waitForPruneDelay = options?.waitForPruneDelay ?? WAIT_FOR_PRUNE_DELAY;
|
|
1264
1281
|
if (this.waitForReplicatorTimeout < this.timeUntilRoleMaturity) {
|
|
1265
1282
|
this.waitForReplicatorTimeout = this.timeUntilRoleMaturity; // does not makes sense to expect a replicator to mature faster than it is reachable
|
|
1266
1283
|
}
|
|
@@ -1380,6 +1397,7 @@ let SharedLog = (() => {
|
|
|
1380
1397
|
rangeIndex: this._replicationRangeIndex,
|
|
1381
1398
|
rpc: this.rpc,
|
|
1382
1399
|
coordinateToHash: this.coordinateToHash,
|
|
1400
|
+
sync: options?.sync,
|
|
1383
1401
|
});
|
|
1384
1402
|
}
|
|
1385
1403
|
else {
|
|
@@ -1390,6 +1408,7 @@ let SharedLog = (() => {
|
|
|
1390
1408
|
rpc: this.rpc,
|
|
1391
1409
|
entryIndex: this.entryCoordinatesIndex,
|
|
1392
1410
|
coordinateToHash: this.coordinateToHash,
|
|
1411
|
+
sync: options?.sync,
|
|
1393
1412
|
});
|
|
1394
1413
|
}
|
|
1395
1414
|
else {
|
|
@@ -1403,6 +1422,7 @@ let SharedLog = (() => {
|
|
|
1403
1422
|
rangeIndex: this._replicationRangeIndex,
|
|
1404
1423
|
rpc: this.rpc,
|
|
1405
1424
|
coordinateToHash: this.coordinateToHash,
|
|
1425
|
+
sync: options?.sync,
|
|
1406
1426
|
});
|
|
1407
1427
|
}
|
|
1408
1428
|
}
|
|
@@ -1470,7 +1490,16 @@ let SharedLog = (() => {
|
|
|
1470
1490
|
async afterOpen() {
|
|
1471
1491
|
await super.afterOpen();
|
|
1472
1492
|
// We do this here, because these calls requires this.closed == false
|
|
1473
|
-
this.pruneOfflineReplicators()
|
|
1493
|
+
void this.pruneOfflineReplicators()
|
|
1494
|
+
.then(() => {
|
|
1495
|
+
this._replicatorsReconciled = true;
|
|
1496
|
+
})
|
|
1497
|
+
.catch((error) => {
|
|
1498
|
+
if (isNotStartedError(error)) {
|
|
1499
|
+
return;
|
|
1500
|
+
}
|
|
1501
|
+
logger.error(error);
|
|
1502
|
+
});
|
|
1474
1503
|
await this.rebalanceParticipation();
|
|
1475
1504
|
// Take into account existing subscription
|
|
1476
1505
|
(await this.node.services.pubsub.getSubscribers(this.topic))?.forEach((v, k) => {
|
|
@@ -1628,13 +1657,29 @@ let SharedLog = (() => {
|
|
|
1628
1657
|
set.add(key);
|
|
1629
1658
|
}
|
|
1630
1659
|
if (options?.reachableOnly) {
|
|
1631
|
-
|
|
1660
|
+
// Prefer the live pubsub subscriber set when filtering reachability.
|
|
1661
|
+
// `uniqueReplicators` is primarily driven by replication messages and can lag during
|
|
1662
|
+
// joins/restarts; using subscribers prevents excluding peers that are reachable but
|
|
1663
|
+
// whose replication ranges were loaded from disk or haven't been processed yet.
|
|
1664
|
+
const subscribers = (await this.node.services.pubsub.getSubscribers(this.topic)) ??
|
|
1665
|
+
undefined;
|
|
1666
|
+
const subscriberHashcodes = subscribers
|
|
1667
|
+
? new Set(subscribers.map((key) => key.hashcode()))
|
|
1668
|
+
: undefined;
|
|
1669
|
+
const reachable = [];
|
|
1670
|
+
const selfHash = this.node.identity.publicKey.hashcode();
|
|
1632
1671
|
for (const peer of set) {
|
|
1633
|
-
if (
|
|
1634
|
-
|
|
1672
|
+
if (peer === selfHash) {
|
|
1673
|
+
reachable.push(peer);
|
|
1674
|
+
continue;
|
|
1675
|
+
}
|
|
1676
|
+
if (subscriberHashcodes
|
|
1677
|
+
? subscriberHashcodes.has(peer)
|
|
1678
|
+
: this.uniqueReplicators.has(peer)) {
|
|
1679
|
+
reachable.push(peer);
|
|
1635
1680
|
}
|
|
1636
1681
|
}
|
|
1637
|
-
return
|
|
1682
|
+
return reachable;
|
|
1638
1683
|
}
|
|
1639
1684
|
return [...set];
|
|
1640
1685
|
}
|
|
@@ -1974,15 +2019,15 @@ let SharedLog = (() => {
|
|
|
1974
2019
|
await this.remoteBlocks.onMessage(msg.message, context.from.hashcode());
|
|
1975
2020
|
}
|
|
1976
2021
|
else if (msg instanceof RequestReplicationInfoMessage) {
|
|
1977
|
-
// TODO this message type is never used, should we remove it?
|
|
1978
2022
|
if (context.from.equals(this.node.identity.publicKey)) {
|
|
1979
2023
|
return;
|
|
1980
2024
|
}
|
|
1981
|
-
await this.
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
mode: new
|
|
1985
|
-
})
|
|
2025
|
+
const segments = (await this.getMyReplicationSegments()).map((x) => x.toReplicationRange());
|
|
2026
|
+
this.rpc
|
|
2027
|
+
.send(new AllReplicatingSegmentsMessage({ segments }), {
|
|
2028
|
+
mode: new SeekDelivery({ to: [context.from], redundancy: 1 }),
|
|
2029
|
+
})
|
|
2030
|
+
.catch((e) => logger.error(e.toString()));
|
|
1986
2031
|
// for backwards compatibility (v8) remove this when we are sure that all nodes are v9+
|
|
1987
2032
|
if (this.v8Behaviour) {
|
|
1988
2033
|
const role = this.getRole();
|
|
@@ -2006,38 +2051,32 @@ let SharedLog = (() => {
|
|
|
2006
2051
|
if (context.from.equals(this.node.identity.publicKey)) {
|
|
2007
2052
|
return;
|
|
2008
2053
|
}
|
|
2009
|
-
|
|
2010
|
-
//
|
|
2011
|
-
//
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
.
|
|
2017
|
-
|
|
2018
|
-
// and do them in the right order
|
|
2019
|
-
const prev = this.latestReplicationInfoMessage.get(context.from.hashcode());
|
|
2020
|
-
if (prev && prev > context.message.header.timestamp) {
|
|
2054
|
+
const replicationInfoMessage = msg;
|
|
2055
|
+
// Process replication updates even if the sender isn't yet considered "ready" by
|
|
2056
|
+
// `Program.waitFor()`. Dropping these messages can lead to missing replicator info
|
|
2057
|
+
// (and downstream `waitForReplicator()` timeouts) under timing-sensitive joins.
|
|
2058
|
+
const from = context.from;
|
|
2059
|
+
const messageTimestamp = context.message.header.timestamp;
|
|
2060
|
+
(async () => {
|
|
2061
|
+
const prev = this.latestReplicationInfoMessage.get(from.hashcode());
|
|
2062
|
+
if (prev && prev > messageTimestamp) {
|
|
2021
2063
|
return;
|
|
2022
2064
|
}
|
|
2023
|
-
this.latestReplicationInfoMessage.set(
|
|
2024
|
-
let reset = msg instanceof AllReplicatingSegmentsMessage;
|
|
2065
|
+
this.latestReplicationInfoMessage.set(from.hashcode(), messageTimestamp);
|
|
2025
2066
|
if (this.closed) {
|
|
2026
2067
|
return;
|
|
2027
2068
|
}
|
|
2028
|
-
|
|
2069
|
+
const reset = msg instanceof AllReplicatingSegmentsMessage;
|
|
2070
|
+
await this.addReplicationRange(replicationInfoMessage.segments.map((x) => x.toReplicationRangeIndexable(from)), from, {
|
|
2029
2071
|
reset,
|
|
2030
2072
|
checkDuplicates: true,
|
|
2031
|
-
timestamp: Number(
|
|
2073
|
+
timestamp: Number(messageTimestamp),
|
|
2032
2074
|
});
|
|
2033
|
-
|
|
2034
|
-
})
|
|
2035
|
-
.catch((e) => {
|
|
2075
|
+
})().catch((e) => {
|
|
2036
2076
|
if (isNotStartedError(e)) {
|
|
2037
2077
|
return;
|
|
2038
2078
|
}
|
|
2039
|
-
logger.error(
|
|
2040
|
-
e?.message);
|
|
2079
|
+
logger.error(`Failed to apply replication settings from '${from.hashcode()}': ${e?.message ?? e}`);
|
|
2041
2080
|
});
|
|
2042
2081
|
}
|
|
2043
2082
|
else if (msg instanceof StoppedReplicating) {
|
|
@@ -2178,15 +2217,17 @@ let SharedLog = (() => {
|
|
|
2178
2217
|
}
|
|
2179
2218
|
async join(entries, options) {
|
|
2180
2219
|
let entriesToReplicate = [];
|
|
2181
|
-
if (options?.replicate) {
|
|
2220
|
+
if (options?.replicate && this.log.length > 0) {
|
|
2182
2221
|
// TODO this block should perhaps be called from a callback on the this.log.join method on all the ignored element because already joined, like "onAlreadyJoined"
|
|
2183
2222
|
// check which entrise we already have but not are replicating, and replicate them
|
|
2184
2223
|
// we can not just do the 'join' call because it will ignore the already joined entries
|
|
2185
2224
|
for (const element of entries) {
|
|
2186
2225
|
if (typeof element === "string") {
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2226
|
+
if (await this.log.has(element)) {
|
|
2227
|
+
const entry = await this.log.get(element);
|
|
2228
|
+
if (entry) {
|
|
2229
|
+
entriesToReplicate.push(entry);
|
|
2230
|
+
}
|
|
2190
2231
|
}
|
|
2191
2232
|
}
|
|
2192
2233
|
else if (element instanceof Entry) {
|
|
@@ -2195,9 +2236,11 @@ let SharedLog = (() => {
|
|
|
2195
2236
|
}
|
|
2196
2237
|
}
|
|
2197
2238
|
else {
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2239
|
+
if (await this.log.has(element.hash)) {
|
|
2240
|
+
const entry = await this.log.get(element.hash);
|
|
2241
|
+
if (entry) {
|
|
2242
|
+
entriesToReplicate.push(entry);
|
|
2243
|
+
}
|
|
2201
2244
|
}
|
|
2202
2245
|
}
|
|
2203
2246
|
}
|
|
@@ -2290,6 +2333,7 @@ let SharedLog = (() => {
|
|
|
2290
2333
|
: (options?.roleAge ?? (await this.getDefaultMinRoleAge()));
|
|
2291
2334
|
let settled = false;
|
|
2292
2335
|
let timer;
|
|
2336
|
+
let requestTimer;
|
|
2293
2337
|
const clear = () => {
|
|
2294
2338
|
this.events.removeEventListener("replicator:mature", check);
|
|
2295
2339
|
this.events.removeEventListener("replication:change", check);
|
|
@@ -2298,6 +2342,10 @@ let SharedLog = (() => {
|
|
|
2298
2342
|
clearTimeout(timer);
|
|
2299
2343
|
timer = undefined;
|
|
2300
2344
|
}
|
|
2345
|
+
if (requestTimer != null) {
|
|
2346
|
+
clearTimeout(requestTimer);
|
|
2347
|
+
requestTimer = undefined;
|
|
2348
|
+
}
|
|
2301
2349
|
};
|
|
2302
2350
|
const resolve = () => {
|
|
2303
2351
|
if (settled) {
|
|
@@ -2322,6 +2370,31 @@ let SharedLog = (() => {
|
|
|
2322
2370
|
timer = setTimeout(() => {
|
|
2323
2371
|
reject(new TimeoutError(`Timeout waiting for replicator ${key.hashcode()}`));
|
|
2324
2372
|
}, timeoutMs);
|
|
2373
|
+
let requestAttempts = 0;
|
|
2374
|
+
const requestIntervalMs = 1000;
|
|
2375
|
+
const maxRequestAttempts = Math.max(3, Math.ceil(timeoutMs / requestIntervalMs));
|
|
2376
|
+
const requestReplicationInfo = () => {
|
|
2377
|
+
if (settled || this.closed) {
|
|
2378
|
+
return;
|
|
2379
|
+
}
|
|
2380
|
+
if (requestAttempts >= maxRequestAttempts) {
|
|
2381
|
+
return;
|
|
2382
|
+
}
|
|
2383
|
+
requestAttempts++;
|
|
2384
|
+
this.rpc
|
|
2385
|
+
.send(new RequestReplicationInfoMessage(), {
|
|
2386
|
+
mode: new SeekDelivery({ redundancy: 1, to: [key] }),
|
|
2387
|
+
})
|
|
2388
|
+
.catch((e) => {
|
|
2389
|
+
// Best-effort: missing peers / unopened RPC should not fail the wait logic.
|
|
2390
|
+
if (isNotStartedError(e)) {
|
|
2391
|
+
return;
|
|
2392
|
+
}
|
|
2393
|
+
});
|
|
2394
|
+
if (requestAttempts < maxRequestAttempts) {
|
|
2395
|
+
requestTimer = setTimeout(requestReplicationInfo, requestIntervalMs);
|
|
2396
|
+
}
|
|
2397
|
+
};
|
|
2325
2398
|
const check = async () => {
|
|
2326
2399
|
const iterator = this.replicationIndex?.iterate({ query: new StringMatch({ key: "hash", value: key.hashcode() }) }, { reference: true });
|
|
2327
2400
|
try {
|
|
@@ -2344,6 +2417,7 @@ let SharedLog = (() => {
|
|
|
2344
2417
|
await iterator?.close();
|
|
2345
2418
|
}
|
|
2346
2419
|
};
|
|
2420
|
+
requestReplicationInfo();
|
|
2347
2421
|
check();
|
|
2348
2422
|
this.events.addEventListener("replicator:mature", check);
|
|
2349
2423
|
this.events.addEventListener("replication:change", check);
|
|
@@ -2501,15 +2575,49 @@ let SharedLog = (() => {
|
|
|
2501
2575
|
if (this._isReplicating === false) {
|
|
2502
2576
|
return 0;
|
|
2503
2577
|
}
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2578
|
+
// Explicitly disable maturity gating (used by many tests).
|
|
2579
|
+
if (this.timeUntilRoleMaturity <= 0) {
|
|
2580
|
+
return 0;
|
|
2581
|
+
}
|
|
2582
|
+
// If we're alone (or pubsub isn't ready), a fixed maturity time is sufficient.
|
|
2583
|
+
// When there are multiple replicators we want a stable threshold that doesn't
|
|
2584
|
+
// depend on "now" (otherwise it can drift and turn into a flake).
|
|
2585
|
+
let subscribers = 1;
|
|
2586
|
+
if (!this.rpc.closed) {
|
|
2587
|
+
try {
|
|
2588
|
+
subscribers =
|
|
2589
|
+
(await this.node.services.pubsub.getSubscribers(this.rpc.topic))
|
|
2590
|
+
?.length ?? 1;
|
|
2591
|
+
}
|
|
2592
|
+
catch {
|
|
2593
|
+
// Best-effort only; fall back to 1.
|
|
2594
|
+
}
|
|
2595
|
+
}
|
|
2596
|
+
if (subscribers <= 1) {
|
|
2597
|
+
return this.timeUntilRoleMaturity;
|
|
2598
|
+
}
|
|
2599
|
+
// Use replication range timestamps to compute a stable "age gap" between the
|
|
2600
|
+
// newest and oldest known roles. This keeps the oldest role mature while
|
|
2601
|
+
// preventing newer roles from being treated as mature purely because time
|
|
2602
|
+
// passes between test steps / network events.
|
|
2603
|
+
let newestOpenTime = this.openTime;
|
|
2604
|
+
try {
|
|
2605
|
+
const newestIterator = await this.replicationIndex.iterate({
|
|
2606
|
+
sort: [new Sort({ key: "timestamp", direction: "desc" })],
|
|
2607
|
+
}, { shape: { timestamp: true }, reference: true });
|
|
2608
|
+
const newestTimestampFromDB = (await newestIterator.next(1))[0]?.value
|
|
2609
|
+
.timestamp;
|
|
2610
|
+
await newestIterator.close();
|
|
2611
|
+
if (newestTimestampFromDB != null) {
|
|
2612
|
+
newestOpenTime = Number(newestTimestampFromDB);
|
|
2613
|
+
}
|
|
2614
|
+
}
|
|
2615
|
+
catch {
|
|
2616
|
+
// Best-effort only; fall back to local open time.
|
|
2617
|
+
}
|
|
2618
|
+
const ageGapToOldest = newestOpenTime - this.oldestOpenTime;
|
|
2619
|
+
const roleAge = Math.max(this.timeUntilRoleMaturity, ageGapToOldest);
|
|
2620
|
+
return roleAge < 0 ? 0 : roleAge;
|
|
2513
2621
|
}
|
|
2514
2622
|
async findLeaders(cursors, entry, options) {
|
|
2515
2623
|
// we consume a list of coordinates in this method since if we are leader of one coordinate we want to persist all of them
|
|
@@ -2545,8 +2653,32 @@ let SharedLog = (() => {
|
|
|
2545
2653
|
}
|
|
2546
2654
|
async _findLeaders(cursors, options) {
|
|
2547
2655
|
const roleAge = options?.roleAge ?? (await this.getDefaultMinRoleAge()); // TODO -500 as is added so that i f someone else is just as new as us, then we treat them as mature as us. without -500 we might be slower syncing if two nodes starts almost at the same time
|
|
2656
|
+
const selfHash = this.node.identity.publicKey.hashcode();
|
|
2657
|
+
// Use `uniqueReplicators` (replicator cache) once we've reconciled it against the
|
|
2658
|
+
// persisted replication index. Until then, fall back to live pubsub subscribers
|
|
2659
|
+
// and avoid relying on `uniqueReplicators` being complete.
|
|
2660
|
+
let peerFilter = undefined;
|
|
2661
|
+
if (this._replicatorsReconciled && this.uniqueReplicators.size > 0) {
|
|
2662
|
+
peerFilter = this.uniqueReplicators.has(selfHash)
|
|
2663
|
+
? this.uniqueReplicators
|
|
2664
|
+
: new Set([...this.uniqueReplicators, selfHash]);
|
|
2665
|
+
}
|
|
2666
|
+
else {
|
|
2667
|
+
try {
|
|
2668
|
+
const subscribers = (await this.node.services.pubsub.getSubscribers(this.topic)) ??
|
|
2669
|
+
undefined;
|
|
2670
|
+
if (subscribers && subscribers.length > 0) {
|
|
2671
|
+
peerFilter = new Set(subscribers.map((key) => key.hashcode()));
|
|
2672
|
+
peerFilter.add(selfHash);
|
|
2673
|
+
}
|
|
2674
|
+
}
|
|
2675
|
+
catch {
|
|
2676
|
+
// Best-effort only; if pubsub isn't ready, do a full scan.
|
|
2677
|
+
}
|
|
2678
|
+
}
|
|
2548
2679
|
return getSamples(cursors, this.replicationIndex, roleAge, this.indexableDomain.numbers, {
|
|
2549
|
-
|
|
2680
|
+
peerFilter,
|
|
2681
|
+
uniqueReplicators: peerFilter,
|
|
2550
2682
|
});
|
|
2551
2683
|
}
|
|
2552
2684
|
async findLeadersFromEntry(entry, replicas, options) {
|
|
@@ -2575,7 +2707,7 @@ let SharedLog = (() => {
|
|
|
2575
2707
|
for (const [k, v] of this._requestIPruneResponseReplicatorSet) {
|
|
2576
2708
|
v.delete(publicKey.hashcode());
|
|
2577
2709
|
if (v.size === 0) {
|
|
2578
|
-
this.
|
|
2710
|
+
this._requestIPruneResponseReplicatorSet.delete(k);
|
|
2579
2711
|
}
|
|
2580
2712
|
}
|
|
2581
2713
|
this.syncronizer.onPeerDisconnected(publicKey);
|
|
@@ -2605,6 +2737,14 @@ let SharedLog = (() => {
|
|
|
2605
2737
|
.catch((e) => logger.error(e.toString()));
|
|
2606
2738
|
}
|
|
2607
2739
|
}
|
|
2740
|
+
// Request the remote peer's replication info. This makes joins resilient to
|
|
2741
|
+
// timing-sensitive delivery/order issues where we may miss their initial
|
|
2742
|
+
// replication announcement.
|
|
2743
|
+
this.rpc
|
|
2744
|
+
.send(new RequestReplicationInfoMessage(), {
|
|
2745
|
+
mode: new SeekDelivery({ redundancy: 1, to: [publicKey] }),
|
|
2746
|
+
})
|
|
2747
|
+
.catch((e) => logger.error(e.toString()));
|
|
2608
2748
|
}
|
|
2609
2749
|
else {
|
|
2610
2750
|
await this.removeReplicator(publicKey);
|
|
@@ -2725,9 +2865,19 @@ let SharedLog = (() => {
|
|
|
2725
2865
|
deferredPromise.reject(e);
|
|
2726
2866
|
};
|
|
2727
2867
|
let cursor = undefined;
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2868
|
+
// Checked prune requests can legitimately take longer than a fixed 10s:
|
|
2869
|
+
// - The remote may not have the entry yet and will wait up to `_respondToIHaveTimeout`
|
|
2870
|
+
// - Leadership/replicator information may take up to `waitForReplicatorTimeout` to settle
|
|
2871
|
+
// If we time out too early we can end up with permanently prunable heads that never
|
|
2872
|
+
// get retried (a common CI flake in "prune before join" tests).
|
|
2873
|
+
const checkedPruneTimeoutMs = options?.timeout ??
|
|
2874
|
+
Math.max(10_000, Number(this._respondToIHaveTimeout ?? 0) +
|
|
2875
|
+
this.waitForReplicatorTimeout +
|
|
2876
|
+
PRUNE_DEBOUNCE_INTERVAL * 2);
|
|
2877
|
+
const timeout = setTimeout(() => {
|
|
2878
|
+
reject(new Error(`Timeout for checked pruning after ${checkedPruneTimeoutMs}ms (closed=${this.closed})`));
|
|
2879
|
+
}, checkedPruneTimeoutMs);
|
|
2880
|
+
timeout.unref?.();
|
|
2731
2881
|
this._pendingDeletes.set(entry.hash, {
|
|
2732
2882
|
promise: deferredPromise,
|
|
2733
2883
|
clear,
|
|
@@ -2835,8 +2985,8 @@ let SharedLog = (() => {
|
|
|
2835
2985
|
return { range: x, type: "added", timestamp };
|
|
2836
2986
|
}));
|
|
2837
2987
|
}
|
|
2838
|
-
async waitForPruned() {
|
|
2839
|
-
await waitFor(() => this._pendingDeletes.size === 0);
|
|
2988
|
+
async waitForPruned(options) {
|
|
2989
|
+
await waitFor(() => this._pendingDeletes.size === 0, options);
|
|
2840
2990
|
}
|
|
2841
2991
|
async onReplicationChange(changeOrChanges) {
|
|
2842
2992
|
/**
|
|
@@ -2953,9 +3103,19 @@ let SharedLog = (() => {
|
|
|
2953
3103
|
peerCount: peersSize,
|
|
2954
3104
|
cpuUsage: this.cpuUsage?.value(),
|
|
2955
3105
|
});
|
|
2956
|
-
const
|
|
2957
|
-
|
|
2958
|
-
|
|
3106
|
+
const absoluteDifference = Math.abs(dynamicRange.widthNormalized - newFactor);
|
|
3107
|
+
const relativeDifference = absoluteDifference /
|
|
3108
|
+
Math.max(dynamicRange.widthNormalized, RECALCULATE_PARTICIPATION_RELATIVE_DENOMINATOR_FLOOR);
|
|
3109
|
+
let minRelativeChange = RECALCULATE_PARTICIPATION_MIN_RELATIVE_CHANGE;
|
|
3110
|
+
if (this.replicationController.maxMemoryLimit != null) {
|
|
3111
|
+
minRelativeChange =
|
|
3112
|
+
RECALCULATE_PARTICIPATION_MIN_RELATIVE_CHANGE_WITH_MEMORY_LIMIT;
|
|
3113
|
+
}
|
|
3114
|
+
else if (this.replicationController.maxCPUUsage != null) {
|
|
3115
|
+
minRelativeChange =
|
|
3116
|
+
RECALCULATE_PARTICIPATION_MIN_RELATIVE_CHANGE_WITH_CPU_LIMIT;
|
|
3117
|
+
}
|
|
3118
|
+
if (relativeDifference > minRelativeChange) {
|
|
2959
3119
|
// TODO can not reuse old range, since it will (potentially) affect the index because of sideeffects
|
|
2960
3120
|
dynamicRange = new this.indexableDomain.constructorRange({
|
|
2961
3121
|
offset: dynamicRange.start1,
|