The WiredTiger 2.6.0 release contains new features, minor API changes and many bug fixes.
New features:
- Add support for "at rest" encryption of WiredTiger databases via a new encryption API.
refs WT-1822
- Add support for bulk load in LSM trees (previously the bulk configuration for cursor create was ignored by LSM trees).
refs SERVER-18321, WT-1922
- Add enhanced compression support for LZ4. Change is not compatible with tables created with LZ4 compression using earlier versions of WiredTiger. See the upgrading documentation for more information.
API and behavior changes:
- Enhance performance of WT_SESSION::drop with force enabled (mark the table as dead and discard it in the background without writing any content to disk, rather than flushing content from the cache).
refs WT-1894
- Add an API to validate configuration strings.
refs WT-1739
- Disallow the cache_resident flag on LSM trees.
refs WT-1905
- Enhance the controls for how aggressively idle handles are closed, update the wiredtiger_open file_manager configuration options to expose that control.
refs SERVER-17907, WT-1856
Significant bug fixes and performance enhancements:
- Fix bugs in checkpoint: committing the checkpoint transaction before it was safe, failure to sync the metadata file before updating the turtle file.
refs SERVER-18316
- Don't attempt to validate configuration settings for extensions (collators, compressors, encryptors, extractors). The extension may be valid but not yet loaded so it is not possible to validate.
- Check the magic and version numbers in log files when first opening them.
- Fix a bug with cache leaf size accounting for statistics.
refs WT-1885, WT-1919
- Fix a bug where checkpoint could skip a page that was rewritten in memory.
refs WT-1946
- Fix a bug in WT_CURSOR::search_near with a random cursor where deleted records could be returned.
refs WT-1921, WT-1944
- Fix a bug in handle close where we could fail to clear the open handle flag.
refs WT-1915
- Fix a bug in in-memory splits, don't allow any other eviction of a page if the page is being split.
refs WT-1916, WT-1917
- Fix a bug in btree open where failure while opening a checkpoint may not clean up completely.
refs WT-1598
- Fix a performance problem where long running transactions could continually scan long update chains looking for obsolete entries, when there is no chance of finding any.
refs WT-1913
- Fix a performance problem where many threads accessing a single page could prevent WiredTiger from evicting or splitting the page.
refs WT-1912
- Fix a source of deadlock bugs by restructuring how we lock handles. Clean up the definition of when it is safe to acquire different locks.
refs WT-1598
- Fix a bug where we could evict pages from a file marked as cache resident, add optimizations for cache resident files.
refs SERVER-18192
- Fix a deadlock related to LSM (cases where closing a file with an existing checkpoint could self deadlock).
refs WT-716
- Only split large in-memory pages if there is a need to keep them in cache (otherwise, it is better to reconcile and evict them immediately).
refs WT-1890, WT-1896
- Fix a race on shutdown where the eviction server could still have been accessing files while they were being closed.
refs WT-1893
- Fix a case where we could run recovery unnecessarily if there were only non-data changing log records since the last checkpoint.
refs WT-1892
- Update API documentation to explain internal session handle usage. This allows users to do specific calculations based on the session_max setting.
- Fix a bug in LSM where updates with overwrite could be skipped incorrectly.
refs BF-829
- Fix a cursor bug where searching and traversing in different combinations could lead to data buffers being freed before they should be.
refs WT-1887
- Fix a bug when closing bulk cursors, where a file could be left open.
- Fix a bug on Windows related to truncating files (SetEndofFile does not ignore truncation requests like POSIX fallocate).
- Fix a bug in file truncate, where we could truncate to the wrong place if there was a race extending the file at the same time.
refs WT-1871
- Fix a bug in reconciliation where page boundary structures could reference freed memory.
refs WT-1852
- Change the WT_CURSOR::search and WT_CURSOR::search_near API to first check any currently pinned page before starting a regular descending search.
- Fix a bug in recovery where an error was returned if a transaction spanned an entire log file.
- Fix a bug where recovery could be unnecessarily run during startup.
- Enhance the Python cursor API to allow setting keys and values using array notation.
- Fix a bug where creating a column store with large gaps in the key range would lead to poor performance.
refs WT-1807.
- Improve the performance of the core btree search routine by using low-level x86 vectorized search instructions.