Skip to content

Commit 497d67c

Browse files
wemeetagainnflaig
andauthored
fix: use datastore-level by default (#8503)
**Motivation** - Review of #8468 metrics - In #8449, use of `datastore-level` was unilaterally removed in favor of the bun-supported `datastore-fs` - This caused a regression **Description** - use `datastore-level` by default, only use `datastore-fs` in bun --------- Co-authored-by: Nico Flaig <[email protected]>
1 parent 29cdec0 commit 497d67c

File tree

5 files changed

+72
-8
lines changed

5 files changed

+72
-8
lines changed

packages/beacon-node/package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@
6767
"#prometheus-gc-stats-wrapper": {
6868
"bun": "./src/bun-wrappers/prometheus-gc-stats.ts",
6969
"default": "@chainsafe/prometheus-gc-stats"
70+
},
71+
"#datastore-wrapper": {
72+
"bun": "./src/network/peers/datastore_bun.ts",
73+
"default": "datastore-level"
7074
}
7175
},
7276
"typesVersions": {
@@ -149,6 +153,7 @@
149153
"@multiformats/multiaddr": "^12.1.3",
150154
"datastore-core": "^10.0.2",
151155
"datastore-fs": "^10.0.6",
156+
"datastore-level": "^11.0.3",
152157
"deepmerge": "^4.3.1",
153158
"fastify": "^5.2.1",
154159
"interface-datastore": "^8.3.0",

packages/beacon-node/src/network/peers/datastore.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {AbortOptions} from "@libp2p/interface";
22
import {BaseDatastore} from "datastore-core";
3-
import {FsDatastore} from "datastore-fs";
43
import {Key, KeyQuery, Pair, Query} from "interface-datastore";
4+
import {LevelDatastore} from "#datastore-wrapper";
55

66
type MemoryItem = {
77
lastAccessedMs: number;
@@ -22,7 +22,7 @@ type MemoryItem = {
2222
* - Update lastAccessedMs
2323
*/
2424
export class Eth2PeerDataStore extends BaseDatastore {
25-
private _dbDatastore: FsDatastore;
25+
private _dbDatastore: LevelDatastore;
2626
private _memoryDatastore: Map<string, MemoryItem>;
2727
/** Same to PersistentPeerStore of the old libp2p implementation */
2828
private _dirtyItems = new Set<string>();
@@ -32,7 +32,7 @@ export class Eth2PeerDataStore extends BaseDatastore {
3232
private _maxMemoryItems: number;
3333

3434
constructor(
35-
dbDatastore: FsDatastore | string,
35+
dbDatastore: LevelDatastore | string,
3636
{threshold = 5, maxMemoryItems = 50}: {threshold?: number | undefined; maxMemoryItems?: number | undefined} = {}
3737
) {
3838
super();
@@ -44,7 +44,7 @@ export class Eth2PeerDataStore extends BaseDatastore {
4444
throw Error(`Threshold ${threshold} should be at most maxMemoryItems ${maxMemoryItems}`);
4545
}
4646

47-
this._dbDatastore = typeof dbDatastore === "string" ? new FsDatastore(dbDatastore) : dbDatastore;
47+
this._dbDatastore = typeof dbDatastore === "string" ? new LevelDatastore(dbDatastore) : dbDatastore;
4848
this._memoryDatastore = new Map();
4949
this._threshold = threshold;
5050
this._maxMemoryItems = maxMemoryItems;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import {FsDatastore} from "datastore-fs";
2+
3+
export const LevelDatastore = FsDatastore;

packages/beacon-node/test/unit/network/peers/datastore.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
import {FsDatastore} from "datastore-fs";
21
import {Key} from "interface-datastore";
32
import {MockedObject, afterEach, beforeEach, describe, expect, it, vi} from "vitest";
3+
import {LevelDatastore} from "#datastore-wrapper";
44
import {Eth2PeerDataStore} from "../../../../src/network/peers/datastore.js";
55

6-
vi.mock("datastore-fs");
6+
vi.mock(globalThis.Bun ? "datastore-fs" : "datastore-level");
77

88
describe("Eth2PeerDataStore", () => {
99
let eth2Datastore: Eth2PeerDataStore;
10-
let dbDatastoreStub: MockedObject<FsDatastore>;
10+
let dbDatastoreStub: MockedObject<LevelDatastore>;
1111

1212
beforeEach(() => {
1313
vi.useFakeTimers({now: Date.now()});
1414

15-
dbDatastoreStub = vi.mocked(new FsDatastore({} as any));
15+
dbDatastoreStub = vi.mocked(new LevelDatastore({} as any));
1616
eth2Datastore = new Eth2PeerDataStore(dbDatastoreStub, {threshold: 2, maxMemoryItems: 3});
1717

1818
vi.spyOn(dbDatastoreStub, "put").mockResolvedValue({} as any);

yarn.lock

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3984,6 +3984,19 @@ abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3:
39843984
module-error "^1.0.1"
39853985
queue-microtask "^1.2.3"
39863986

3987+
abstract-level@^1.0.4:
3988+
version "1.0.4"
3989+
resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.4.tgz#3ad8d684c51cc9cbc9cf9612a7100b716c414b57"
3990+
integrity sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg==
3991+
dependencies:
3992+
buffer "^6.0.3"
3993+
catering "^2.1.0"
3994+
is-buffer "^2.0.5"
3995+
level-supports "^4.0.0"
3996+
level-transcoder "^1.0.1"
3997+
module-error "^1.0.1"
3998+
queue-microtask "^1.2.3"
3999+
39874000
abstract-logging@^2.0.1:
39884001
version "2.0.1"
39894002
resolved "https://registry.yarnpkg.com/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839"
@@ -5602,6 +5615,21 @@ datastore-fs@^10.0.6:
56025615
race-signal "^2.0.0"
56035616
steno "^4.0.2"
56045617

5618+
datastore-level@^11.0.3:
5619+
version "11.0.4"
5620+
resolved "https://registry.yarnpkg.com/datastore-level/-/datastore-level-11.0.4.tgz#6f9d775ff7166b28558372e38d143424fbaa5b72"
5621+
integrity sha512-vwiOglxBXMhhEa2r5sh3iQrkrnK3HDYT/7V9dAb+/IvKotqHFsyio+tii9XNuWes1bj3yOCIQ/w8kdV3LZ/Glg==
5622+
dependencies:
5623+
datastore-core "^10.0.0"
5624+
interface-datastore "^8.0.0"
5625+
interface-store "^6.0.0"
5626+
it-filter "^3.1.3"
5627+
it-map "^3.1.3"
5628+
it-sort "^3.0.8"
5629+
it-take "^3.0.8"
5630+
level "^8.0.1"
5631+
race-signal "^2.0.0"
5632+
56055633
dateformat@^3.0.3:
56065634
version "3.0.3"
56075635
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
@@ -8024,6 +8052,13 @@ it-filter@^3.1.1:
80248052
dependencies:
80258053
it-peekable "^3.0.0"
80268054

8055+
it-filter@^3.1.3:
8056+
version "3.1.4"
8057+
resolved "https://registry.yarnpkg.com/it-filter/-/it-filter-3.1.4.tgz#bcbeb74edd45c6b8d522e6581edf8a4c0bbb02af"
8058+
integrity sha512-80kWEKgiFEa4fEYD3mwf2uygo1dTQ5Y5midKtL89iXyjinruA/sNXl6iFkTcdNedydjvIsFhWLiqRPQP4fAwWQ==
8059+
dependencies:
8060+
it-peekable "^3.0.0"
8061+
80278062
it-foreach@^2.1.3:
80288063
version "2.1.4"
80298064
resolved "https://registry.yarnpkg.com/it-foreach/-/it-foreach-2.1.4.tgz#f7295feefe40b47569863b34271efc3682f62708"
@@ -8180,6 +8215,13 @@ it-sort@^3.0.6:
81808215
dependencies:
81818216
it-all "^3.0.0"
81828217

8218+
it-sort@^3.0.8:
8219+
version "3.0.9"
8220+
resolved "https://registry.yarnpkg.com/it-sort/-/it-sort-3.0.9.tgz#2a1ffca46c1a947b1f230f6249a2e5484bd9c2cf"
8221+
integrity sha512-jsM6alGaPiQbcAJdzMsuMh00uJcI+kD9TBoScB8TR75zUFOmHvhSsPi+Dmh2zfVkcoca+14EbfeIZZXTUGH63w==
8222+
dependencies:
8223+
it-all "^3.0.0"
8224+
81838225
it-stream-types@^2.0.1, it-stream-types@^2.0.2:
81848226
version "2.0.2"
81858227
resolved "https://registry.yarnpkg.com/it-stream-types/-/it-stream-types-2.0.2.tgz#60bbace90096796b4e6cc3bfab99cf9f2b86c152"
@@ -8190,6 +8232,11 @@ it-take@^3.0.6:
81908232
resolved "https://registry.yarnpkg.com/it-take/-/it-take-3.0.6.tgz#509283b69b88f823350b256392525267609f1925"
81918233
integrity sha512-uqw3MRzf9to1SOLxaureGa73lK8k8ZB/asOApTAkvrzUqCznGtKNgPFH7uYIWlt4UuWq/hU6I+U4Fm5xpjN8Vg==
81928234

8235+
it-take@^3.0.8:
8236+
version "3.0.9"
8237+
resolved "https://registry.yarnpkg.com/it-take/-/it-take-3.0.9.tgz#50c99ef24991f87bc4351a9a537db292e7facfe2"
8238+
integrity sha512-XMeUbnjOcgrhFXPUqa7H0VIjYSV/BvyxxjCp76QHVAFDJw2LmR1SHxUFiqyGeobgzJr7P2ZwSRRJQGn4D2BVlA==
8239+
81938240
jackspeak@^2.0.3:
81948241
version "2.3.3"
81958242
resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.3.tgz#95e4cbcc03b3eb357bf6bcce14a903fb3d1151e1"
@@ -8542,6 +8589,15 @@ level@^8.0.0:
85428589
browser-level "^1.0.1"
85438590
classic-level "^1.2.0"
85448591

8592+
level@^8.0.1:
8593+
version "8.0.1"
8594+
resolved "https://registry.yarnpkg.com/level/-/level-8.0.1.tgz#737161db1bc317193aca4e7b6f436e7e1df64379"
8595+
integrity sha512-oPBGkheysuw7DmzFQYyFe8NAia5jFLAgEnkgWnK3OXAuJr8qFT+xBQIwokAZPME2bhPFzS8hlYcL16m8UZrtwQ==
8596+
dependencies:
8597+
abstract-level "^1.0.4"
8598+
browser-level "^1.0.1"
8599+
classic-level "^1.2.0"
8600+
85458601
85468602
version "7.0.2"
85478603
resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-7.0.2.tgz#7f056c8c933dd9c8ba771fa6493556b53c5aac52"

0 commit comments

Comments
 (0)