rocksdb-native 3.9.2 → 3.9.3
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.cc +28 -23
- package/lib/iterator.js +11 -6
- package/lib/state.js +1 -0
- 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
|
@@ -9,7 +9,7 @@ project(rocksdb_native C CXX)
|
|
|
9
9
|
|
|
10
10
|
bare_target(target)
|
|
11
11
|
|
|
12
|
-
fetch_package("github:holepunchto/librocksdb#
|
|
12
|
+
fetch_package("github:holepunchto/librocksdb#1fa9c8c")
|
|
13
13
|
fetch_package("github:holepunchto/libjstl#098664c")
|
|
14
14
|
|
|
15
15
|
add_bare_module(rocksdb_native_bare)
|
package/binding.cc
CHANGED
|
@@ -155,6 +155,21 @@ rocksdb_native__on_free(js_env_t *env, char *data) {
|
|
|
155
155
|
free(data);
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
+
static int
|
|
159
|
+
rocksdb_native__try_create_external_arraybuffer(js_env_t *env, char *data, size_t len, js_arraybuffer_t &result) {
|
|
160
|
+
int err;
|
|
161
|
+
|
|
162
|
+
err = js_create_external_arraybuffer<rocksdb_native__on_free>(env, data, len, result);
|
|
163
|
+
if (err == 0) return 0;
|
|
164
|
+
|
|
165
|
+
err = js_create_arraybuffer(env, data, len, result);
|
|
166
|
+
assert(err == 0);
|
|
167
|
+
|
|
168
|
+
free(data);
|
|
169
|
+
|
|
170
|
+
return 0;
|
|
171
|
+
}
|
|
172
|
+
|
|
158
173
|
static void
|
|
159
174
|
rocksdb_native__on_column_family_teardown(void *data);
|
|
160
175
|
|
|
@@ -207,7 +222,7 @@ rocksdb_native__on_open(rocksdb_open_t *handle, int status) {
|
|
|
207
222
|
|
|
208
223
|
rocksdb_column_family_t **handles = handle->handles;
|
|
209
224
|
|
|
210
|
-
if (req->handle.error ==
|
|
225
|
+
if (req->handle.error == nullptr) {
|
|
211
226
|
std::vector<js_arraybuffer_t> elements;
|
|
212
227
|
err = js_get_array_elements(env, column_families, elements);
|
|
213
228
|
assert(err == 0);
|
|
@@ -710,8 +725,8 @@ rocksdb_native_column_family_init(
|
|
|
710
725
|
assert(err == 0);
|
|
711
726
|
|
|
712
727
|
column_family->env = env;
|
|
713
|
-
column_family->db =
|
|
714
|
-
column_family->handle =
|
|
728
|
+
column_family->db = nullptr;
|
|
729
|
+
column_family->handle = nullptr;
|
|
715
730
|
|
|
716
731
|
column_family->descriptor = (rocksdb_column_family_descriptor_t) {
|
|
717
732
|
name,
|
|
@@ -747,7 +762,7 @@ rocksdb_native_column_family_destroy(
|
|
|
747
762
|
) {
|
|
748
763
|
int err;
|
|
749
764
|
|
|
750
|
-
if (column_family->handle ==
|
|
765
|
+
if (column_family->handle == nullptr) return;
|
|
751
766
|
|
|
752
767
|
err = rocksdb_column_family_destroy(column_family->db, column_family->handle);
|
|
753
768
|
assert(err == 0);
|
|
@@ -757,7 +772,7 @@ rocksdb_native_column_family_destroy(
|
|
|
757
772
|
|
|
758
773
|
column_family->ctx.reset();
|
|
759
774
|
|
|
760
|
-
column_family->handle =
|
|
775
|
+
column_family->handle = nullptr;
|
|
761
776
|
}
|
|
762
777
|
|
|
763
778
|
static js_arraybuffer_t
|
|
@@ -1001,16 +1016,6 @@ rocksdb_native_iterator_close(js_env_t *env, js_arraybuffer_span_of_t<rocksdb_na
|
|
|
1001
1016
|
req->active = true;
|
|
1002
1017
|
}
|
|
1003
1018
|
|
|
1004
|
-
static int
|
|
1005
|
-
rocksdb_native_try_create_external_arraybuffer(js_env_t *env, char *data, size_t len, js_arraybuffer_t &result) {
|
|
1006
|
-
int err;
|
|
1007
|
-
|
|
1008
|
-
err = js_create_external_arraybuffer<rocksdb_native__on_free>(env, data, len, result);
|
|
1009
|
-
if (err == 0) return 0;
|
|
1010
|
-
|
|
1011
|
-
return js_create_arraybuffer(env, data, len, result);
|
|
1012
|
-
}
|
|
1013
|
-
|
|
1014
1019
|
static void
|
|
1015
1020
|
rocksdb_native__on_iterator_read(rocksdb_iterator_t *handle, int status) {
|
|
1016
1021
|
int err;
|
|
@@ -1026,7 +1031,7 @@ rocksdb_native__on_iterator_read(rocksdb_iterator_t *handle, int status) {
|
|
|
1026
1031
|
size_t len = req->handle.len;
|
|
1027
1032
|
|
|
1028
1033
|
if (db->exiting) {
|
|
1029
|
-
if (status == 0 && req->handle.error ==
|
|
1034
|
+
if (status == 0 && req->handle.error == nullptr) {
|
|
1030
1035
|
for (size_t i = 0; i < len; i++) {
|
|
1031
1036
|
js_value_t *result;
|
|
1032
1037
|
|
|
@@ -1070,14 +1075,14 @@ rocksdb_native__on_iterator_read(rocksdb_iterator_t *handle, int status) {
|
|
|
1070
1075
|
|
|
1071
1076
|
rocksdb_slice_t *key = &req->keys[i];
|
|
1072
1077
|
|
|
1073
|
-
err =
|
|
1078
|
+
err = rocksdb_native__try_create_external_arraybuffer(env, const_cast<char *>(key->data), key->len, result);
|
|
1074
1079
|
assert(err == 0);
|
|
1075
1080
|
|
|
1076
1081
|
keys.push_back(result);
|
|
1077
1082
|
|
|
1078
1083
|
rocksdb_slice_t *value = &req->values[i];
|
|
1079
1084
|
|
|
1080
|
-
err =
|
|
1085
|
+
err = rocksdb_native__try_create_external_arraybuffer(env, const_cast<char *>(value->data), value->len, result);
|
|
1081
1086
|
assert(err == 0);
|
|
1082
1087
|
|
|
1083
1088
|
values.push_back(result);
|
|
@@ -1203,11 +1208,11 @@ rocksdb_native__on_read(rocksdb_read_batch_t *handle, int status) {
|
|
|
1203
1208
|
|
|
1204
1209
|
rocksdb_slice_t *slice = &req->reads[i].value;
|
|
1205
1210
|
|
|
1206
|
-
if (slice->data ==
|
|
1207
|
-
err = js_get_null(env,
|
|
1211
|
+
if (slice->data == nullptr && slice->len == size_t(-1)) {
|
|
1212
|
+
err = js_get_null(env, static_cast<js_value_t **>(result));
|
|
1208
1213
|
assert(err == 0);
|
|
1209
1214
|
} else {
|
|
1210
|
-
err =
|
|
1215
|
+
err = rocksdb_native__try_create_external_arraybuffer(env, const_cast<char *>(slice->data), slice->len, result);
|
|
1211
1216
|
assert(err == 0);
|
|
1212
1217
|
}
|
|
1213
1218
|
|
|
@@ -1487,7 +1492,7 @@ rocksdb_native_write(
|
|
|
1487
1492
|
}
|
|
1488
1493
|
}
|
|
1489
1494
|
|
|
1490
|
-
err = rocksdb_write(&db->handle, &req->handle, req->writes, len,
|
|
1495
|
+
err = rocksdb_write(&db->handle, &req->handle, req->writes, len, nullptr, rocksdb_native__on_write);
|
|
1491
1496
|
|
|
1492
1497
|
if (err < 0) {
|
|
1493
1498
|
err = js_throw_error(env, uv_err_name(err), uv_strerror(err));
|
|
@@ -1567,7 +1572,7 @@ rocksdb_native_flush(
|
|
|
1567
1572
|
req->env = env;
|
|
1568
1573
|
req->handle.data = req;
|
|
1569
1574
|
|
|
1570
|
-
err = rocksdb_flush(&db->handle, &req->handle, column_family->handle,
|
|
1575
|
+
err = rocksdb_flush(&db->handle, &req->handle, column_family->handle, nullptr, rocksdb_native__on_flush);
|
|
1571
1576
|
|
|
1572
1577
|
if (err < 0) {
|
|
1573
1578
|
err = js_throw_error(env, uv_err_name(err), uv_strerror(err));
|
package/lib/iterator.js
CHANGED
|
@@ -137,7 +137,8 @@ module.exports = class RocksDBIterator extends Readable {
|
|
|
137
137
|
)
|
|
138
138
|
} catch (err) {
|
|
139
139
|
this._db._state.io.dec()
|
|
140
|
-
|
|
140
|
+
|
|
141
|
+
cb(err)
|
|
141
142
|
}
|
|
142
143
|
}
|
|
143
144
|
|
|
@@ -160,7 +161,8 @@ module.exports = class RocksDBIterator extends Readable {
|
|
|
160
161
|
binding.iteratorRead(this._handle, Math.min(this._capacity, this._limit))
|
|
161
162
|
} catch (err) {
|
|
162
163
|
this._db._state.io.dec()
|
|
163
|
-
|
|
164
|
+
|
|
165
|
+
cb(err)
|
|
164
166
|
}
|
|
165
167
|
}
|
|
166
168
|
|
|
@@ -169,19 +171,22 @@ module.exports = class RocksDBIterator extends Readable {
|
|
|
169
171
|
|
|
170
172
|
this._db._state.io.inc()
|
|
171
173
|
|
|
172
|
-
this._pendingDestroy = cb
|
|
173
|
-
|
|
174
174
|
if (this._opened === false) {
|
|
175
175
|
this._db._state.io.dec()
|
|
176
|
+
this._db._unref()
|
|
176
177
|
|
|
177
|
-
return
|
|
178
|
+
return cb(null)
|
|
178
179
|
}
|
|
179
180
|
|
|
181
|
+
this._pendingDestroy = cb
|
|
182
|
+
|
|
180
183
|
try {
|
|
181
184
|
binding.iteratorClose(this._handle)
|
|
182
185
|
} catch (err) {
|
|
183
186
|
this._db._state.io.dec()
|
|
184
|
-
|
|
187
|
+
this._db._unref()
|
|
188
|
+
|
|
189
|
+
cb(err)
|
|
185
190
|
}
|
|
186
191
|
}
|
|
187
192
|
|
package/lib/state.js
CHANGED
|
@@ -83,6 +83,7 @@ module.exports = class RocksDBState extends ReadyResource {
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
freeBatch(batch, writable) {
|
|
86
|
+
if (batch._capacity > 16) return
|
|
86
87
|
const queue = writable ? this._writeBatches : this._readBatches
|
|
87
88
|
if (queue.length >= MAX_BATCH_REUSE) return
|
|
88
89
|
queue.push(batch)
|
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
|