rocksdb-native 3.7.4 → 3.7.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/binding.cc CHANGED
@@ -94,7 +94,7 @@ struct rocksdb_native_iterator_t {
94
94
  js_persistent_t<cb_on_iterator_close_t> on_close;
95
95
  js_persistent_t<cb_on_iterator_read_t> on_read;
96
96
 
97
- bool closing;
97
+ bool active;
98
98
  bool exiting;
99
99
 
100
100
  js_deferred_teardown_t *teardown;
@@ -717,7 +717,7 @@ rocksdb_native_iterator_init(js_env_t *env) {
717
717
  assert(err == 0);
718
718
 
719
719
  req->env = env;
720
- req->closing = false;
720
+ req->active = false;
721
721
  req->exiting = false;
722
722
  req->handle.data = req;
723
723
 
@@ -757,6 +757,8 @@ rocksdb_native__on_iterator_close(rocksdb_iterator_t *handle, int status) {
757
757
 
758
758
  rocksdb_native_iterator_t *req = (rocksdb_native_iterator_t *) handle->data;
759
759
 
760
+ req->active = false;
761
+
760
762
  js_env_t *env = req->env;
761
763
 
762
764
  js_deferred_teardown_t *teardown = req->teardown;
@@ -809,33 +811,38 @@ rocksdb_native__on_iterator_open(rocksdb_iterator_t *handle, int status) {
809
811
 
810
812
  rocksdb_native_iterator_t *req = (rocksdb_native_iterator_t *) handle->data;
811
813
 
812
- if (req->exiting) return;
814
+ req->active = false;
813
815
 
814
- js_env_t *env = req->env;
816
+ if (req->exiting) {
817
+ err = rocksdb_iterator_close(&req->handle, rocksdb_native__on_iterator_close);
818
+ assert(err == 0);
819
+ } else {
820
+ js_env_t *env = req->env;
815
821
 
816
- js_handle_scope_t *scope;
817
- err = js_open_handle_scope(env, &scope);
818
- assert(err == 0);
822
+ js_handle_scope_t *scope;
823
+ err = js_open_handle_scope(env, &scope);
824
+ assert(err == 0);
819
825
 
820
- js_receiver_t ctx;
821
- err = js_get_reference_value(env, req->ctx, ctx);
822
- assert(err == 0);
826
+ js_receiver_t ctx;
827
+ err = js_get_reference_value(env, req->ctx, ctx);
828
+ assert(err == 0);
823
829
 
824
- cb_on_iterator_open_t cb;
825
- err = js_get_reference_value(env, req->on_open, cb);
826
- assert(err == 0);
830
+ cb_on_iterator_open_t cb;
831
+ err = js_get_reference_value(env, req->on_open, cb);
832
+ assert(err == 0);
827
833
 
828
- std::optional<js_string_t> error;
834
+ std::optional<js_string_t> error;
829
835
 
830
- if (req->handle.error) {
831
- err = js_create_string(env, req->handle.error, error.emplace());
832
- assert(err == 0);
833
- }
836
+ if (req->handle.error) {
837
+ err = js_create_string(env, req->handle.error, error.emplace());
838
+ assert(err == 0);
839
+ }
834
840
 
835
- js_call_function_with_checkpoint(env, cb, ctx, error);
841
+ js_call_function_with_checkpoint(env, cb, ctx, error);
836
842
 
837
- err = js_close_handle_scope(env, scope);
838
- assert(err == 0);
843
+ err = js_close_handle_scope(env, scope);
844
+ assert(err == 0);
845
+ }
839
846
  }
840
847
 
841
848
  static void
@@ -846,7 +853,7 @@ rocksdb_native__on_iterator_teardown(js_deferred_teardown_t *handle, void *data)
846
853
 
847
854
  req->exiting = true;
848
855
 
849
- if (req->closing) return;
856
+ if (req->active) return;
850
857
 
851
858
  err = rocksdb_iterator_close(&req->handle, rocksdb_native__on_iterator_close);
852
859
  assert(err == 0);
@@ -872,6 +879,8 @@ rocksdb_native_iterator_open(
872
879
  ) {
873
880
  int err;
874
881
 
882
+ req->active = true;
883
+
875
884
  rocksdb_range_t range;
876
885
 
877
886
  err = js_get_typedarray_info(env, gt, range.gt.data, range.gt.len);
@@ -920,7 +929,7 @@ static void
920
929
  rocksdb_native_iterator_close(js_env_t *env, js_arraybuffer_span_of_t<rocksdb_native_iterator_t, 1> req) {
921
930
  int err;
922
931
 
923
- req->closing = true;
932
+ req->active = true;
924
933
 
925
934
  err = rocksdb_iterator_close(&req->handle, rocksdb_native__on_iterator_close);
926
935
  assert(err == 0);
@@ -944,6 +953,8 @@ rocksdb_native__on_iterator_read(rocksdb_iterator_t *handle, int status) {
944
953
 
945
954
  rocksdb_native_iterator_t *req = (rocksdb_native_iterator_t *) handle->data;
946
955
 
956
+ req->active = false;
957
+
947
958
  rocksdb_native_t *db = (rocksdb_native_t *) req->handle.req.db;
948
959
 
949
960
  size_t len = req->handle.len;
@@ -958,6 +969,9 @@ rocksdb_native__on_iterator_read(rocksdb_iterator_t *handle, int status) {
958
969
  rocksdb_slice_destroy(&req->values[i]);
959
970
  }
960
971
  }
972
+
973
+ err = rocksdb_iterator_close(&req->handle, rocksdb_native__on_iterator_close);
974
+ assert(err == 0);
961
975
  } else {
962
976
  js_env_t *env = req->env;
963
977
 
@@ -1019,6 +1033,8 @@ rocksdb_native_iterator_read(
1019
1033
  ) {
1020
1034
  int err;
1021
1035
 
1036
+ req->active = true;
1037
+
1022
1038
  err = rocksdb_iterator_read(&req->handle, req->keys, req->values, capacity, rocksdb_native__on_iterator_read);
1023
1039
  assert(err == 0);
1024
1040
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rocksdb-native",
3
- "version": "3.7.4",
3
+ "version": "3.7.5",
4
4
  "description": "librocksdb bindings for JavaScript",
5
5
  "exports": {
6
6
  ".": "./index.js",