From 34b34dfcb4705cc9d327453650f446225a9f4f0b Mon Sep 17 00:00:00 2001 From: Christophe Diederichs Date: Thu, 16 Jan 2025 14:16:08 +0000 Subject: [PATCH 1/3] do not push dependency to atomic session --- index.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 429e9f0..75196ce 100644 --- a/index.js +++ b/index.js @@ -212,13 +212,12 @@ class HypercoreStorage { version: this.core.version, corePointer: this.core.corePointer, dataPointer: this.core.dataPointer, - dependencies: this._addDependency({ dataPointer: this.core.dataPointer, length }) + dependencies: this._addDependency() } const coreTx = new CoreTX(core, this.db, atom.view, []) if (length > 0) coreTx.setHead(head) - coreTx.setDependency(core.dependencies[core.dependencies.length - 1]) await coreTx.flush() @@ -231,7 +230,7 @@ class HypercoreStorage { for (let i = 0; i < this.core.dependencies.length; i++) { const d = this.core.dependencies[i] - if (d.length > dep.length) { + if (dep && d.length > dep.length) { deps.push({ dataPointer: d.dataPointer, length: dep.length }) return deps } @@ -239,7 +238,7 @@ class HypercoreStorage { deps.push(d) } - deps.push(dep) + if (dep) deps.push(dep) return deps } From e3d10fbb30263993899da3677d78287c2096f0af Mon Sep 17 00:00:00 2001 From: Christophe Diederichs Date: Fri, 17 Jan 2025 09:02:29 +0000 Subject: [PATCH 2/3] full copy snapshot dependencies --- index.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 75196ce..5d1cd70 100644 --- a/index.js +++ b/index.js @@ -104,7 +104,7 @@ class HypercoreStorage { } snapshot () { - return new HypercoreStorage(this.store, this.db.snapshot(), this.core, this.view.snapshot(), this.atom) + return new HypercoreStorage(this.store, this.db.snapshot(), cloneCore(this.core), this.view.snapshot(), this.atom) } atomize (atom) { @@ -704,3 +704,17 @@ function createColumnFamily (db) { return db.columnFamily(col) } + +function cloneCore (c) { + const copy = { + dataPointer: c.dataPointer, + corePointer: c.corePointer, + dependencies: [] + } + + for (const { dataPointer, length } of c.dependencies) { + copy.dependencies.push({ dataPointer, length }) + } + + return copy +} From 098092e29182782af380527ec050a8c0f6c4e49c Mon Sep 17 00:00:00 2001 From: Christophe Diederichs Date: Fri, 17 Jan 2025 09:48:15 +0000 Subject: [PATCH 3/3] explicitly pass null --- index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 5d1cd70..67a1f5c 100644 --- a/index.js +++ b/index.js @@ -212,7 +212,7 @@ class HypercoreStorage { version: this.core.version, corePointer: this.core.corePointer, dataPointer: this.core.dataPointer, - dependencies: this._addDependency() + dependencies: this._addDependency(null) } const coreTx = new CoreTX(core, this.db, atom.view, []) @@ -230,7 +230,7 @@ class HypercoreStorage { for (let i = 0; i < this.core.dependencies.length; i++) { const d = this.core.dependencies[i] - if (dep && d.length > dep.length) { + if (dep !== null && d.length > dep.length) { deps.push({ dataPointer: d.dataPointer, length: dep.length }) return deps } @@ -238,7 +238,7 @@ class HypercoreStorage { deps.push(d) } - if (dep) deps.push(dep) + if (dep !== null) deps.push(dep) return deps }