diff options
author | Alex Gorrod <alexg@wiredtiger.com> | 2015-12-07 04:20:24 +0000 |
---|---|---|
committer | Alex Gorrod <alexg@wiredtiger.com> | 2015-12-07 04:20:24 +0000 |
commit | debe1b23f393cc224669fc31e18022fed241c9c5 (patch) | |
tree | f699ef098cc9167dd189377e6811bee324120770 /NEWS | |
parent | b2517d049d4392c16efb64a054b67d0a66a2c9c0 (diff) | |
download | mongo-debe1b23f393cc224669fc31e18022fed241c9c5.tar.gz |
Add first pass release changelog for 2.7.0
Diffstat (limited to 'NEWS')
-rw-r--r-- | NEWS | 953 |
1 files changed, 953 insertions, 0 deletions
@@ -1,3 +1,956 @@ +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: + +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: + +diff --git a/dist/stat_data.py b/dist/stat_data.py +index 791cb30..3a23071 100644 +--- a/dist/stat_data.py ++++ b/dist/stat_data.py +@@ -7,14 +7,21 @@ + # currently open'. + # NOTE: All statistics descriptions must have a prefix string followed by ':'. + # +-# Optional configuration flags: +-# no_clear Value not cleared when statistics cleared +-# no_scale Don't scale value per second in the logging tool script +-# + # Data-source statistics are normally aggregated across the set of underlying + # objects. Additional optionaly configuration flags are available: + # no_aggregate Ignore the value when aggregating statistics + # max_aggregate Take the maximum value when aggregating statistics ++# ++# Optional configuration flags: ++# no_clear Value not cleared when statistics cleared ++# no_scale Don't scale value per second in the logging tool script ++# ++# The no_clear flag is a little complicated: it means we don't clear the values ++# when resetting statistics after each run (necessary when the WiredTiger engine ++# is updating values that persist over multiple runs, for example the count of ++# cursors), but it also causes the underlying display routines to not treat the ++# change between displays as relative to the number of seconds, that is, it's an ++# absolute value. The no_clear flag should be set in either case. + + from operator import attrgetter + import sys +@@ -60,6 +67,10 @@ class DhandleStat(Stat): + prefix = 'data-handle' + def __init__(self, name, desc, flags=''): + Stat.__init__(self, name, DhandleStat.prefix, desc, flags) ++class JoinStat(Stat): ++ prefix = '' # prefix is inserted dynamically ++ def __init__(self, name, desc, flags=''): ++ Stat.__init__(self, name, JoinStat.prefix, desc, flags) + class LogStat(Stat): + prefix = 'log' + def __init__(self, name, desc, flags=''): +@@ -120,9 +131,9 @@ connection_stats = [ + AsyncStat('async_alloc_race', 'number of allocation state races'), + AsyncStat('async_alloc_view', + 'number of operation slots viewed for allocation'), ++ AsyncStat('async_cur_queue', 'current work queue length'), + AsyncStat('async_flush', 'number of flush calls'), + AsyncStat('async_full', 'number of times operation allocation failed'), +- AsyncStat('async_cur_queue', 'current work queue length'), + AsyncStat('async_max_queue', + 'maximum work queue length', 'no_clear,no_scale'), + AsyncStat('async_nowork', 'number of times worker found no work'), +@@ -149,11 +160,11 @@ connection_stats = [ + ########################################## + CacheStat('cache_bytes_dirty', + 'tracked dirty bytes in the cache', 'no_clear,no_scale'), +- CacheStat('cache_bytes_inuse', +- 'bytes currently in the cache', 'no_clear,no_scale'), + CacheStat('cache_bytes_internal', + 'tracked bytes belonging to internal pages in the cache', + 'no_clear,no_scale'), ++ CacheStat('cache_bytes_inuse', ++ 'bytes currently in the cache', 'no_clear,no_scale'), + CacheStat('cache_bytes_leaf', + 'tracked bytes belonging to leaf pages in the cache', + 'no_clear,no_scale'), +@@ -165,11 +176,11 @@ connection_stats = [ + CacheStat('cache_bytes_read', 'bytes read into cache'), + CacheStat('cache_bytes_write', 'bytes written from cache'), + CacheStat('cache_eviction_app', 'pages evicted by application threads'), ++ CacheStat('cache_eviction_checkpoint', 'checkpoint blocked page eviction'), + CacheStat('cache_eviction_clean', 'unmodified pages evicted'), + CacheStat('cache_eviction_deepen', + 'page split during eviction deepened the tree'), + CacheStat('cache_eviction_dirty', 'modified pages evicted'), +- CacheStat('cache_eviction_checkpoint', 'checkpoint blocked page eviction'), + CacheStat('cache_eviction_fail', + 'pages selected for eviction unable to be evicted'), + CacheStat('cache_eviction_force', +@@ -192,33 +203,48 @@ connection_stats = [ + 'eviction server populating queue, but not evicting pages'), + CacheStat('cache_eviction_slow', + 'eviction server unable to reach eviction goal'), +- CacheStat('cache_eviction_split', 'pages split during eviction'), ++ CacheStat('cache_eviction_split_internal', ++ 'internal pages split during eviction'), ++ CacheStat('cache_eviction_split_leaf', 'leaf pages split during eviction'), + CacheStat('cache_eviction_walk', 'pages walked for eviction'), + CacheStat('cache_eviction_worker_evicting', + 'eviction worker thread evicting pages'), + CacheStat('cache_inmem_split', 'in-memory page splits'), ++ CacheStat('cache_inmem_splittable', ++ 'in-memory page passed criteria to be split'), ++ CacheStat('cache_lookaside_insert', 'lookaside table insert calls'), ++ CacheStat('cache_lookaside_remove', 'lookaside table remove calls'), + CacheStat('cache_overhead', 'percentage overhead', 'no_clear,no_scale'), + CacheStat('cache_pages_dirty', + 'tracked dirty pages in the cache', 'no_clear,no_scale'), + CacheStat('cache_pages_inuse', + 'pages currently held in the cache', 'no_clear,no_scale'), + CacheStat('cache_read', 'pages read into cache'), ++ CacheStat('cache_read_lookaside', ++ 'pages read into cache requiring lookaside entries'), + CacheStat('cache_write', 'pages written from cache'), ++ CacheStat('cache_write_lookaside', ++ 'page written requiring lookaside records'), ++ CacheStat('cache_write_restore', ++ 'pages written requiring in-memory restoration'), + + ########################################## + # Dhandle statistics + ########################################## +- DhandleStat('dh_conn_handles', 'connection dhandles swept'), +- DhandleStat('dh_conn_ref', 'connection candidate referenced'), +- DhandleStat('dh_conn_sweeps', 'connection sweeps'), +- DhandleStat('dh_conn_tod', 'connection time-of-death sets'), ++ DhandleStat('dh_conn_handle_count', ++ 'connection data handles currently active', 'no_clear,no_scale'), ++ DhandleStat('dh_sweep_close', 'connection sweep dhandles closed'), ++ DhandleStat('dh_sweep_remove', ++ 'connection sweep dhandles removed from hash list'), ++ DhandleStat('dh_sweep_ref', 'connection sweep candidate became referenced'), ++ DhandleStat('dh_sweep_tod', 'connection sweep time-of-death sets'), ++ DhandleStat('dh_sweeps', 'connection sweeps'), + DhandleStat('dh_session_handles', 'session dhandles swept'), + DhandleStat('dh_session_sweeps', 'session sweep attempts'), + + ########################################## + # Logging statistics + ########################################## +- LogStat('log_buffer_grow', 'log buffer size increases'), + LogStat('log_buffer_size', 'total log buffer size', 'no_clear,no_scale'), + LogStat('log_bytes_payload', 'log bytes of payload data'), + LogStat('log_bytes_written', 'log bytes written'), +@@ -226,37 +252,40 @@ connection_stats = [ + LogStat('log_compress_len', 'total size of compressed records'), + LogStat('log_compress_mem', 'total in-memory size of compressed records'), + LogStat('log_compress_small', 'log records too small to compress'), +- LogStat('log_compress_writes', 'log records compressed'), + LogStat('log_compress_write_fails', 'log records not compressed'), ++ LogStat('log_compress_writes', 'log records compressed'), ++ LogStat('log_flush', 'log flush operations'), + LogStat('log_max_filesize', 'maximum log file size', 'no_clear,no_scale'), + LogStat('log_prealloc_files', 'pre-allocated log files prepared'), + LogStat('log_prealloc_max', + 'number of pre-allocated log files to create', 'no_clear,no_scale'), ++ LogStat('log_prealloc_missed', ++ 'pre-allocated log files not ready and missed'), + LogStat('log_prealloc_used', 'pre-allocated log files used'), + LogStat('log_release_write_lsn', 'log release advances write LSN'), + LogStat('log_scan_records', 'records processed by log scan'), + LogStat('log_scan_rereads', 'log scan records requiring two reads'), + LogStat('log_scans', 'log scan operations'), +- LogStat('log_sync', 'log sync operations'), +- LogStat('log_sync_dir', 'log sync_dir operations'), +- LogStat('log_writes', 'log write operations'), +- LogStat('log_write_lsn', 'log server thread advances write LSN'), +- +- LogStat('log_slot_consolidated', 'logging bytes consolidated'), + LogStat('log_slot_closes', 'consolidated slot closures'), ++ LogStat('log_slot_coalesced', 'written slots coalesced'), ++ LogStat('log_slot_consolidated', 'logging bytes consolidated'), + LogStat('log_slot_joins', 'consolidated slot joins'), + LogStat('log_slot_races', 'consolidated slot join races'), +- LogStat('log_slot_switch_fails', +- 'slots selected for switching that were unavailable'), +- LogStat('log_slot_toobig', 'record size exceeded maximum'), +- LogStat('log_slot_toosmall', +- 'failed to find a slot large enough for record'), ++ LogStat('log_slot_switch_busy', 'busy returns attempting to switch slots'), + LogStat('log_slot_transitions', 'consolidated slot join transitions'), ++ LogStat('log_slot_unbuffered', 'consolidated slot unbuffered writes'), ++ LogStat('log_sync', 'log sync operations'), ++ LogStat('log_sync_dir', 'log sync_dir operations'), ++ LogStat('log_write_lsn', 'log server thread advances write LSN'), ++ LogStat('log_writes', 'log write operations'), ++ LogStat('log_zero_fills', 'log files manually zero-filled'), + + ########################################## + # Reconciliation statistics + ########################################## + RecStat('rec_pages', 'page reconciliation calls'), ++ RecStat('rec_page_delete', 'pages deleted'), ++ RecStat('rec_page_delete_fast', 'fast-path pages deleted'), + RecStat('rec_pages_eviction', 'page reconciliation calls for eviction'), + RecStat('rec_split_stashed_bytes', + 'split bytes currently awaiting free', 'no_clear,no_scale'), +@@ -270,6 +299,8 @@ connection_stats = [ + TxnStat('txn_checkpoint', 'transaction checkpoints'), + TxnStat('txn_checkpoint_generation', + 'transaction checkpoint generation', 'no_clear,no_scale'), ++ TxnStat('txn_checkpoint_running', ++ 'transaction checkpoint currently running', 'no_clear,no_scale'), + TxnStat('txn_checkpoint_time_max', + 'transaction checkpoint max time (msecs)', 'no_clear,no_scale'), + TxnStat('txn_checkpoint_time_min', +@@ -278,17 +309,21 @@ connection_stats = [ + 'transaction checkpoint most recent time (msecs)', 'no_clear,no_scale'), + TxnStat('txn_checkpoint_time_total', + 'transaction checkpoint total time (msecs)', 'no_clear,no_scale'), +- TxnStat('txn_checkpoint_running', +- 'transaction checkpoint currently running', 'no_clear,no_scale'), ++ TxnStat('txn_commit', 'transactions committed'), ++ TxnStat('txn_fail_cache', ++ 'transaction failures due to cache overflow'), + TxnStat('txn_pinned_checkpoint_range', + 'transaction range of IDs currently pinned by a checkpoint', +- 'no_clear,no_scale'), ++ 'no_clear,no_scale'), + TxnStat('txn_pinned_range', + 'transaction range of IDs currently pinned', 'no_clear,no_scale'), +- TxnStat('txn_sync', 'transaction sync calls'), +- TxnStat('txn_commit', 'transactions committed'), +- TxnStat('txn_fail_cache', 'transaction failures due to cache overflow'), ++ TxnStat('txn_pinned_snapshot_range', ++ 'transaction range of IDs currently pinned by named snapshots', ++ 'no_clear,no_scale'), ++ TxnStat('txn_snapshots_created', 'number of named snapshots created'), ++ TxnStat('txn_snapshots_dropped', 'number of named snapshots dropped'), + TxnStat('txn_rollback', 'transactions rolled back'), ++ TxnStat('txn_sync', 'transaction sync calls'), + + ########################################## + # LSM statistics +@@ -324,8 +359,10 @@ connection_stats = [ + CursorStat('cursor_prev', 'cursor prev calls'), + CursorStat('cursor_remove', 'cursor remove calls'), + CursorStat('cursor_reset', 'cursor reset calls'), ++ CursorStat('cursor_restart', 'cursor restarted searches'), + CursorStat('cursor_search', 'cursor search calls'), + CursorStat('cursor_search_near', 'cursor search near calls'), ++ CursorStat('cursor_truncate', 'truncate calls'), + CursorStat('cursor_update', 'cursor update calls'), + + ########################################## +@@ -364,8 +401,10 @@ dsrc_stats = [ + CursorStat('cursor_remove', 'remove calls'), + CursorStat('cursor_remove_bytes', 'cursor-remove key bytes removed'), + CursorStat('cursor_reset', 'reset calls'), ++ CursorStat('cursor_restart', 'restarted searches'), + CursorStat('cursor_search', 'search calls'), + CursorStat('cursor_search_near', 'search near calls'), ++ CursorStat('cursor_truncate', 'truncate calls'), + CursorStat('cursor_update', 'update calls'), + CursorStat('cursor_update_bytes', 'cursor-update value bytes updated'), + +@@ -380,6 +419,8 @@ dsrc_stats = [ + 'column-store fixed-size leaf pages', 'no_scale'), + BtreeStat('btree_column_internal', + 'column-store internal pages', 'no_scale'), ++ BtreeStat('btree_column_rle', ++ 'column-store variable-size RLE encoded values', 'no_scale'), + BtreeStat('btree_column_variable', + 'column-store variable-size leaf pages', 'no_scale'), + BtreeStat('btree_compact_rewrite', 'pages rewritten by compaction'), +@@ -423,9 +464,9 @@ dsrc_stats = [ + ########################################## + # Block manager statistics + ########################################## +- BlockStat('block_alloc', 'blocks allocated'), + BlockStat('allocation_size', + 'file allocation unit size', 'no_aggregate,no_scale'), ++ BlockStat('block_alloc', 'blocks allocated'), + BlockStat('block_checkpoint_size', 'checkpoint size', 'no_scale'), + BlockStat('block_extension', 'allocations requiring file extension'), + BlockStat('block_free', 'blocks freed'), +@@ -450,22 +491,32 @@ dsrc_stats = [ + 'data source pages selected for eviction unable to be evicted'), + CacheStat('cache_eviction_hazard', 'hazard pointer blocked page eviction'), + CacheStat('cache_eviction_internal', 'internal pages evicted'), +- CacheStat('cache_eviction_split', 'pages split during eviction'), ++ CacheStat('cache_eviction_split_internal', ++ 'internal pages split during eviction'), ++ CacheStat('cache_eviction_split_leaf', 'leaf pages split during eviction'), + CacheStat('cache_inmem_split', 'in-memory page splits'), ++ CacheStat('cache_inmem_splittable', ++ 'in-memory page passed criteria to be split'), + CacheStat('cache_overflow_value', + 'overflow values cached in memory', 'no_scale'), + CacheStat('cache_read', 'pages read into cache'), ++ CacheStat('cache_read_lookaside', ++ 'pages read into cache requiring lookaside entries'), + CacheStat('cache_read_overflow', 'overflow pages read into cache'), + CacheStat('cache_write', 'pages written from cache'), ++ CacheStat('cache_write_lookaside', ++ 'page written requiring lookaside records'), ++ CacheStat('cache_write_restore', ++ 'pages written requiring in-memory restoration'), + + ########################################## + # Compression statistics + ########################################## +- CompressStat('compress_raw_ok', 'raw compression call succeeded'), + CompressStat('compress_raw_fail', + 'raw compression call failed, no additional data available'), + CompressStat('compress_raw_fail_temporary', + 'raw compression call failed, additional data available'), ++ CompressStat('compress_raw_ok', 'raw compression call succeeded'), + CompressStat('compress_read', 'compressed pages read'), + CompressStat('compress_write', 'compressed pages written'), + CompressStat('compress_write_fail', 'page written failed to compress'), +@@ -476,21 +527,22 @@ dsrc_stats = [ + # Reconciliation statistics + ########################################## + RecStat('rec_dictionary', 'dictionary matches'), ++ RecStat('rec_multiblock_internal', 'internal page multi-block writes'), ++ RecStat('rec_multiblock_leaf', 'leaf page multi-block writes'), ++ RecStat('rec_multiblock_max', ++ 'maximum blocks required for a page', 'max_aggregate,no_scale'), + RecStat('rec_overflow_key_internal', 'internal-page overflow keys'), + RecStat('rec_overflow_key_leaf', 'leaf-page overflow keys'), + RecStat('rec_overflow_value', 'overflow values written'), +- RecStat('rec_page_match', 'page checksum matches'), + RecStat('rec_page_delete', 'pages deleted'), ++ RecStat('rec_page_delete_fast', 'fast-path pages deleted'), ++ RecStat('rec_page_match', 'page checksum matches'), + RecStat('rec_pages', 'page reconciliation calls'), + RecStat('rec_pages_eviction', 'page reconciliation calls for eviction'), + RecStat('rec_prefix_compression', + 'leaf page key bytes discarded using prefix compression'), + RecStat('rec_suffix_compression', + 'internal page key bytes discarded using suffix compression'), +- RecStat('rec_multiblock_internal', 'internal page multi-block writes'), +- RecStat('rec_multiblock_leaf', 'leaf page multi-block writes'), +- RecStat('rec_multiblock_max', +- 'maximum blocks required for a page', 'max_aggregate,no_scale'), + + ########################################## + # Transaction statistics +@@ -499,3 +551,14 @@ dsrc_stats = [ + ] + + dsrc_stats = sorted(dsrc_stats, key=attrgetter('name')) ++ ++########################################## ++# Cursor Join statistics ++########################################## ++join_stats = [ ++ JoinStat('accesses', 'accesses'), ++ JoinStat('actual_count', 'actual count of items'), ++ JoinStat('bloom_false_positive', 'bloom filter false positives'), ++] ++ ++join_stats = sorted(join_stats, key=attrgetter('name')) + +Other note worthy changes since the previous release: + +2df5658 WT-2257: Fixes when given multiple thread workload configs. +c1013ce WT-2256: Fix interval timer for wtperf throttling. +fb7fc2f WT-2245: Add a multiplier to the truncate stones to deal with very high throughput cases +bff6525 SERVER-21553: Free blocks during reverse splits. +c70b097 WT-2253: prioritize WT_READGEN_OLDEST pages for eviction. +4fc3e39 WT-2253: Evict pages left behind by in-memory splits. +e731ef8 WT-2251: Free addresses when we discard deleted page references. +0e93d60 SERVER-21691: Avoid insert stalls +264ec21 WT-2249: Keep eviction stuck until cache usage is under 100%. +dca1411 WT-2250: Minor fix. Use SET instead of INCRV for stat. +4c49948 WT-2244: Trigger in-memory splits sooner. +9f2e4f3 WT-2248: WT_SESSION.close is updating WT_CONNECTION_IMPL.default_session +a6da10e SERVER-21553: Enable fast-path truncate after splits. +39dfd21 WT-2243: Don't keep transaction IDs pinned for reading from checkpoints. +4e1844c WT-2230: multi-split error path +cace179 WT-2228: avoid unnecessary raw-compression calls. +890ee34 SERVER-21619: Don't do internal page splits after a tree is marked DEAD. +6c7338f WT-2241: Use a lock to protect transaction ID allocation. +978c237 WT-2234: Coverity analysis warnings +e90b590 WT-2237: Avoid yields if we race allocating transaction IDs. +0a52a80 WT-2237: Have threads publish unique transaction IDs so that updates always become visible immediately on commit +2cf57a6 SERVER-21585: Don't use the lookaside file until the cache is stuck full. +4ad8df7 SERVER-21585: Clean up LAS based on the current count of inserted records +2d01a56 SERVER-21568: Fix a use after-free +8b3bd66 WT-2227: Resolve lint errors in join implementation +16c0a1a WT-1315: Fix some leaks with join cursors. +59857f9 WT-2222: Add statistics for named snapshots. +4368d39 WT-1315: Cursor join implementation +a72ddb7 WT-2218: Add truncate stats +fb9cebe WT-2224: Track which deleted refs are discarded by a split. +e2f1130 WT-2220: Split WT_TIMEDIFF macro into unit specific macros. +be412b5 WT-2182: when internal pages grow large enough, split them into their parents +ce8c091 WT-2219: Enhancements to in-memory testing +347d922 WT-2220: time_t cleanup. +08c0fcd WT-2217: change WT_CURSOR.insert to clear "set" key/value on return +d1b5e7f WT-2135: Fix log_only setting for backup cursor. Fix initialization. +78bd4ac WT-2210: raw compression fails if row-store recovery precedes column-store recovery +c1b2634 WT-2182: fixes for splitting up the tree. +0a1ee34 WT-2199: Fix transaction sync inconsistency. +ee31bb2 WT-2182: Simplify the split deepen logic. +c360d53 WT-2212: Add a "use_environment" config to "wiredtiger_open" +82514ca WT-2207: Track whenever a session has a handle exclusive. +179d4d0 WT-2206: change cache operations from flags to an enum. +3f132a4 WT-2182: detect internal page split races. +368b307 WT-2200: Change WiredTiger caching strategy on Windows +3b3cf2a WT-2204: Don't take a local copy of page->modify until we know the page is dirty. +5e23614 WT-2202: release of the "current" page is wrong. +2ff1fd6 WT-2203: release an allocated page on error +4aa5f2a WT-2184: recovery test +ff27fe9 WT-2196: Fix error handling in size only statistics. +9b1febc WT-2194: Java close callbacks should handle cursors that Java code did not open. +a887cb2 WT-2196: Fix size-only statistics when there are LSM tables. +2f0b3e2 WT-2193: Handle read-committed metadata checkpoints during snapshot transactions +b1de96c WT-2196: Fix size-only statistics when there are LSM tables. +438f455 WT-2195: Fix a hang after giving up on a reverse split. +4ba5698 WT-2192: Fix the logic around checking whether internal page is evictable. +f6b12d3 WT-2187: Add flag for flushing a slot +30ab327 WT-2191: in memory disk image no longer the same as saved updates +ba931c1 SERVER-21027: Don't leave empty internal pages in the tree +fdfa804 WT-2178: In-memory storage engine support +04da9bb WT-2127: Back out some of a change to split internal pages sooner. +3868d0b WT-2170: Application metadata cursors expect read-uncommitted semantics. +c27e78e WT-2184: Fix log scan bug when final record has many trailing zeros +a4545bf WT-2189: Make F_SET (and F_CLR) into a void expression. +f4d20a3 SERVER-21027: Fix reverse splits to keep the original child ref locked +9584be3 WT-2185: Don't do reverse splits when closing a file. +91ee6a2 WT-2170: Move metadata read uncommitted to search +35d46c3 SERVER-21027: Reverse split if there are many deleted pages +6839f82 WT-2170: Add a macro perform an operation at an isolation level. +0619d4a WT-2146: fast q search. +751c628 WT-2146: Do quick searches based on search key size +cd6ce97 WT-2116: Add diagnostic checks for stuck cache and dump the state. +a0fc9df WT-2140: WT_SESSION.reset can release more memory +e9cddf2 WT-2164: minor cleanups to __wt_lsm_checkpoint_chunk +0d85ebe WT-2164: Prevent another chunk checkpoint while the first is still in progress. +3e5ed7e WT-2164: Have LSM enable metadata tracking prior to checkpointing a chunk. +be544dd WT-2180: remove cursor.{search,search-near,remove} key size validation +346ad40 WT-2126: clean up if there is an error during splits +b9bd01f WT-2179: Added decorator to mark txn13 as part of the --long test suite. +497b744 WT-2174: Avoid the table list lock when creating a size only statistics cursor. +0766b6d WT-2126: __split_deepen() doesn't really need to panic +5d4c952 WT-2170: Add turtle file lock. +e167592 WT-2068: Protect discarding handles with the handle list lock. +99024f6 WT-2068: complain if the live system is re-opened. +8f0238e WT-2068: Put live_open usage under HAVE_DIAGNOSTIC and an assert. +a81aae8 WT-2165: Remove FALLOC_FL_KEEP_SIZE flag. +2865a76 WT-2167: Switch recovery to using an internal session. +46b4ad5 SERVER-19954: Don't scan tracked handles during checkpoints. +6a565bc WT-2108: Rework in-memory page rewrite support (WT_PM_REC_REWRITE). +6a5fca3 WT-2154: Make btree dump safer +323af84 WT-2139: At read-uncommitted isolation, keep the same ID pinned while cursors are positioned +544f27d WT-2162: Add null pointer check, needed after an index is dropped. +b1fb715 WT-2149: Track if the lookaside table is open when starting eviction workers +bf1d359 WT-2157: If we give up trying to split a page, make sure it is written by the next checkpoint +0d74bc6 WT-2155: Remove last use of F_CAS_ATOMIC and the associated macro. +ce9d265 WT-2159: don't check the config twice in one path. +cc42bda WT-2149: WT-2156: Allow eviction workers to restart. +ecfbbb0 WT-2149: Deadlock opening lookaside table cursor +0390b29 WT-2149: Fix the order of creation of the lookaside table +21b8330 WT-2151: Add zero fill config +ad56c6a SERVER-20303: tuning in-memory splits for when inserting large objects +f12d478 SERVER-20303: Require a minimum item count for in-memory splits. +79f74e5 WT-2131: Switch to using a lock to control page splits. +3df6a90 WT-2152: Add support for WTPERF operations recieving a rollback +dcb0ddb WT-2114: Make application eviction fairer +6c16fdd WT-2153: Fix bug. Now we always need to start the log_server thread. +3f22640 WT-2131: Switch all WT_PAGE_RECONCILIATION locks to fair locks. +ffcb888 SERVER-20543: Coverity/lint cleanups. +62998ce WT-2148: Change encoding functions to avoid -Wshift-negative-value +aab8101 WT-2137: Check the sync_lsn is in the correct file before moving it forward. +7a623ae WT-2143: Revert part of the recent log cleanup changes. +51cf672 WT-2119: don't evict clean multiblock pages with overflow items during checkpoints. +d76280f WT-2112: Boolean conversion pass over include. +c8e1296 WT-2141: __meta_track_apply, __meta_track_unroll have unnecessarily complex error handling. +6831485 WT-2127: Deepen the tree more regularly to avoid wide internal pages. +5a354f7 WT-2119: don't evict clean multiblock pages with overflow items during checkpoints. +87c52d4 WT-2126: page split locking +8c223e4 WT-2134: Flush all buffered log records in log_flush +02a3d9f WT-2132: Make debug dump function more robust to errors. +435026b WT-2132: Be more defensive in code used to debug address structures. +53638a1 WT-2112: Use bool in more places +aa524da WT-2088: Clean up log verbose messages and comments. Some code cleanup. +f1837bf WT-2122: Convert more expressions to use bool +91deacb WT-2122: more boolean conversion +75a4655 WT-2039: Add error check and unit test for log records over 4Gb. +10c2f15 WT-2115: Don't skip truncated pages that are part of a checkpoint +959376c WT-147: Dynamic Index creation. Use bulk=unordered +c2aa721 WT-2117: Set a minimum of 1MB cache per thread in test/format +90d9d96 WT-2104: Write up commit and log_flush options. +f4d3739 WT-2112: Coverity 73704, 73705, memory leak in salvage +20d13e8 WT-2111: coverity complaint +3b72361 SERVER-20159: Make all readers wait while the cache is full. +4d0ebf4 WT-2104: New log_flush API to control the flushing or syncing of the log. +5ab26af WT-2042: Only try to evict tombstones that are visible to all readers. +8be547b SERVER-20193: Fix obsolete transaction check +fd72a09 WT-2075: Add test for log hang with large parallel workload +8a8867b WT-2093: Fix bugs treating error returns as booleans +7505a02 SERVER-20385: WT_CURSOR.next(random) more random +41db2ee WT-2101: Don't update the logging ckpt_lsn on clean shutdown. +e1d6886 WT-2102: Combine the switch and force_write functions. +ff1da28 WT-2100: Rename evict to evict_queue so it's easier to search for. +4c66372 WT-147: Add undocumented bulk=unordered for LSM cursors. +d9391c0 WT-2093: Use the C99 bool type to clarify when functions return true/false +85187fc WT-2075: When closing a slot, detect, return and handle different values. +9008260 WT-2097: Reintroduce immediate waits when forced eviction is necessary. +334e103 WT-2089: relax restrictions on multiblock eviction, in-memory splits +f883d27 WT-2094: Eliminate direct write and record unbuffered log records that +b044603 SERVER-20193: Performance regression fix +39a69ec WT-2086: Add a statistic to track when can_evict sees splittable pages. +83b8db7 WT-2092: Free log condition variables after all threads are joined. +87592ec WT-2074: fix a race between lookaside table reconciliation and checkpoints. +f13b788 WT-2090: Avoid losing errors from the underlying Windows functions. +6008b41 WT-2085: Run some of the log_server threads operations more frequently +69e81dc WT-2034: Fine tune weighting of operations in shared cache balancing. +e9a2a1c WT-2069: Add truncate to wtperf_run.sh +0b412d6 WT-2076: cleanup +aee1c94 WT-2035: For index cursors, keep track of which column groups need to be positioned. +9734d85 WT-2081: Make verify progress reporting less verbose. +11c0fa0 WT-2078: prevent segfault with NULL statistics cursor during OOM conditions +e316e61 WT-2056: Reorder btree cursor close so stats are maintained correctly. +1e35c7d WT-1967: fix an "uninitialized variable" warning. +6a5a461 WT-1967: evict pages where updates are still required by older readers. +f0ac3e1 WT-2034: Fix lint re casting in shared cache code. +66757f7 WT-2064: Don't spin indefinitely waiting for the handle list lock in eviction +9f8bdd7 WT-2067: Fix unused variable warnings +cf53696 WT-2034: Make shared cache adjustments gradually +8f42f02 WT-2066: Update the oldest transaction ID from eviction +292712e WT-2065: Add a quota to shared cache configuration. +3e0c7bf WT-2062: Try harder to make progress on in-memory splits +1b372b9 WT-1967: Specify a key-format to simplify creating lookaside table records. +f97cfe9 WT-2031: Log slot revamp +a20d796 WT-2051: Encryption/metadata error cleanup. +c592bff WT-1967: Replace the WT_PAGE_SPLIT_LOCKED lock with WT_PAGE_RECONCILIATION. +e40d30b WT-2051: Add test for decrypt returning an error +d72012b WT-2059: Include non-aggregated stats in cursor results. +38dad39 SERVER-20008: Don't reset eviction walks when hitting a busy page. +3e46e79 SERVER-19990: Don't assert on eviction of live updates from dead trees. +2a89b8b WT-2052: OS X clang compiler warnings. +41b6fb8 WT-2058: Fix mutex and log-slot alignment. +70f9100 WT-2057: Strip the verbose configuration as part of writing the base configuration file. +258e2e1 WT-2050: Show size with memory allocation errors +73162ee WT-2055: Python, whitespace cleanup. +2e1471c WT-2053: Fix a bug in disk verify messages. +b83b901 SERVER-18356: Avoid reading baseconfig file when config_base is false +6665618 WT-2046: Add a counter for search restarts +0d2f47c WT-2049: don't start format's RNG at the same place every time. +aec6668 WT-2048: Quiet a Coverity complaint. +98b4a28 WT-2047: The __wt_random code to handle an uninitialized random state is broken. +ada57c1 WT-2025: inline atomic functions. +f752f07 WT-2029: minor cleanups. +b1850e8 SERVER-19989: Add a write barrier before handles become public +65abd20 SERVER-19989: Add a write barrier before data handles are added to shared lists +6b84722 WT-2029: improve scalability of statistics +9817f52 WT-2044: Fix Windows wtperf.exe build +e14c60e WT-2038: Discard checkpoint lock handles asap +f12c694 WT-2038: Minor cleanups to tailq use, s_define searching. +46c5333 WT-2038: Use TAILQ for all lists. +405f45e WT-1481: Fix and clarify some sweep statistics. +c751977 WT-1967: Remove a redundant check preventing pages being considered for eviction +413b696 WT-2038: Fix cases where the next tree for eviction could be discarded +e25e615 WT-2038: Avoid long scans holding the handle list lock. +c948fbb WT-2037: Only write a checkpoint to the log on close if it wasn't +36310d4 WT-2036: Make handle sweeps more robust +5e75a5e WT-2025: Pass simple arguments to compare-and-swap macros +bee11c3 WT-2032: WT_CURSOR.next configured with next_random=true on insert-only pages +7b302d3 WT-2021: Fix a bug moving the oldest ID forward (introduced by WT-1967). +b52d2d3 SERVER-19751: Retry pthread_create on EAGAIN or EINTR. +c5c9936 WT-2025: Assert that cursors are positioned for inserts +4545a8b WT-2025: SERVER-19573: Change row-store inserts to avoid page locking. +5381877 WT-2023: Keep 16-bit values from overflowing into other fields. +81ffc2d WT-2023: Avoid bit shifts during read-write lock operations. +55a989e WT-1845: Allow read only transactions to commit after failure +06bd0eb WT-1967: Don't allow last_running to move past a running transaction. +c5268ea WT-1983: wtperf_truncate - fix issues with uint64 -> int64 conversion +d7db0bb WT-2028: minor __evict_walk_file cleanup +7d03876 WT-2023: Mutex overflow simplify +d7d2a98 WT-2023: Avoid the CAS instruction in the trylock functions. +12f5617 WT-1983: Wtperf truncate +fb8739f SERVER-19522: Try to evict internal pages with no useful child pages. +3ec45a7 SERVER-19340: Avoid type aliasing in the random number generator. +ceab062 SERVER-19522, WT-2024: reconciliation locking +9b09e69 WT-2015: error path failure during block open. +9df72d7 WT-2022: When non-existent index cursor is opened, release the base table. +7d6075c WT-2020: clarify checksum error failure messages. +1255cb2 WT-2012: Fix a bug updating the oldest ID +a083efd WT-2018: Fix wtperf when running without populate phase +4938b8d WT-2017: Once an eviction server thread is started keep it running. +298f86c WT-2019: Fix a logic bug tracking the maximum transaction ID in clean trees +c8633e6 WT-2014: Checkpoint file fixes +344858c WT-2016: wt_rwlock_t union packing +ef9d56f WT-2013: Add gcc asm definitions for ARM64 +24078c6 WT-1989: Use size_t for the log slot size in memory. +f8dc12b WT-1996: If there is an error applying updates during a page rewrite, don't free the first update +53c7cac WT-1969: WT_REF.pindex_hint cleanup +b10bff9 WT-1989: Log scalability +72530cc WT-2102: Encryption mismatch checks +3e2e7e6 WT-2009: Apply tracked metadata operations post-commit +8af8b8a WT-2002: If a file is corrupted, verify should not panic. +907c0ca SERVER-19445: Have the oldest transaction update the oldest tracked ID. +911158c WT-2008: Fix a bug in recovery where a file create went missing. +cd9f255 WT-1967: Add support for a long-running, isolation=snapshot, reader thread +e1d8bc7 WT-2007: Statically allocate log slot buffers to a maximum size. +d714443 WT-1970: read -d command +263c5b7 WT-1930: Add configuration option to disable sweep of old handles +4b771f2 WT-2006: Copyright updates +b094fbf WT-1980: Bug fix: return ordinary metadata cursor values. +57a9f38 WT-1985: Integer packing and other fixes for Java +e0d6229 WT-1980: Provide an API to query metadata meaningful to WT_SESSION::create +3866fa6 WT-1962: Make the hot_backup_lock a read/write lock. +6351110 WT-1993: Coverity CID 1310061: Program hangs (LOCK) +3b38f01 SERVER-18899: followup to abstract copying a WT home directory into a function. +5ad2504 WT-1988: Added a doc subsection about the interation between cursors and eviction +144a383 WT-1998, WT-2000: Fixes for indexes with some rarely used key/value formats +030b916 WT-1982: Avoid unnecessary read barriers in transaction code +fec82d6 WT-1985: More integer packing tests and fixes for python +60e2150 WT-1966: Change how the shared cache assigns priority to participants. +f54d82c WT-1992: clean up metadata tracking error handling +9897eb2 WT-1986: Fix a race renaming temporary log files. +cd1704d WT-1982: Track down cached overflow items that are being freed too early +0925658 WT-1987: Add a TEST_WRAPPER variable for running all tests with valgrind or similar +d04083d SERVER-18899: Add unit test to simulate fsyncLock. +7a7bde6 WT-1985: integer packing fixes for Python +1602a4b WT-1981: Fix a signed 32-bit integer unpacking bug +4e0fe59 WT-1964: In Java fix session/cursor close in different thread than open +f95e600 WT-1962: Fix usage of log->prep_missed. +b847ccc SERVER-18838: During drops, don't remove files until the metadata is durable +8f7da9a SERVER-18875: Clean up deleted pages +76d2e73 WT-1975: Wait for sync_lsn of earlier log files to complete for forced sync. +bc2aa57 WT-1744: Throttle worker threads based on eviction targets. +5eaf63e WT-1978: Better checking and tests for index cursor comparison +e43b22a WT-1977: Improve the performance of getting snapshots with many sessions +ab5a8fb WT-1728: Add a new WT_SESSION.reset API +ddac54f WT-1942: Add atomic implementations for PPC64 architecture. +58f9e99 WT-1963: Modified Java's next/prev/search/search_near to work with backup cursors +d57dc26 SERVER-18829: Have pages start in the middle of the LRU queue for eviction +6310c3f WT-1959: Change WT_SESSION.verify to not error on leaked blocks, by default. +d4fc69a SERVER-17078: Add a "statistics=(size)" mode to statistics cursors +944ccd1 WT-1350: Don't always evict pages when reconciling them. +f196510 WT-1955: Lsm merge aggressive +df625dc WT-1869: Avoid doing in memory splits while a tree is being checkpointed. +ce223ac WT-2045: Don't let the eviction server do slow reconciliation, it can stall the entire eviction process. +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. +a0b5d2b WT-2128: When decoding huffman encoding during salvage it's possible to have fewer bits than the symbol length during decoding, if the value has been corrupted. +7518a69 WT-2190: Fix transaction visibility test that is applied to the lookaside table. WiredTiger release 2.6.1, 2015-05-13 ------------------------------------ |