rocksdb-native 3.5.4 → 3.5.5
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/CMakeLists.txt +1 -1
- package/binding.c +4 -12
- package/lib/batch.js +10 -5
- package/lib/iterator.js +49 -21
- package/lib/state.js +8 -3
- package/package.json +1 -1
- package/prebuilds/android-arm/rocksdb-native.bare +0 -0
- package/prebuilds/android-arm64/rocksdb-native.bare +0 -0
- package/prebuilds/android-ia32/rocksdb-native.bare +0 -0
- package/prebuilds/android-x64/rocksdb-native.bare +0 -0
- package/prebuilds/darwin-arm64/rocksdb-native.bare +0 -0
- package/prebuilds/darwin-arm64/rocksdb-native.node +0 -0
- package/prebuilds/darwin-x64/rocksdb-native.bare +0 -0
- package/prebuilds/darwin-x64/rocksdb-native.node +0 -0
- package/prebuilds/ios-arm64/rocksdb-native.bare +0 -0
- package/prebuilds/ios-arm64-simulator/rocksdb-native.bare +0 -0
- package/prebuilds/ios-x64-simulator/rocksdb-native.bare +0 -0
- package/prebuilds/linux-arm64/rocksdb-native.bare +0 -0
- package/prebuilds/linux-arm64/rocksdb-native.node +0 -0
- package/prebuilds/linux-x64/rocksdb-native.bare +0 -0
- package/prebuilds/linux-x64/rocksdb-native.node +0 -0
- package/prebuilds/win32-arm64/rocksdb-native.bare +0 -0
- package/prebuilds/win32-arm64/rocksdb-native.node +0 -0
- package/prebuilds/win32-x64/rocksdb-native.bare +0 -0
- package/prebuilds/win32-x64/rocksdb-native.node +0 -0
package/CMakeLists.txt
CHANGED
package/binding.c
CHANGED
|
@@ -192,10 +192,8 @@ rocksdb_native__on_open(rocksdb_open_t *handle, int status) {
|
|
|
192
192
|
|
|
193
193
|
js_value_t **elements = malloc(len * sizeof(js_value_t *));
|
|
194
194
|
|
|
195
|
-
|
|
196
|
-
err = js_get_array_elements(env, column_families, elements, len, 0, &fetched);
|
|
195
|
+
err = js_get_array_elements(env, column_families, elements, len, 0, NULL);
|
|
197
196
|
assert(err == 0);
|
|
198
|
-
assert(fetched == len);
|
|
199
197
|
|
|
200
198
|
for (uint32_t i = 0; i < len; i++) {
|
|
201
199
|
js_value_t *handle = elements[i];
|
|
@@ -397,10 +395,8 @@ rocksdb_native_open(js_env_t *env, js_callback_info_t *info) {
|
|
|
397
395
|
|
|
398
396
|
js_value_t **elements = malloc(len * sizeof(js_value_t *));
|
|
399
397
|
|
|
400
|
-
|
|
401
|
-
err = js_get_array_elements(env, argv[3], elements, len, 0, &fetched);
|
|
398
|
+
err = js_get_array_elements(env, argv[3], elements, len, 0, NULL);
|
|
402
399
|
assert(err == 0);
|
|
403
|
-
assert(fetched == len);
|
|
404
400
|
|
|
405
401
|
for (uint32_t i = 0; i < len; i++) {
|
|
406
402
|
js_value_t *handle = elements[i];
|
|
@@ -1410,10 +1406,8 @@ rocksdb_native_read(js_env_t *env, js_callback_info_t *info) {
|
|
|
1410
1406
|
|
|
1411
1407
|
js_value_t **elements = malloc(len * sizeof(js_value_t *));
|
|
1412
1408
|
|
|
1413
|
-
|
|
1414
|
-
err = js_get_array_elements(env, argv[2], elements, len, 0, &fetched);
|
|
1409
|
+
err = js_get_array_elements(env, argv[2], elements, len, 0, NULL);
|
|
1415
1410
|
assert(err == 0);
|
|
1416
|
-
assert(fetched == len);
|
|
1417
1411
|
|
|
1418
1412
|
for (uint32_t i = 0; i < len; i++) {
|
|
1419
1413
|
js_value_t *read = elements[i];
|
|
@@ -1614,10 +1608,8 @@ rocksdb_native_write(js_env_t *env, js_callback_info_t *info) {
|
|
|
1614
1608
|
|
|
1615
1609
|
js_value_t **elements = malloc(len * sizeof(js_value_t *));
|
|
1616
1610
|
|
|
1617
|
-
|
|
1618
|
-
err = js_get_array_elements(env, argv[2], elements, len, 0, &fetched);
|
|
1611
|
+
err = js_get_array_elements(env, argv[2], elements, len, 0, NULL);
|
|
1619
1612
|
assert(err == 0);
|
|
1620
|
-
assert(fetched == len);
|
|
1621
1613
|
|
|
1622
1614
|
for (uint32_t i = 0; i < len; i++) {
|
|
1623
1615
|
js_value_t *write = elements[i];
|
package/lib/batch.js
CHANGED
|
@@ -96,6 +96,8 @@ class RocksDBBatch {
|
|
|
96
96
|
const promise = this._promises[i]
|
|
97
97
|
if (promise !== null) promise.reject(new Error('Batch is destroyed'))
|
|
98
98
|
}
|
|
99
|
+
|
|
100
|
+
this._onfinished(new Error('Batch is destroyed'))
|
|
99
101
|
}
|
|
100
102
|
|
|
101
103
|
async flush() {
|
|
@@ -129,11 +131,14 @@ class RocksDBBatch {
|
|
|
129
131
|
if (this._db._state.resumed !== null) {
|
|
130
132
|
const resumed = await this._db._state.resumed.promise
|
|
131
133
|
|
|
132
|
-
if (!resumed
|
|
133
|
-
this._destroyed
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
134
|
+
if (!resumed) {
|
|
135
|
+
if (this._destroyed) {
|
|
136
|
+
this._db._state.io.dec()
|
|
137
|
+
} else {
|
|
138
|
+
this._destroyed = true
|
|
139
|
+
this._abort()
|
|
140
|
+
this._db._unref()
|
|
141
|
+
}
|
|
137
142
|
}
|
|
138
143
|
}
|
|
139
144
|
}
|
package/lib/iterator.js
CHANGED
|
@@ -75,6 +75,7 @@ module.exports = class RocksDBIterator extends Readable {
|
|
|
75
75
|
_onclose(err) {
|
|
76
76
|
const cb = this._pendingDestroy
|
|
77
77
|
this._pendingDestroy = null
|
|
78
|
+
this._db._state.io.dec()
|
|
78
79
|
this._db._unref()
|
|
79
80
|
cb(err)
|
|
80
81
|
}
|
|
@@ -115,43 +116,70 @@ module.exports = class RocksDBIterator extends Readable {
|
|
|
115
116
|
|
|
116
117
|
this._pendingOpen = cb
|
|
117
118
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
119
|
+
try {
|
|
120
|
+
binding.iteratorOpen(
|
|
121
|
+
this._db._state._handle,
|
|
122
|
+
this._handle,
|
|
123
|
+
this._db._columnFamily._handle,
|
|
124
|
+
this._gt,
|
|
125
|
+
this._gte,
|
|
126
|
+
this._lt,
|
|
127
|
+
this._lte,
|
|
128
|
+
this._reverse,
|
|
129
|
+
this._db._snapshot ? this._db._snapshot._handle : null,
|
|
130
|
+
this,
|
|
131
|
+
this._onopen,
|
|
132
|
+
this._onclose,
|
|
133
|
+
this._onread
|
|
134
|
+
)
|
|
135
|
+
} catch (err) {
|
|
136
|
+
this._db._state.io.dec()
|
|
137
|
+
throw err
|
|
138
|
+
}
|
|
133
139
|
}
|
|
134
140
|
|
|
135
141
|
async _read(cb) {
|
|
142
|
+
this._db._state.io.inc()
|
|
143
|
+
|
|
136
144
|
if (this._db._state.resumed !== null) {
|
|
137
|
-
await this._db._state.resumed.promise
|
|
145
|
+
const resumed = await this._db._state.resumed.promise
|
|
146
|
+
|
|
147
|
+
if (!resumed) {
|
|
148
|
+
this._db._state.io.dec()
|
|
149
|
+
|
|
150
|
+
return cb(new Error('RocksDB session is closed'))
|
|
151
|
+
}
|
|
138
152
|
}
|
|
139
153
|
|
|
140
154
|
this._pendingRead = cb
|
|
141
155
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
156
|
+
try {
|
|
157
|
+
binding.iteratorRead(this._handle, Math.min(this._capacity, this._limit))
|
|
158
|
+
} catch (err) {
|
|
159
|
+
this._db._state.io.dec()
|
|
160
|
+
throw err
|
|
161
|
+
}
|
|
145
162
|
}
|
|
146
163
|
|
|
147
164
|
async _destroy(cb) {
|
|
148
165
|
await this.ready()
|
|
149
166
|
|
|
167
|
+
this._db._state.io.inc()
|
|
168
|
+
|
|
150
169
|
this._pendingDestroy = cb
|
|
151
170
|
|
|
152
|
-
if (this._opened === false)
|
|
171
|
+
if (this._opened === false) {
|
|
172
|
+
this._db._state.io.dec()
|
|
173
|
+
|
|
174
|
+
return this._onclose(null)
|
|
175
|
+
}
|
|
153
176
|
|
|
154
|
-
|
|
177
|
+
try {
|
|
178
|
+
binding.iteratorClose(this._handle)
|
|
179
|
+
} catch (err) {
|
|
180
|
+
this._db._state.io.dec()
|
|
181
|
+
throw err
|
|
182
|
+
}
|
|
155
183
|
}
|
|
156
184
|
|
|
157
185
|
_encodeKey(k) {
|
package/lib/state.js
CHANGED
|
@@ -160,6 +160,7 @@ module.exports = class RocksDBState extends ReadyResource {
|
|
|
160
160
|
async _close() {
|
|
161
161
|
if (this.resumed) this.resumed.resolve(false)
|
|
162
162
|
|
|
163
|
+
while (!this.io.isIdle()) await this.io.idle()
|
|
163
164
|
while (!this.handles.isIdle()) await this.handles.idle()
|
|
164
165
|
|
|
165
166
|
while (this.sessions.length > 0) {
|
|
@@ -188,14 +189,12 @@ module.exports = class RocksDBState extends ReadyResource {
|
|
|
188
189
|
async flush(db, opts) {
|
|
189
190
|
if (this.opened === false) await this.ready()
|
|
190
191
|
|
|
191
|
-
this.handles.inc()
|
|
192
192
|
this.io.inc()
|
|
193
193
|
|
|
194
194
|
if (this.resumed !== null) {
|
|
195
195
|
const resumed = await this.resumed.promise
|
|
196
196
|
|
|
197
197
|
if (!resumed) {
|
|
198
|
-
this.handles.dec()
|
|
199
198
|
this.io.dec()
|
|
200
199
|
|
|
201
200
|
throw new Error('RocksDB session is closed')
|
|
@@ -219,7 +218,6 @@ module.exports = class RocksDBState extends ReadyResource {
|
|
|
219
218
|
|
|
220
219
|
await promise
|
|
221
220
|
} finally {
|
|
222
|
-
this.handles.dec()
|
|
223
221
|
this.io.dec()
|
|
224
222
|
}
|
|
225
223
|
|
|
@@ -241,6 +239,7 @@ module.exports = class RocksDBState extends ReadyResource {
|
|
|
241
239
|
|
|
242
240
|
while (!this.io.isIdle()) await this.io.idle()
|
|
243
241
|
|
|
242
|
+
this.io.inc()
|
|
244
243
|
this.resumed = rrp()
|
|
245
244
|
|
|
246
245
|
const req = { resolve: null, reject: null, handle: null }
|
|
@@ -257,6 +256,8 @@ module.exports = class RocksDBState extends ReadyResource {
|
|
|
257
256
|
|
|
258
257
|
this._suspended = true
|
|
259
258
|
} finally {
|
|
259
|
+
this.io.dec()
|
|
260
|
+
|
|
260
261
|
this._suspending = null
|
|
261
262
|
}
|
|
262
263
|
|
|
@@ -276,6 +277,8 @@ module.exports = class RocksDBState extends ReadyResource {
|
|
|
276
277
|
if (this._suspending !== null) await this._suspending
|
|
277
278
|
if (this._suspended === false) return
|
|
278
279
|
|
|
280
|
+
this.io.inc()
|
|
281
|
+
|
|
279
282
|
const req = { resolve: null, reject: null, handle: null }
|
|
280
283
|
|
|
281
284
|
const promise = new Promise((resolve, reject) => {
|
|
@@ -290,6 +293,8 @@ module.exports = class RocksDBState extends ReadyResource {
|
|
|
290
293
|
|
|
291
294
|
this._suspended = false
|
|
292
295
|
} finally {
|
|
296
|
+
this.io.dec()
|
|
297
|
+
|
|
293
298
|
this._resuming = null
|
|
294
299
|
}
|
|
295
300
|
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|