@aztec/kv-store 0.73.0 → 0.74.0
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/dest/lmdb-v2/factory.d.ts +2 -0
- package/dest/lmdb-v2/factory.d.ts.map +1 -1
- package/dest/lmdb-v2/factory.js +6 -1
- package/dest/lmdb-v2/store.d.ts +2 -0
- package/dest/lmdb-v2/store.d.ts.map +1 -1
- package/dest/lmdb-v2/store.js +26 -4
- package/package.json +5 -5
- package/src/lmdb-v2/factory.ts +10 -0
- package/src/lmdb-v2/store.ts +29 -3
|
@@ -4,4 +4,6 @@ import { AztecLMDBStoreV2 } from './store.js';
|
|
|
4
4
|
export declare function createStore(name: string, config: DataStoreConfig, log?: Logger): Promise<AztecLMDBStoreV2>;
|
|
5
5
|
export declare function openTmpStore(name: string, ephemeral?: boolean, dbMapSizeKb?: number, // 10GB
|
|
6
6
|
maxReaders?: number, log?: Logger): Promise<AztecLMDBStoreV2>;
|
|
7
|
+
export declare function openStoreAt(dataDir: string, dbMapSizeKb?: number, // 10GB
|
|
8
|
+
maxReaders?: number, log?: Logger): Promise<AztecLMDBStoreV2>;
|
|
7
9
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAMlE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK9C,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,GAAG,GAAE,MAAiD,GACrD,OAAO,CAAC,gBAAgB,CAAC,CAsC3B;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,OAAc,EACzB,WAAW,SAAqB,EAAE,OAAO;AACzC,UAAU,SAAc,EACxB,GAAG,GAAE,MAAiD,GACrD,OAAO,CAAC,gBAAgB,CAAC,CAe3B"}
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAMlE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK9C,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,GAAG,GAAE,MAAiD,GACrD,OAAO,CAAC,gBAAgB,CAAC,CAsC3B;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,OAAc,EACzB,WAAW,SAAqB,EAAE,OAAO;AACzC,UAAU,SAAc,EACxB,GAAG,GAAE,MAAiD,GACrD,OAAO,CAAC,gBAAgB,CAAC,CAe3B;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,WAAW,SAAqB,EAAE,OAAO;AACzC,UAAU,SAAc,EACxB,GAAG,GAAE,MAAyC,GAC7C,OAAO,CAAC,gBAAgB,CAAC,CAG3B"}
|
package/dest/lmdb-v2/factory.js
CHANGED
|
@@ -53,4 +53,9 @@ maxReaders = MAX_READERS, log = createLogger('kv-store:lmdb-v2:' + name)) {
|
|
|
53
53
|
};
|
|
54
54
|
return AztecLMDBStoreV2.new(dataDir, dbMapSizeKb, maxReaders, cleanup, log);
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
export function openStoreAt(dataDir, dbMapSizeKb = 10 * 1024 * 1024, // 10GB
|
|
57
|
+
maxReaders = MAX_READERS, log = createLogger('kv-store:lmdb-v2')) {
|
|
58
|
+
log.debug(`Opening data store at: ${dataDir} with size: ${dbMapSizeKb} KB (LMDB v2)`);
|
|
59
|
+
return AztecLMDBStoreV2.new(dataDir, dbMapSizeKb, maxReaders, undefined, log);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sbWRiLXYyL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBZSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTlDLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUM7QUFDN0MsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBRXZCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUMvQixJQUFZLEVBQ1osTUFBdUIsRUFDdkIsTUFBYyxZQUFZLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBRXRELE1BQU0sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTlDLElBQUksS0FBdUIsQ0FBQztJQUM1QixJQUFJLE9BQU8sYUFBYSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekMsTUFBTSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFekMsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsV0FBVyxDQUFDO1lBQ3RDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxR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
|
package/dest/lmdb-v2/store.d.ts
CHANGED
|
@@ -13,11 +13,13 @@ export declare class AztecLMDBStoreV2 implements AztecAsyncKVStore, LMDBMessageC
|
|
|
13
13
|
private dataDir;
|
|
14
14
|
private log;
|
|
15
15
|
private cleanup?;
|
|
16
|
+
private open;
|
|
16
17
|
private channel;
|
|
17
18
|
private writerCtx;
|
|
18
19
|
private writerQueue;
|
|
19
20
|
private availableCursors;
|
|
20
21
|
private constructor();
|
|
22
|
+
get dataDirectory(): string;
|
|
21
23
|
private start;
|
|
22
24
|
static new(dataDir: string, dbMapSizeKb?: number, maxReaders?: number, cleanup?: () => Promise<void>, log?: Logger): Promise<AztecLMDBStoreV2>;
|
|
23
25
|
getReadTx(): ReadTransaction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAOlE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAEL,KAAK,kBAAkB,EACvB,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,qBAAa,gBAAiB,YAAW,iBAAiB,EAAE,kBAAkB;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/store.ts"],"names":[],"mappings":"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"}
|
package/dest/lmdb-v2/store.js
CHANGED
|
@@ -13,6 +13,7 @@ export class AztecLMDBStoreV2 {
|
|
|
13
13
|
this.dataDir = dataDir;
|
|
14
14
|
this.log = log;
|
|
15
15
|
this.cleanup = cleanup;
|
|
16
|
+
this.open = false;
|
|
16
17
|
this.writerCtx = new AsyncLocalStorage();
|
|
17
18
|
this.writerQueue = new SerialQueue();
|
|
18
19
|
this.log.info(`Starting data store with maxReaders ${maxReaders}`);
|
|
@@ -20,16 +21,20 @@ export class AztecLMDBStoreV2 {
|
|
|
20
21
|
// leave one reader to always be available for regular, atomic, reads
|
|
21
22
|
this.availableCursors = new Semaphore(maxReaders - 1);
|
|
22
23
|
}
|
|
24
|
+
get dataDirectory() {
|
|
25
|
+
return this.dataDir;
|
|
26
|
+
}
|
|
23
27
|
async start() {
|
|
24
28
|
this.writerQueue.start();
|
|
25
|
-
await this.sendMessage(LMDBMessageType.OPEN_DATABASE, {
|
|
29
|
+
await this.channel.sendMessage(LMDBMessageType.OPEN_DATABASE, {
|
|
26
30
|
db: Database.DATA,
|
|
27
31
|
uniqueKeys: true,
|
|
28
32
|
});
|
|
29
|
-
await this.sendMessage(LMDBMessageType.OPEN_DATABASE, {
|
|
33
|
+
await this.channel.sendMessage(LMDBMessageType.OPEN_DATABASE, {
|
|
30
34
|
db: Database.INDEX,
|
|
31
35
|
uniqueKeys: false,
|
|
32
36
|
});
|
|
37
|
+
this.open = true;
|
|
33
38
|
}
|
|
34
39
|
static async new(dataDir, dbMapSizeKb = 10 * 1024 * 1024, maxReaders = 16, cleanup, log = createLogger('kv-store:lmdb-v2')) {
|
|
35
40
|
const db = new AztecLMDBStoreV2(dataDir, dbMapSizeKb, maxReaders, log, cleanup);
|
|
@@ -37,9 +42,15 @@ export class AztecLMDBStoreV2 {
|
|
|
37
42
|
return db;
|
|
38
43
|
}
|
|
39
44
|
getReadTx() {
|
|
45
|
+
if (!this.open) {
|
|
46
|
+
throw new Error('Store is closed');
|
|
47
|
+
}
|
|
40
48
|
return new ReadTransaction(this);
|
|
41
49
|
}
|
|
42
50
|
getCurrentWriteTx() {
|
|
51
|
+
if (!this.open) {
|
|
52
|
+
throw new Error('Store is closed');
|
|
53
|
+
}
|
|
43
54
|
const currentWrite = this.writerCtx.getStore();
|
|
44
55
|
return currentWrite;
|
|
45
56
|
}
|
|
@@ -62,6 +73,9 @@ export class AztecLMDBStoreV2 {
|
|
|
62
73
|
throw new Error('Not implemented');
|
|
63
74
|
}
|
|
64
75
|
async transactionAsync(callback) {
|
|
76
|
+
if (!this.open) {
|
|
77
|
+
throw new Error('Store is closed');
|
|
78
|
+
}
|
|
65
79
|
// transactionAsync might be called recursively
|
|
66
80
|
// send any writes to the parent tx, but don't close it
|
|
67
81
|
// if the callback throws then the parent tx will rollback automatically
|
|
@@ -98,10 +112,18 @@ export class AztecLMDBStoreV2 {
|
|
|
98
112
|
await this.cleanup?.();
|
|
99
113
|
}
|
|
100
114
|
async close() {
|
|
115
|
+
if (!this.open) {
|
|
116
|
+
// already closed
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
this.open = false;
|
|
101
120
|
await this.writerQueue.cancel();
|
|
102
|
-
await this.sendMessage(LMDBMessageType.CLOSE, undefined);
|
|
121
|
+
await this.channel.sendMessage(LMDBMessageType.CLOSE, undefined);
|
|
103
122
|
}
|
|
104
123
|
async sendMessage(msgType, body) {
|
|
124
|
+
if (!this.open) {
|
|
125
|
+
throw new Error('Store is closed');
|
|
126
|
+
}
|
|
105
127
|
if (msgType === LMDBMessageType.START_CURSOR) {
|
|
106
128
|
await this.availableCursors.acquire();
|
|
107
129
|
}
|
|
@@ -153,4 +175,4 @@ export async function execInReadTx(store, fn) {
|
|
|
153
175
|
}
|
|
154
176
|
}
|
|
155
177
|
}
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi12Mi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsUUFBUSxFQUVSLGVBQWUsR0FHaEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUxRCxNQUFNLE9BQU8sZ0JBQWdCO0lBTzNCLFlBQ1UsT0FBZSxFQUN2QixPQUFlLEVBQ2YsVUFBa0IsRUFDVixHQUFXLEVBQ1gsT0FBNkI7UUFKN0IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUdmLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFDWCxZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQVgvQixTQUFJLEdBQUcsS0FBSyxDQUFDO1FBRWIsY0FBUyxHQUFHLElBQUksaUJBQWlCLEVBQW9CLENBQUM7UUFDdEQsZ0JBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBVXRDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLHFFQUFxRTtRQUNyRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFTyxLQUFLLENBQUMsS0FBSztRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXpCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRTtZQUM1RCxFQUFFLEVBQUUsUUFBUSxDQUFDLElBQUk7WUFDakIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFO1lBQzVELEVBQUUsRUFBRSxRQUFRLENBQUMsS0FBSztZQUNsQixVQUFVLEVBQUUsS0FBSztTQUNsQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ3JCLE9BQWUsRUFDZixjQUFzQixFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksRUFDdEMsYUFBcUIsRUFBRSxFQUN2QixPQUE2QixFQUM3QixHQUFHLEdBQUcsWUFBWSxDQUFDLGtCQUFrQixDQUFDO1FBRXRDLE1BQU0sRUFBRSxHQUFHLElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxPQUFPLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxDQUFtQixJQUFZO1FBQ3BDLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxZQUFZLENBQW1CLElBQVk7UUFDekMsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGFBQWEsQ0FBSSxJQUFZO1FBQzNCLE9BQU8sSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxTQUFTLENBQUksS0FBYTtRQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELE9BQU8sQ0FBZ0IsS0FBYTtRQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFdBQVcsQ0FBZ0IsS0FBYTtRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FDcEIsUUFBOEM7UUFFOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsK0NBQStDO1FBQy9DLHVEQUF1RDtRQUN2RCx3RUFBd0U7UUFDeEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0MsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLE9BQU8sTUFBTSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDckMsTUFBTSxFQUFFLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDcEQsTUFBTSxHQUFHLENBQUM7WUFDWixDQUFDO29CQUFTLENBQUM7Z0JBQ1QsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSTtRQUNGLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU07UUFDVixNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDOUQsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsaUJBQWlCO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVcsQ0FDdEIsT0FBVSxFQUNWLElBQXdCO1FBRXhCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDckMsQ0FBQztRQUVELElBQUksT0FBTyxLQUFLLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM3QyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QyxDQUFDO1FBRUQsSUFBSSxRQUFRLEdBQW9DLFNBQVMsQ0FBQztRQUMxRCxJQUFJLENBQUM7WUFDSCxDQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMvRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUNFLENBQUMsT0FBTyxLQUFLLGVBQWUsQ0FBQyxZQUFZLElBQUksUUFBUSxLQUFLLFNBQVMsQ0FBQztnQkFDcEUsT0FBTyxLQUFLLGVBQWUsQ0FBQyxZQUFZO2dCQUN4QyxxRkFBcUY7Z0JBQ3JGLENBQUMsT0FBTyxLQUFLLGVBQWUsQ0FBQyxZQUFZO29CQUN2QyxPQUFRLFFBQTJELENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxFQUMxRixDQUFDO2dCQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWTtRQUN2QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN0RSxPQUFPO1lBQ0wsV0FBVyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ3hDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6RSxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDdkUsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxhQUFhLENBQUksS0FBdUIsRUFBRSxFQUF3QztJQUNoRyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMvQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFCLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FDaEMsS0FBdUIsRUFDdkIsRUFBMkM7SUFFM0MsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDL0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQixPQUFPLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/kv-store",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.74.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/interfaces/index.js",
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
"./package.local.json"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@aztec/circuit-types": "0.
|
|
31
|
-
"@aztec/ethereum": "0.
|
|
32
|
-
"@aztec/foundation": "0.
|
|
33
|
-
"@aztec/native": "0.
|
|
30
|
+
"@aztec/circuit-types": "0.74.0",
|
|
31
|
+
"@aztec/ethereum": "0.74.0",
|
|
32
|
+
"@aztec/foundation": "0.74.0",
|
|
33
|
+
"@aztec/native": "0.74.0",
|
|
34
34
|
"idb": "^8.0.0",
|
|
35
35
|
"lmdb": "^3.2.0",
|
|
36
36
|
"msgpackr": "^1.11.2",
|
package/src/lmdb-v2/factory.ts
CHANGED
|
@@ -77,3 +77,13 @@ export async function openTmpStore(
|
|
|
77
77
|
|
|
78
78
|
return AztecLMDBStoreV2.new(dataDir, dbMapSizeKb, maxReaders, cleanup, log);
|
|
79
79
|
}
|
|
80
|
+
|
|
81
|
+
export function openStoreAt(
|
|
82
|
+
dataDir: string,
|
|
83
|
+
dbMapSizeKb = 10 * 1_024 * 1_024, // 10GB
|
|
84
|
+
maxReaders = MAX_READERS,
|
|
85
|
+
log: Logger = createLogger('kv-store:lmdb-v2'),
|
|
86
|
+
): Promise<AztecLMDBStoreV2> {
|
|
87
|
+
log.debug(`Opening data store at: ${dataDir} with size: ${dbMapSizeKb} KB (LMDB v2)`);
|
|
88
|
+
return AztecLMDBStoreV2.new(dataDir, dbMapSizeKb, maxReaders, undefined, log);
|
|
89
|
+
}
|
package/src/lmdb-v2/store.ts
CHANGED
|
@@ -25,6 +25,7 @@ import { LMDBSingleValue } from './singleton.js';
|
|
|
25
25
|
import { WriteTransaction } from './write_transaction.js';
|
|
26
26
|
|
|
27
27
|
export class AztecLMDBStoreV2 implements AztecAsyncKVStore, LMDBMessageChannel {
|
|
28
|
+
private open = false;
|
|
28
29
|
private channel: MsgpackChannel<LMDBMessageType, LMDBRequestBody, LMDBResponseBody>;
|
|
29
30
|
private writerCtx = new AsyncLocalStorage<WriteTransaction>();
|
|
30
31
|
private writerQueue = new SerialQueue();
|
|
@@ -43,18 +44,24 @@ export class AztecLMDBStoreV2 implements AztecAsyncKVStore, LMDBMessageChannel {
|
|
|
43
44
|
this.availableCursors = new Semaphore(maxReaders - 1);
|
|
44
45
|
}
|
|
45
46
|
|
|
47
|
+
public get dataDirectory(): string {
|
|
48
|
+
return this.dataDir;
|
|
49
|
+
}
|
|
50
|
+
|
|
46
51
|
private async start() {
|
|
47
52
|
this.writerQueue.start();
|
|
48
53
|
|
|
49
|
-
await this.sendMessage(LMDBMessageType.OPEN_DATABASE, {
|
|
54
|
+
await this.channel.sendMessage(LMDBMessageType.OPEN_DATABASE, {
|
|
50
55
|
db: Database.DATA,
|
|
51
56
|
uniqueKeys: true,
|
|
52
57
|
});
|
|
53
58
|
|
|
54
|
-
await this.sendMessage(LMDBMessageType.OPEN_DATABASE, {
|
|
59
|
+
await this.channel.sendMessage(LMDBMessageType.OPEN_DATABASE, {
|
|
55
60
|
db: Database.INDEX,
|
|
56
61
|
uniqueKeys: false,
|
|
57
62
|
});
|
|
63
|
+
|
|
64
|
+
this.open = true;
|
|
58
65
|
}
|
|
59
66
|
|
|
60
67
|
public static async new(
|
|
@@ -70,10 +77,16 @@ export class AztecLMDBStoreV2 implements AztecAsyncKVStore, LMDBMessageChannel {
|
|
|
70
77
|
}
|
|
71
78
|
|
|
72
79
|
public getReadTx(): ReadTransaction {
|
|
80
|
+
if (!this.open) {
|
|
81
|
+
throw new Error('Store is closed');
|
|
82
|
+
}
|
|
73
83
|
return new ReadTransaction(this);
|
|
74
84
|
}
|
|
75
85
|
|
|
76
86
|
public getCurrentWriteTx(): WriteTransaction | undefined {
|
|
87
|
+
if (!this.open) {
|
|
88
|
+
throw new Error('Store is closed');
|
|
89
|
+
}
|
|
77
90
|
const currentWrite = this.writerCtx.getStore();
|
|
78
91
|
return currentWrite;
|
|
79
92
|
}
|
|
@@ -105,6 +118,10 @@ export class AztecLMDBStoreV2 implements AztecAsyncKVStore, LMDBMessageChannel {
|
|
|
105
118
|
async transactionAsync<T extends Exclude<any, Promise<any>>>(
|
|
106
119
|
callback: (tx: WriteTransaction) => Promise<T>,
|
|
107
120
|
): Promise<T> {
|
|
121
|
+
if (!this.open) {
|
|
122
|
+
throw new Error('Store is closed');
|
|
123
|
+
}
|
|
124
|
+
|
|
108
125
|
// transactionAsync might be called recursively
|
|
109
126
|
// send any writes to the parent tx, but don't close it
|
|
110
127
|
// if the callback throws then the parent tx will rollback automatically
|
|
@@ -144,14 +161,23 @@ export class AztecLMDBStoreV2 implements AztecAsyncKVStore, LMDBMessageChannel {
|
|
|
144
161
|
}
|
|
145
162
|
|
|
146
163
|
async close() {
|
|
164
|
+
if (!this.open) {
|
|
165
|
+
// already closed
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
this.open = false;
|
|
147
169
|
await this.writerQueue.cancel();
|
|
148
|
-
await this.sendMessage(LMDBMessageType.CLOSE, undefined);
|
|
170
|
+
await this.channel.sendMessage(LMDBMessageType.CLOSE, undefined);
|
|
149
171
|
}
|
|
150
172
|
|
|
151
173
|
public async sendMessage<T extends LMDBMessageType>(
|
|
152
174
|
msgType: T,
|
|
153
175
|
body: LMDBRequestBody[T],
|
|
154
176
|
): Promise<LMDBResponseBody[T]> {
|
|
177
|
+
if (!this.open) {
|
|
178
|
+
throw new Error('Store is closed');
|
|
179
|
+
}
|
|
180
|
+
|
|
155
181
|
if (msgType === LMDBMessageType.START_CURSOR) {
|
|
156
182
|
await this.availableCursors.acquire();
|
|
157
183
|
}
|