From 8382523ac4b2eee7558511ce341c3182146093eb Mon Sep 17 00:00:00 2001
From: twmht <qrnnis2623891@gmail.com>
Date: Mon, 19 Jun 2017 13:58:37 +0800
Subject: [PATCH] fix memtable_factory crash

---
 rocksdb/_rocksdb.pyx          | 12 ++++++++++++
 rocksdb/options.pxd           |  2 ++
 rocksdb/tests/test_options.py | 12 ++++++++++++
 3 files changed, 26 insertions(+)

diff --git a/rocksdb/_rocksdb.pyx b/rocksdb/_rocksdb.pyx
index da216d3..bfedde2 100644
--- a/rocksdb/_rocksdb.pyx
+++ b/rocksdb/_rocksdb.pyx
@@ -1094,6 +1094,18 @@ cdef class Options(object):
         #  def __set__(self, value):
             #  self.opts.allow_os_buffer = value
 
+    property enable_write_thread_adaptive_yield:
+        def __get__(self):
+            return self.opts.enable_write_thread_adaptive_yield
+        def __set__(self, value):
+            self.opts.enable_write_thread_adaptive_yield = value
+
+    property allow_concurrent_memtable_write:
+        def __get__(self):
+            return self.opts.allow_concurrent_memtable_write
+        def __set__(self, value):
+            self.opts.allow_concurrent_memtable_write = value
+
     property allow_mmap_reads:
         def __get__(self):
             return self.opts.allow_mmap_reads
diff --git a/rocksdb/options.pxd b/rocksdb/options.pxd
index e54bf69..373c66a 100644
--- a/rocksdb/options.pxd
+++ b/rocksdb/options.pxd
@@ -130,6 +130,8 @@ cdef extern from "rocksdb/options.h" namespace "rocksdb":
         # TODO: remove options source_compaction_factor, max_grandparent_overlap_bytes and expanded_compaction_factor from document
         uint64_t max_compaction_bytes
         CompressionOptions compression_opts
+        cpp_bool allow_concurrent_memtable_write
+        cpp_bool enable_write_thread_adaptive_yield
 
     cdef cppclass WriteOptions:
         cpp_bool sync
diff --git a/rocksdb/tests/test_options.py b/rocksdb/tests/test_options.py
index c585190..571986d 100644
--- a/rocksdb/tests/test_options.py
+++ b/rocksdb/tests/test_options.py
@@ -46,6 +46,18 @@ class TestOptions(unittest.TestCase):
         opts.compaction_pri = rocksdb.CompactionPri.min_overlapping_ratio
         self.assertEqual(opts.compaction_pri, rocksdb.CompactionPri.min_overlapping_ratio)
 
+    def test_enable_write_thread_adaptive_yield(self):
+        opts = rocksdb.Options()
+        self.assertEqual(opts.enable_write_thread_adaptive_yield, True)
+        opts.enable_write_thread_adaptive_yield = False
+        self.assertEqual(opts.enable_write_thread_adaptive_yield, False)
+
+    def test_allow_concurrent_memtable_write(self):
+        opts = rocksdb.Options()
+        self.assertEqual(opts.allow_concurrent_memtable_write, True)
+        opts.allow_concurrent_memtable_write = False
+        self.assertEqual(opts.allow_concurrent_memtable_write, False)
+
     def test_compression_opts(self):
         opts = rocksdb.Options()
         compression_opts = opts.compression_opts
-- 
GitLab