Commit graph

55 commits

Author SHA1 Message Date
Alexander Böhn
952e7bb4ab
Allow rocksdb.DB instances to be manually closed
While `delete rocks_ptr` is a deterministic operation in C++, the Python analogue `del rocks_handle` is not – disposal and finalization of the Rocks database are entirely dependent on the Python garbage collector (q.v. the `python-rocksdb` tests themselves, which call `gc.collect()` after `del rocks_handle` to attempt to force the destructor to run). This change exposes a method to trigger the destruction of the underlying Rocks database pointer (deterministic!) through the Python Rocks handle; existing code will not need to be changed, as the Python object destructor (non-deterministic!) will now call this method.

This is the second revision of this PR – it resolves the first revision, #39.
2019-02-01 11:36:36 -05:00
twmht
32a3dca280 remove full_scan_mode 2019-02-01 21:56:58 +08:00
Jason Fried
2a66e20ca3 Column Family Support
Add support for Column Families in a runtime safe way.
Add unittests to test functionality
Insure all unittests are passing.
Cleaned up unittests to not use a fixed directory in tmp, but use tempfile
2018-11-06 02:26:47 +00:00
twmht
8382523ac4 fix memtable_factory crash 2017-06-19 13:58:37 +08:00
twmht
5610d9474d update the usage of default operators 2017-04-25 08:25:02 +08:00
twmht
79b0f8d6fb add seekForPrev 2017-04-23 19:32:41 +08:00
twmht
9d87eb5bdc add compaction_pri 2017-04-17 00:00:44 +08:00
twmht
9fcafffbf4 add default merge operator 2017-04-16 14:13:01 +08:00
twmht
58ba17ac90 Merge options source_compaction_factor, max_grandparent_overlap_bytes and expanded_compaction_factor into max_compaction_bytes 2017-04-08 00:18:38 +08:00
twmht
056d62d43d now support rocksdb 5.3.0 2017-03-24 00:56:24 +08:00
hofmockel
01f13577ad Add "row_cache" to options. 2015-08-30 12:21:40 +02:00
hofmockel
6b54dc9e64 No need for the 'get_ob' methods on PyCache. 2015-08-30 12:20:45 +02:00
hofmockel
167ee99f33 Change API of compact_range to be compatible with the change of rocksdb. 2015-08-27 21:45:09 +02:00
hofmockel
8fba5ffa1d Wrap the RepairDB function. 2015-08-15 16:34:35 +02:00
hofmockel
2ef04007c4 Add lz4 compression type. 2015-07-05 13:52:17 +02:00
hofmockel
302d1a6440 Make it possible to iterate over a WriteBatch. 2015-07-05 13:35:15 +02:00
hofmockel
8b26e1e4b0 Get rid of depricated way to create backupengine. 2015-04-12 14:08:30 +02:00
hofmockel
0c13b55e55 Remove rm_scan_count_limit from Cache creation. 2015-04-12 13:58:22 +02:00
hofmockel
b9f06fe785 Remove table_cache_remove_scan_count_limit because it is also removed from rocksdb. 2015-04-12 13:51:28 +02:00
hofmockel
87a7ddfe1c Move filter_policy to block_based_table_factory. 2014-10-22 09:43:47 +02:00
hofmockel
5550ed91e7 Move the block_cache* from options to block_based_table_factory. 2014-10-22 09:41:33 +02:00
hofmockel
14dd1c785a Move the 'simple' block based table options to the block_table_factory. 2014-10-22 09:35:17 +02:00
hofmockel
3358119f22 Remove deprecated options. 2014-10-22 09:31:46 +02:00
hofmockel
a3072c79b3 Document the new init-methods for the SST-table-builders 2014-08-22 19:58:17 +02:00
hofmockel
13518d2680 Remove TotalOrderPlainTableFactory. It was also removed in rocksdb. 2014-08-22 19:15:46 +02:00
hofmockel
f4c5aed418 Make the 'compact_range' call available in python
(cherry picked from commit c6e4014136)
2014-05-31 20:25:06 +02:00
hofmockel
f897bf4911 Adapt to the changes of 'prefix seek api'
See https://github.com/facebook/rocksdb/wiki/Prefix-Seek-API-Changes
2014-05-31 20:21:42 +02:00
hofmockel
6ceb6514b5 Allow configuration of universal style compaction 2014-04-29 17:46:21 +02:00
hofmockel
1cb9ec4ee1 Allow it to configure the memtable representation 2014-04-28 20:32:33 +02:00
hofmockel
482379cf94 Add support for the 'PlainTableFactories' 2014-04-27 19:20:30 +02:00
hofmockel
bfb370fdc8 Add new option called verify_checksums_in_compaction 2014-04-27 16:39:17 +02:00
hofmockel
098f9578d6 Change prefix_extractor to smart-pointer instead of raw 2014-04-01 21:24:18 +02:00
hofmockel
f16daf0a41 Add python wrapper for BackupEngine 2014-02-02 17:43:00 +01:00
hofmockel
8ef2a13476 Better error messages 2014-01-26 10:50:44 +01:00
hofmockel
41fc293cb8 Better error reporting for a python prefix extractor 2014-01-26 10:45:06 +01:00
hofmockel
f16932b325 Small code reformat 2014-01-26 09:49:07 +01:00
hofmockel
0dca8c379e Better error reporting in python filter policy 2014-01-26 09:47:04 +01:00
hofmockel
9133c81f9e Get rid of the second context, not needed it is always the same 2014-01-24 17:18:29 +01:00
hofmockel
a83a15e1a8 Better error reporting in python comparators
* Written to the rocksdb log-file
* raise an exception back to rocksdb
2014-01-24 17:11:41 +01:00
hofmockel
43a6997362 Fix deadlock on shutdown by releasing the GIL during del
On delete rocksdb waits for the background thread to finish.
However the background threads needs the GIL to execute python-code
(for example comparator)
=>
* main thread has GIL
* main thread waits for background thread
* background thread tries to get GIL
which means deadlock
2014-01-24 17:03:14 +01:00
hofmockel
c8b92d5adb Fore future use, prevent options beeing shared with other DB objects
For better logging I'm going to inject the rocksdb info_logger into the C++ Wrapper classes
=> The classes on the options object have a member to a DB specific logger
=> This c++ classes can only belong to a SINGLE db
=> For simplicity make this requirement also for the options object itself
2014-01-23 08:53:14 +01:00
hofmockel
a4c93f7144 __dealloc__ is also called if __cinit__ raises, be more robust in freeing 2014-01-23 08:34:26 +01:00
hofmockel
6ad545cea0 Fix possible crash if snapshot and DB take part in cyclic gargabe collection
The cyclic garbage collector may choose this snappshot object to break the
cycle. In that case tp_clear will remove the reference to self.db.
So if __dealloc__ of the snapshot is called, self.db is not valid anymore
2014-01-23 08:10:51 +01:00
hofmockel
a1cb7f9efc Raise error if offset+size is too big 2014-01-21 17:34:01 +01:00
hofmockel
36eb7024d3 Make 'prefix_extractor' active 2014-01-21 17:26:30 +01:00
hofmockel
6f452968bc PySliceTransfrom to bridge python and c++ 2014-01-21 13:15:26 +01:00
hofmockel
c7d192128b Call it.Prev() without the GIL 2014-01-19 13:45:02 +01:00
hofmockel
ccfa2b522e Iterator notifies errors via 'it.status()' 2014-01-19 13:41:49 +01:00
hofmockel
0d20a2564a Prevent crash if python code is executed in a rocksdb background thread 2014-01-19 12:35:36 +01:00
hofmockel
ecb6e26546 Release the GIL if calls into rocksdb are made 2014-01-18 12:24:49 +01:00