diff options
author | Alex Gorrod <alexg@wiredtiger.com> | 2015-12-07 05:37:26 +0000 |
---|---|---|
committer | Alex Gorrod <alexg@wiredtiger.com> | 2015-12-07 05:37:26 +0000 |
commit | b12f6dfb13dd8569bc1b8362216b729bfaaeef7a (patch) | |
tree | 3d9ed4e3110e5295c72b629244d7c8382385837b /NEWS | |
parent | 3ff5b3d4e33dd7cf551f6be4bc09092a979e03ff (diff) | |
download | mongo-b12f6dfb13dd8569bc1b8362216b729bfaaeef7a.tar.gz |
Edit API changes section of change log.
Diffstat (limited to 'NEWS')
-rw-r--r-- | NEWS | 344 |
1 files changed, 17 insertions, 327 deletions
@@ -4,319 +4,24 @@ WiredTiger release 2.7.0, 2015-05-13 The WiredTiger 2.7.0 release contains new features, minor API changes and bug fixes. -New features: +New features and API changes; refer to the API documentation for full details: + +959376c WT-147: Create indexes on non-empty tables. +08c0fcd WT-2217: The WT_CURSOR::insert method in this release has slightly different semantics with respect to referencing application memory. See the upgrading documentation for more information. +4368d39 WT-1315: Add an implementation of cursor joins via a new WT_SESSION::join API. +4d0ebf4 WT-2104: Add a method to flush log files via a new WT_SESSION::log_flush API. Made WT_SESSION::commit_transaction configuration options match log_flush options. +d2111ff WT-2104: Change the default WT_SESSION::transaction_sync timeout to be 20 minutes rather than infinity. +ab5a8fb WT-1728: Add a method to release resources held by a session handle via a new WT_SESSION::reset API. +d4fc69a SERVER-17078: Add a "statistics=(size)" mode to statistics cursors, which allows for retrieving file size only. +6310c3f WT-1959: Change verify to understand the difference between warnings and errors. Add a new strict mode to verify that causes warnings to be reported as errors - enable strict mode to match earlier behaivor. See the upgrading documentation for more information. +944ccd1 WT-1350: Add a new configuration option to wiredtiger_open and WT_CONNECTION::reconfigure called eviction_dirty_trigger that causes eviction to start evicting dirty pages from cache once the given threshold has been reached. +Allow a setting of 0 to wiredtiger_open and WT_CONNECTION::reconfigure called file_manager=(close_idle_time) configuration option to disable closing idle handles entirely. +263c5b7 WT-1930: Add a new configuration option to wiredtiger_open and WT_CONNECTION::reconfigure called file_manager=(close_scan_interval) which configures the interval between scans looking for idle handles. Default is 10 seconds. +292712e WT-2065: Add a new configuration option to wiredtiger_open and WT_CONNECTION::reconfigure, which is shared_cache=(quota). The effect being to limit the amount of shared cache a single participant can be assigned. +21b8330 WT-2151: Enhance logging configuration to allow reconfiguration and add a new log=(zero_fill=) configuration option that causes WiredTiger to zero fill log files on creation. +368b307 WT-2200: Add a new configuration option to wiredtiger_open that causes WiredTiger to specify the FILE_FLAG_WRITE_THROUGH on Windows when writing files. New option is write_through. +b83b901 SERVER-18356: A change to the handling of config_base option to the wiredtiger_open API. See upgrading documentation for more information. -Size only statistics. -Join cursors WT_CURSOR::join method. -Explicit log flush API via WT_CURSOR::log_flush - - -diff --git a/src/include/wiredtiger.in b/src/include/wiredtiger.in -index af7d072..08f7338 100644 ---- a/src/include/wiredtiger.in -+++ b/src/include/wiredtiger.in -+ /*! -+ * Flush the log. -+ * -+ * @param session the session handle -+ * @configstart{WT_SESSION.log_flush, see dist/api_data.py} -+ * @config{sync, forcibly flush the log and wait for it to achieve the -+ * synchronization level specified. The \c background setting initiates -+ * a background synchronization intended to be used with a later call to -+ * WT_SESSION::transaction_sync. The \c off setting forces any buffered -+ * log records to be written to the file system. The \c on setting -+ * forces log records to be written to the storage device., a string\, -+ * chosen from the following options: \c "background"\, \c "off"\, \c -+ * "on"; default \c on.} -+ * @configend -+ * @errors -+ */ -+ int __F(log_flush)(WT_SESSION *session, const char *config); -+ -+ /*! - * Insert a ::WT_LOGREC_MESSAGE type record in the database log files - * (the database must be configured for logging when this method is - * called). -@@ -1259,6 +1335,23 @@ struct __wt_session { - const char *uri, const char *newuri, const char *config); - - /*! -+ * Reset the session handle. -+ * -+ * This will reset all cursors associated with this session and clear -+ * any buffers that each cursor held. After this the buffers associated -+ * with the session will be discarded. The session can be re-used -+ * immediately after this call returns. If a transaction is running on -+ * this session, then this call will take no action and return a busy -+ * error. -+ * -+ * @snippet ex_all.c Reset the session -+ * -+ * @param session the session handle -+ * @ebusy_errors -+ */ -+ int __F(reset)(WT_SESSION *session); -+ -+ /*! - * Salvage a file or table - * - * Salvage rebuilds the file, or files of which a table is comprised, -@@ -1358,6 +1451,10 @@ struct __wt_session { - * @config{dump_shape, Display the shape of the tree after - * verification\, using the application's message handler\, intended for - * debugging., a boolean flag; default \c false.} -+ * @config{strict, Treat any verification problem as an error; by -+ * default\, verify will warn\, but not fail\, in the case of errors -+ * that won't affect future behavior (for example\, a leaked block)., a -+ * boolean flag; default \c false.} - * @configend - * @ebusy_errors - */ -@@ -1419,8 +1516,13 @@ struct __wt_session { - * @configstart{WT_SESSION.commit_transaction, see dist/api_data.py} - * @config{sync, override whether to sync log records when the - * transaction commits\, inherited from ::wiredtiger_open \c -- * transaction_sync., a string\, chosen from the following options: \c -- * "background"\, \c "off"\, \c "on"; default empty.} -+ * transaction_sync. The \c background setting initiates a background -+ * synchronization intended to be used with a later call to -+ * WT_SESSION::transaction_sync. The \c off setting does not wait for -+ * record to be written or synchronized. The \c on setting forces log -+ * records to be written to the storage device., a string\, chosen from -+ * the following options: \c "background"\, \c "off"\, \c "on"; default -+ * empty.} - * @configend - * @errors - */ -@@ -1529,8 +1631,7 @@ struct __wt_session { - * @configstart{WT_SESSION.transaction_sync, see dist/api_data.py} - * @config{timeout_ms, maximum amount of time to wait for background - * sync to complete in milliseconds. A value of zero disables the -- * timeout and returns immediately. The default waits forever., an -- * integer; default \c .} -+ * timeout and returns immediately., an integer; default \c 1200000.} - * @configend - * @errors - */ -@@ -1680,7 +1781,11 @@ struct __wt_connection { - * @config{eviction_dirty_target, continue evicting until the cache has - * less dirty memory than the value\, as a percentage of the total cache - * size. Dirty pages will only be evicted if the cache is full enough -- * to trigger eviction., an integer between 10 and 99; default \c 80.} -+ * to trigger eviction., an integer between 5 and 99; default \c 80.} -+ * @config{eviction_dirty_trigger, trigger eviction when the cache is -+ * using this much memory for dirty content\, as a percentage of the -+ * total cache size. This setting only alters behavior if it is lower -+ * than eviction_trigger., an integer between 5 and 99; default \c 95.} - * @config{eviction_target, continue evicting until the cache has less - * total memory than the value\, as a percentage of the total cache - * size. Must be less than \c eviction_trigger., an integer between 10 -@@ -1694,12 +1799,40 @@ struct __wt_connection { - * handles open before the file manager will look for handles to close., - * an integer greater than or equal to 0; default \c 250.} - * @config{ close_idle_time, amount of time in -- * seconds a file handle needs to be idle before attempting to close -- * it., an integer between 1 and 100000; default \c 30.} -+ * seconds a file handle needs to be idle before attempting to close it. -+ * A setting of 0 means that idle handles are not closed., an integer -+ * between 0 and 100000; default \c 30.} - * @config{ close_scan_interval, interval in - * seconds at which to check for files that are inactive and close - * them., an integer between 1 and 100000; default \c 10.} - * @config{ ),,} -+ * @config{log = (, enable logging. Enabling logging uses three -+ * sessions from the configured session_max., a set of related -+ * configuration options defined below.} -+ * @config{ archive, automatically archive -+ * unneeded log files., a boolean flag; default \c true.} -+ * @config{ compressor, configure a compressor -+ * for log records. Permitted values are \c "none" or custom -+ * compression engine name created with WT_CONNECTION::add_compressor. -+ * If WiredTiger has builtin support for \c "bzip2"\, \c "snappy"\, \c -+ * "lz4" or \c "zlib" compression\, these names are also available. See -+ * @ref compression for more information., a string; default \c none.} -+ * @config{ enabled, enable logging subsystem., a -+ * boolean flag; default \c false.} -+ * @config{ file_max, the maximum size of log -+ * files., an integer between 100KB and 2GB; default \c 100MB.} -+ * @config{ path, the path to a directory into -+ * which the log files are written. If the value is not an absolute -+ * path name\, the files are created relative to the database home., a -+ * string; default empty.} -+ * @config{ prealloc, -+ * pre-allocate log files., a boolean flag; default \c true.} -+ * @config{ recover, run recovery or error if -+ * recovery needs to run after an unclean shutdown., a string\, chosen -+ * from the following options: \c "error"\, \c "on"; default \c on.} -+ * @config{ zero_fill, manually write zeroes into -+ * log files., a boolean flag; default \c false.} -+ * @config{ ),,} - * @config{lsm_manager = (, configure database wide options for LSM tree - * management. The LSM manager is started automatically the first time - * an LSM tree is opened. The LSM manager uses a session from the -@@ -1722,6 +1855,9 @@ struct __wt_connection { - * @config{ name, the name of a cache that - * is shared between databases or \c "none" when no shared cache is - * configured., a string; default \c none.} -+ * @config{ quota, maximum size of cache this -+ * database can be allocated from the shared cache. Defaults to the -+ * entire shared cache size., an integer; default \c 0.} - * @config{ reserve, amount of cache this - * database is guaranteed to have available from the shared cache. This - * setting is per database. Defaults to the chunk size., an integer; -@@ -2044,19 +2180,23 @@ struct __wt_connection { - * @config{checkpoint_sync, flush files to stable storage when closing or - * writing checkpoints., a boolean flag; default \c true.} - * @config{config_base, write the base configuration file if creating the -- * database\, see @ref config_base for more information., a boolean flag; -- * default \c true.} -+ * database. If \c false in the config passed directly to ::wiredtiger_open\, -+ * will ignore any existing base configuration file in addition to not creating -+ * one. See @ref config_base for more information., a boolean flag; default \c -+ * true.} - * @config{create, create the database if it does not exist., a boolean flag; - * default \c false.} -- * @config{direct_io, Use \c O_DIRECT to access files. Options are given as a -+ * @config{direct_io, Use \c O_DIRECT on POSIX systems\, and \c -+ * FILE_FLAG_NO_BUFFERING on Windows to access files. Options are given as a - * list\, such as <code>"direct_io=[data]"</code>. Configuring \c direct_io - * requires care\, see @ref tuning_system_buffer_cache_direct_io for important -- * warnings. Including \c "data" will cause WiredTiger data files to use \c -- * O_DIRECT\, including \c "log" will cause WiredTiger log files to use \c -- * O_DIRECT\, and including \c "checkpoint" will cause WiredTiger data files -- * opened at a checkpoint (i.e: read only) to use \c O_DIRECT., a list\, with -- * values chosen from the following options: \c "checkpoint"\, \c "data"\, \c -- * "log"; default empty.} -+ * warnings. Including \c "data" will cause WiredTiger data files to use direct -+ * I/O\, including \c "log" will cause WiredTiger log files to use direct I/O\, -+ * and including \c "checkpoint" will cause WiredTiger data files opened at a -+ * checkpoint (i.e: read only) to use direct I/O. \c direct_io should be -+ * combined with \c write_through to get the equivalent of \c O_DIRECT on -+ * Windows., a list\, with values chosen from the following options: \c -+ * "checkpoint"\, \c "data"\, \c "log"; default empty.} - * @config{encryption = (, configure an encryptor for system wide metadata and - * logs. If a system wide encryptor is set\, it is also used for encrypting - * data files and tables\, unless encryption configuration is explicitly set for -@@ -2096,7 +2236,11 @@ struct __wt_connection { - * @config{eviction_dirty_target, continue evicting until the cache has less - * dirty memory than the value\, as a percentage of the total cache size. Dirty - * pages will only be evicted if the cache is full enough to trigger eviction., -- * an integer between 10 and 99; default \c 80.} -+ * an integer between 5 and 99; default \c 80.} -+ * @config{eviction_dirty_trigger, trigger eviction when the cache is using this -+ * much memory for dirty content\, as a percentage of the total cache size. -+ * This setting only alters behavior if it is lower than eviction_trigger., an -+ * integer between 5 and 99; default \c 95.} - * @config{eviction_target, continue evicting until the cache has less total - * memory than the value\, as a percentage of the total cache size. Must be - * less than \c eviction_trigger., an integer between 10 and 99; default \c 80.} -@@ -2121,11 +2265,12 @@ struct __wt_connection { - * before the file manager will look for handles to close., an integer greater - * than or equal to 0; default \c 250.} - * @config{ close_idle_time, amount of time in seconds a -- * file handle needs to be idle before attempting to close it., an integer -- * between 1 and 100000; default \c 30.} -- * @config{ close_scan_interval, interval in seconds at -- * which to check for files that are inactive and close them., an integer -- * between 1 and 100000; default \c 10.} -+ * file handle needs to be idle before attempting to close it. A setting of 0 -+ * means that idle handles are not closed., an integer between 0 and 100000; -+ * default \c 30.} -+ * @config{ close_scan_interval, interval -+ * in seconds at which to check for files that are inactive and close them., an -+ * integer between 1 and 100000; default \c 10.} - * @config{ ),,} - * @config{hazard_max, maximum number of simultaneous hazard pointers per - * session handle., an integer greater than or equal to 15; default \c 1000.} -@@ -2152,6 +2297,8 @@ struct __wt_connection { - * @config{ recover, run recovery - * or error if recovery needs to run after an unclean shutdown., a string\, - * chosen from the following options: \c "error"\, \c "on"; default \c on.} -+ * @config{ zero_fill, manually write zeroes into log -+ * files., a boolean flag; default \c false.} - * @config{ ),,} - * @config{lsm_manager = (, configure database wide options for LSM tree - * management. The LSM manager is started automatically the first time an LSM -@@ -2181,10 +2328,12 @@ struct __wt_connection { - * @config{ name, the name of a cache that is shared - * between databases or \c "none" when no shared cache is configured., a string; - * default \c none.} -- * @config{ reserve, amount of cache -- * this database is guaranteed to have available from the shared cache. This -- * setting is per database. Defaults to the chunk size., an integer; default \c -- * 0.} -+ * @config{ quota, maximum size of -+ * cache this database can be allocated from the shared cache. Defaults to the -+ * entire shared cache size., an integer; default \c 0.} -+ * @config{ reserve, amount of cache this database is -+ * guaranteed to have available from the shared cache. This setting is per -+ * database. Defaults to the chunk size., an integer; default \c 0.} - * @config{ size, maximum memory to allocate for the - * shared cache. Setting this will update the value if one is already set., an - * integer between 1MB and 10TB; default \c 500MB.} -@@ -2229,25 +2378,37 @@ struct __wt_connection { - * commits., a set of related configuration options defined below.} - * @config{ enabled, whether to sync the log on every - * commit by default\, can be overridden by the \c sync setting to -- * WT_SESSION::begin_transaction., a boolean flag; default \c false.} -+ * WT_SESSION::commit_transaction., a boolean flag; default \c false.} - * @config{ method, the method used to ensure log records - * are stable on disk\, see @ref tune_durability for more information., a - * string\, chosen from the following options: \c "dsync"\, \c "fsync"\, \c - * "none"; default \c fsync.} - * @config{ ),,} -+ * @config{use_environment, use the \c WIREDTIGER_CONFIG and \c WIREDTIGER_HOME -+ * environment variables if the process is not running with special privileges. -+ * See @ref home for more information., a boolean flag; default \c true.} - * @config{use_environment_priv, use the \c WIREDTIGER_CONFIG and \c -- * WIREDTIGER_HOME environment variables regardless of whether or not the -- * process is running with special privileges. See @ref home for more -- * information., a boolean flag; default \c false.} -+ * WIREDTIGER_HOME environment variables even if the process is running with -+ * special privileges. See @ref home for more information., a boolean flag; -+ * default \c false.} - * @config{verbose, enable messages for various events. Only available if - * WiredTiger is configured with --enable-verbose. Options are given as a - * list\, such as <code>"verbose=[evictserver\,read]"</code>., a list\, with - * values chosen from the following options: \c "api"\, \c "block"\, \c - * "checkpoint"\, \c "compact"\, \c "evict"\, \c "evictserver"\, \c "fileops"\, -- * \c "log"\, \c "lsm"\, \c "metadata"\, \c "mutex"\, \c "overflow"\, \c -- * "read"\, \c "reconcile"\, \c "recovery"\, \c "salvage"\, \c "shared_cache"\, -- * \c "split"\, \c "temporary"\, \c "transaction"\, \c "verify"\, \c "version"\, -- * \c "write"; default empty.} -+ * \c "log"\, \c "lsm"\, \c "lsm_manager"\, \c "metadata"\, \c "mutex"\, \c -+ * "overflow"\, \c "read"\, \c "reconcile"\, \c "recovery"\, \c "salvage"\, \c -+ * "shared_cache"\, \c "split"\, \c "temporary"\, \c "transaction"\, \c -+ * "verify"\, \c "version"\, \c "write"; default empty.} -+ * @config{write_through, Use \c FILE_FLAG_WRITE_THROUGH on Windows to write to -+ * files. Ignored on non-Windows systems. Options are given as a list\, such -+ * as <code>"write_through=[data]"</code>. Configuring \c write_through requires -+ * care\, see @ref tuning_system_buffer_cache_direct_io for important warnings. -+ * Including \c "data" will cause WiredTiger data files to write through cache\, -+ * including \c "log" will cause WiredTiger log files to write through cache. -+ * \c write_through should be combined with \c direct_io to get the equivalent -+ * of POSIX \c O_DIRECT on Windows., a list\, with values chosen from the -+ * following options: \c "data"\, \c "log"; default empty.} - * @configend - * Additionally, if files named \c WiredTiger.config or \c WiredTiger.basecfg - * appear in the WiredTiger home directory, they are read for configuration -********************* -+ -+/*! -+ * @} -+ * @name Statistics for join cursors -+ * @anchor statistics_join -+ * @{ -+ */ -+/*! : accesses */ -+#define WT_STAT_JOIN_ACCESSES 3000 -+/*! : actual count of items */ -+#define WT_STAT_JOIN_ACTUAL_COUNT 3001 -+/*! : bloom filter false positives */ -+#define WT_STAT_JOIN_BLOOM_FALSE_POSITIVE 3002 - /*! @} */ - /* - * Statistics section: END Changes to the statistics supported by WiredTiger: @@ -666,11 +371,6 @@ index 791cb30..3a23071 100644 +join_stats = sorted(join_stats, key=attrgetter('name')) -New features: - -959376c WT-147: Create indexes on non-empty tables. -4368d39 WT-1315: Cursor join implementation. -ab5a8fb WT-1728: Add a new WT_SESSION::reset API. Lookaside table: @@ -682,8 +382,6 @@ Lookaside table: Issues fixed in MongoDB: -d4fc69a SERVER-17078: Add a "statistics=(size)" mode to statistics cursors. -b83b901 SERVER-18356: Avoid reading baseconfig file when config_base is false. d57dc26 SERVER-18829: Have pages start in the middle of the LRU queue for eviction. b847ccc SERVER-18838: During drops, don't remove files until the metadata is durable. 8f7da9a SERVER-18875: Clean up deleted pages. @@ -708,15 +406,12 @@ a6da10e SERVER-21553: Enable fast-path truncate after splits. Other note worthy changes since the previous release: -944ccd1 WT-1350: Don't always evict pages when reconciling them. 405f45e WT-1481: Fix and clarify some sweep statistics. bc2aa57 WT-1744: Throttle worker threads based on eviction targets. 55a989e WT-1845: Allow read only transactions to commit after failure. df625dc WT-1869: Avoid doing in memory splits while a tree is being checkpointed. -263c5b7 WT-1930: Add configuration option to disable sweep of old handles. ddac54f WT-1942: Add atomic implementations for PPC64 architecture. f196510 WT-1955: LSM merge aggressive. -6310c3f WT-1959: Change WT_SESSION::verify to not error on leaked blocks, by default. 3866fa6 WT-1962: Make the hot_backup_lock a read/write lock. 58f9e99 WT-1963: Modified Java's next/prev/search/search_near to work with backup cursors. 4e0fe59 WT-1964: In Java fix session/cursor close in different thread than open. @@ -767,7 +462,6 @@ e316e61 WT-2056: Reorder btree cursor close so stats are maintained correctly. d72012b WT-2059: Include non-aggregated stats in cursor results. 3e0c7bf WT-2062: Try harder to make progress on in-memory splits. 66757f7 WT-2064: Don't spin indefinitely waiting for the handle list lock in eviction. -292712e WT-2065: Add a quota to shared cache configuration. 8f42f02 WT-2066: Update the oldest transaction ID from eviction. e167592 WT-2068: Protect discarding handles with the handle list lock. fd72a09 WT-2075: Fix a hang in loggging with parallel workload. @@ -784,7 +478,6 @@ f883d27 WT-2094: Eliminate direct write and record unbuffered log records that. ff1da28 WT-2100: Rename evict to evict_queue so it's easier to search for. 41db2ee WT-2101: Don't update the logging ckpt_lsn on clean shutdown. e1d6886 WT-2102: Fix a hang in log slot join when forcing log writes. -4d0ebf4 WT-2104: New log_flush API to control the flushing or syncing of the log. 0e96683 WT-2105: If a corrupted WT_CELL_VALUE_COPY cell has an offset larger than the current cell's offset in the page, we'll read memory outside of the page image. 6a565bc WT-2108: Rework in-memory page rewrite support (WT_PM_REC_REWRITE). dcb0ddb WT-2114: Make application eviction fairer. @@ -802,7 +495,6 @@ aab8101 WT-2137: Check the sync_lsn is in the correct file before moving it for 323af84 WT-2139: At read-uncommitted isolation, keep the same ID pinned while cursors are positioned. 751c628 WT-2146: Do quick searches for short keys. 62998ce WT-2148: Change encoding functions to avoid -Wshift-negative-value. -21b8330 WT-2151: Make zero fill of files configurable in case the OS can't be trusted. 6c16fdd WT-2153: Fix bug. Now we always need to start the log_server thread. 6a5fca3 WT-2154: Make btree dump safer. 0d74bc6 WT-2155: Remove last use of F_CAS_ATOMIC and the associated macro. @@ -830,14 +522,12 @@ a4545bf WT-2189: Make F_SET (and F_CLR) into a void expression. 438f455 WT-2195: Fix a hang after giving up on a reverse split. ff27fe9 WT-2196: Fix error handling in size only statistics. 0a1ee34 WT-2199: Fix transaction sync inconsistency. -368b307 WT-2200: Change WiredTiger caching strategy on Windows. 2ff1fd6 WT-2203: Release an allocated page on error. 3b3cf2a WT-2204: Don't take a local copy of page->modify until we know the page is dirty. 179d4d0 WT-2206: Change cache operations from flags to an enum. 82514ca WT-2207: Track whenever a session has a handle exclusive. 78bd4ac WT-2210: Raw compression fails if row-store recovery precedes column-store recovery. c360d53 WT-2212: Add a "use_environment" config to "wiredtiger_open". -08c0fcd WT-2217: Change WT_CURSOR::insert to clear "set" key/value on return. a72ddb7 WT-2218: Add truncate stats. ce8c091 WT-2219: Enhancements to in-memory testing. e2f1130 WT-2220: Split WT_TIMEDIFF macro into unit specific macros. |