forked from wiredtiger/wiredtiger
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
2742 lines (1901 loc) · 107 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
WiredTiger release 2.7.0, 2015-12-08
------------------------------------
The WiredTiger 2.7.0 release contains new features, minor API changes and bug
fixes.
New features and API changes; refer to the API documentation for full details:
* 959376c WT-147: Create indexes on non-empty tables.
* 4368d39 WT-1315: Add an implementation of cursor joins via a new WT_SESSION::join API.
* 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.
* ab5a8fb WT-1728: Add a WT_SESSION::reset method to release resources held by a session.
* 263c5b7 WT-1930: Allow setting "file_manager=(close_idle_time=0)" to ::wiredtiger_open and
WT_CONNECTION::reconfigure to disable closing idle handles.
* 6310c3f WT-1959: Change verify to distinguish between warnings and errors. Add a new strict mode
to verify that causes warnings to be reported as errors. Use strict mode to match earlier
behavior. See the upgrading documentation for more information.
* e0d6229 WT-1980: Add a new "metadata:create" URI to WT_SESSION::open_cursor for metadata cursors
that return strings useful for passing to WT_SESSION::create.
* 292712e WT-2065: Add a new configuration option to ::wiredtiger_open and
WT_CONNECTION::reconfigure called "shared_cache=(quota)" that limits the amount of shared cache a
participant can be assigned.
* 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 WT_SESSION::log_flush. Change the
default WT_SESSION::transaction_sync timeout to 20 minutes rather than infinity.
* 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 called "write_through" that
causes WiredTiger to specify the FILE_FLAG_WRITE_THROUGH on Windows when writing files (default
false, including when "direct_io" is configured).
* 08c0fcd WT-2217: After a successful call to WT_CURSOR::insert, the key and value will be
cleared from the cursor. See the upgrading documentation for more information.
* d4fc69a SERVER-17078: Add a "statistics=(size)" mode to statistics cursors, which allows for
retrieving file size only.
* b83b901 SERVER-18356: Changed the handling of the "config_base" option to ::wiredtiger_open. See
upgrading documentation for more information.
The following statistics were removed:
* f1ed3b9 WT-1481: connection dhandles swept.
* f1ed3b9 WT-1481: connection candidate referenced.
* 4ba4518 WT-1481: failed to find a slot large enough for record.
* 28563af WT-1989: log buffer size increases.
* f81c70d WT-1989: slots selected for switching that were unavailable.
* df4f69c WT-2094: log records written directly.
* df4f69c WT-2094: record size exceeded maximum.
* d68e078 WT-2182: pages split during eviction.
Lookaside table:
* 6a5a461 WT-1967: Allow eviction of updates required by old readers.
* 87592ec WT-2074: Fix a race between lookaside table reconciliation and checkpoints.
* 0390b29 WT-2149: Fix the order of creation of the lookaside table.
* 7518a69 WT-2190: Fix transaction visibility test that is applied to the lookaside table.
* 2cf57a6 SERVER-21585: Don't use the lookaside file until the cache is stuck full.
Issues fixed in MongoDB:
* 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.
* d04083d SERVER-18899: Add unit test to simulate fsyncLock.
* 3ec45a7 SERVER-19340: Avoid type aliasing in the random number generator.
* 907c0ca SERVER-19445: Have the oldest transaction update the oldest tracked ID.
* fb8739f SERVER-19522: Try to evict internal pages with no useful child pages.
* 4545a8b SERVER-19573: Change row-store inserts to avoid page locking.
* b52d2d3 SERVER-19751: Retry pthread_create on EAGAIN or EINTR.
* 46b4ad5 SERVER-19954: Don't scan tracked handles during checkpoints.
* 65abd20 SERVER-19989: Add a write barrier before data handles are added to shared lists.
* 3e46e79 SERVER-19990: Don't assert on eviction of live updates from dead trees.
* 38dad39 SERVER-20008: Don't reset eviction walks when hitting a busy page.
* 3b72361 SERVER-20159: Make all readers wait while the cache is full.
* 8be547b SERVER-20193: Fix obsolete transaction check.
* ad56c6a SERVER-20303: Tune in-memory splits when inserting large objects.
* 7505a02 SERVER-20385: Make WT_CURSOR::next(random) more random.
* 35d46c3 SERVER-21027: Reverse split if there are many deleted pages.
* a6da10e SERVER-21553: Enable fast-path truncate after splits.
* 890ee34 SERVER-21619: Don't do internal page splits after a tree is marked DEAD.
* 0e93d60 SERVER-21691: Avoid insert stalls.
Other note worthy changes since the previous release:
* 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 checkpointing a tree.
* ddac54f WT-1942: Add atomic implementations for PPC64 architecture.
* 3866fa6 WT-1962: Make the hot_backup_lock a read/write lock.
* 58f9e99 WT-1963: Fix backup cursor Java API.
* 4e0fe59 WT-1964: Fix a bug in the Java API when closing handles from a different thread.
* 60e2150 WT-1966: Change how the shared cache assigns priority to participants.
* 76d2e73 WT-1975: Ensure previous log files are complete for forced sync.
* e43b22a WT-1977: Improve performance of getting snapshots with many sessions.
* 5eaf63e WT-1978: Better checking and tests for index cursor comparison.
* 1602a4b WT-1981: Fix a signed 32-bit integer unpacking bug.
* cd1704d WT-1982: Fix a bug where cached overflow items were freed too early.
* 57a9f38 WT-1985: Integer packing and other fixes for Python and Java.
* 9897eb2 WT-1986: Fix a race renaming temporary log files.
* b10bff9 WT-1989: Improve scalability of log writes.
* f8dc12b WT-1996: Fix a bug where we would free the fist update during a page rewrite on error.
* 144a383 WT-1998: Fixes for indexes with some rarely used key/value formats.
* 8af8b8a WT-2002: Fix a bug in verify where it would panic when encountering a corrupted file.
* e1d8bc7 WT-2007: Statically allocate log slot buffers to a maximum size.
* 911158c WT-2008: Fix a bug in recovery where a file create went missing.
* 3e2e7e6 WT-2009: Apply tracked metadata operations post-commit.
* 1255cb2 WT-2012: Fix a bug updating the oldest ID.
* ef9d56f WT-2013: Add gcc asm definitions for ARM64.
* c8633e6 WT-2014: Fix a bug in checkpoints where files could be flushed in the wrong order.
* 9b09e69 WT-2015: Fix a bug in error handling during block open.
* 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.
* 7d6075c WT-2020: Clarify checksum error failure messages.
* 7b302d3 WT-2021: Fix a bug moving the oldest ID forward (introduced by WT-1967).
* 9df72d7 WT-2022: Fix a bug not releasing a handle when opening a non-existent index cursor.
* 81ffc2d WT-2023: Improve locking primitives: simplify read-write lock operations.
* 6b84722 WT-2029: Improve scalability of statistics.
* f97cfe9 WT-2031: Log slot revamp.
* bee11c3 WT-2032: Improve next_random cursors to work with small trees.
* cf53696 WT-2034: Improve shared cache balancing algorithm.
* aee1c94 WT-2035: For index cursors, keep track of which column groups need to be positioned.
* 36310d4 WT-2036: Make handle sweeps more robust.
* c948fbb WT-2037: Only write a checkpoint to the log on close if it wasn't.
* e25e615 WT-2038: Avoid long scans holding the handle list lock.
* 75a4655 WT-2039: Add error check and unit test for log records over 4 GB.
* 5ab26af WT-2042: Only try to evict tombstones that are visible to all readers.
* ce223ac WT-2045: Don't let the eviction server do slow reconciliation, it can stall eviction.
* 6665618 WT-2046: Add a statistic for search restarts.
* 98b4a28 WT-2047: Fix a bug in the random generator code to handle an uninitialized state.
* 258e2e1 WT-2050: Show size with memory allocation errors.
* 2e1471c WT-2053: Fix a bug in disk verify messages.
* e316e61 WT-2056: Reorder btree cursor close so stats are maintained correctly.
* 70f9100 WT-2057: Remove the verbose configuration when writing the base configuration file.
* 41b6fb8 WT-2058: Fix an alignment bug in the mutex and log-slot code.
* 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.
* 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 logging with parallel workload.
* 11c0fa0 WT-2078: Fix a bug in error handling with statistics cursors.
* 9734d85 WT-2081: Make verify progress reporting less verbose.
* 6008b41 WT-2085: Run some of the log_server threads operations more frequently.
* 39a69ec WT-2086: Add a statistic to track when eviction finds a page that can be split.
* 334e103 WT-2089: Relax restrictions on multiblock eviction and in-memory splits.
* f13b788 WT-2090: Fix a bug in the Windows OS layer that swallowed error returns.
* 83b8db7 WT-2092: Free log condition variables after all threads are joined.
* d9391c0 WT-2093: Use the C99 bool type to clarify when functions return true/false.
* f883d27 WT-2094: Eliminate direct write and record unbuffered log records.
* 9008260 WT-2097: Reintroduce immediate waits when forced eviction is necessary.
* 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.
* 0e96683 WT-2105: Fix a bug where we could reference an invalid memory address if a file is
corrupted on disk.
* 6a565bc WT-2108: Rework in-memory page rewrite support (WT_PM_REC_REWRITE).
* dcb0ddb WT-2114: Make application eviction fairer.
* 10c2f15 WT-2115: Don't skip truncated pages that are part of a checkpoint.
* cd6ce97 WT-2116: Add diagnostic checks for stuck cache and dump the state.
* 51cf672 WT-2119: Don't evict clean multiblock pages with overflow items during checkpoints.
* 346ad40 WT-2126: Clean up if there is an error during splits.
* 6831485 WT-2127: Deepen the tree more regularly to avoid wide internal pages.
* 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.
* 79f74e5 WT-2131: Switch to using a lock to control page splits to avoid starvation.
* 02a3d9f WT-2132: Make debug dump function more robust to errors.
* 8c223e4 WT-2134: Flush all buffered log records in log_flush.
* d1b5e7f WT-2135: Fix log_only setting for backup cursor. Fix initialization.
* aab8101 WT-2137: Check the sync_lsn is in the correct file before moving it forward.
* 323af84 WT-2139: Fix a transaction visibility bug in read-uncommitted transactions.
* 751c628 WT-2146: Improve performance when searching for short keys.
* 62998ce WT-2148: Fix a compiler warning in encoding functions.
* 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.
* cc42bda WT-2156: Allow eviction workers to restart.
* bf1d359 WT-2157: Fix a bug where a failed page split could lead to incomplete checkpoints.
* ce9d265 WT-2159: Don't check the config twice in one path.
* 544f27d WT-2162: Add null pointer check, needed after an index is dropped.
* 0d85ebe WT-2164: Prevent another LSM chunk checkpoint while the first is still in progress.
* a81aae8 WT-2165: Stop using FALLOC_FL_KEEP_SIZE flag when pre-allocating files.
* 2865a76 WT-2167: Switch recovery to using an internal session.
* 5d4c952 WT-2170: Protect the turtle file with a lock.
* 497b744 WT-2174: Avoid the table list lock when creating a size only statistics cursor.
* fdfa804 WT-2178: In-memory storage engine support.
* b9bd01f WT-2179: Added decorator to mark txn13 as part of the --long test suite.
* be544dd WT-2180: Remove cursor.{search,search-near,remove} key size validation.
* be412b5 WT-2182: When internal pages grow large enough, split them into their parents.
* c27e78e WT-2184: Fix log scan bug when final record has many trailing zeros.
* 9584be3 WT-2185: Don't do reverse splits when closing a file.
* f6b12d3 WT-2187: Add flag for flushing a slot.
* a4545bf WT-2189: Update flag set and clear macros to be less error prone.
* 30ab327 WT-2191: In-memory disk image no longer the same as saved updates.
* 4ba5698 WT-2192: Fix the logic around checking whether internal page is evictable.
* 2f0b3e2 WT-2193: Handle read-committed metadata checkpoints during snapshot transactions.
* 9b1febc WT-2194: Java close callbacks should handle cursors that Java code did not open.
* 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.
* 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 enumeration.
* 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.
* a72ddb7 WT-2218: Add truncate stats.
* ce8c091 WT-2219: Enhancements to in-memory testing.
* e2f1130 WT-2220: Update time comparison macros.
* 59857f9 WT-2222: Add statistics for named snapshots.
* fb9cebe WT-2224: Track which deleted refs are discarded by a split.
* cace179 WT-2228: Avoid unnecessary raw-compression calls.
* 0a52a80 WT-2237: Have threads publish unique transaction IDs so that updates always become
visible immediately on commit.
* 6c7338f WT-2241: Use a lock to protect transaction ID allocation.
* 39dfd21 WT-2243: Don't keep transaction IDs pinned for reading from checkpoints.
* 4c49948 WT-2244: Trigger in-memory splits sooner.
* 9f2e4f3 WT-2248: WT_SESSION::close is updating WT_CONNECTION_IMPL.default_session.
* 264ec21 WT-2249: Keep eviction stuck until cache usage is under 100%.
* dca1411 WT-2250: Minor fix. Use SET instead of increment for stat.
* e731ef8 WT-2251: Free addresses when we discard deleted page references.
* 4fc3e39 WT-2253: Evict pages left behind by in-memory splits.
* 2df5658 WT-2257: Fixes when given multiple thread workload configurations.
* 4c49043 WT-2260: Avoid adding internal pages to the eviction queue
WiredTiger release 2.6.1, 2015-05-13
------------------------------------
The WiredTiger 2.6.1 release contains new features, minor API changes and bug
fixes.
New features:
* Move the sync configuration setting from WT_SESSION::begin_transaction to
WT_SESSION::commit_transaction. Change the setting from a boolean to a
string. See upgrading documentation for more information.
refs WT-1908
* Add the ability to flag a transaction to be flushed asynchronously on
commit via a new sync=[background] configuration option. Add a new
WT_SESSION::transaction_sync API to wait for asynchronous flushes to
complete.
refs WT-1908, #1943
* Add the ability to create a named in-memory snapshot via a new
WT_SESSION::snapshot API.
refs WT-1839
* Add the ability to disable write ahead logging at a per-table granularity.
Accessed via log=(enabled) configuration for WT_SESSION::create API.
Partial logging has serious implications for recovery, it should be used
with caution.
refs #1989
Other noteworthy changes:
* Fix several bugs related to syncing files for checkpoint durability.
refs WT-1944
* Fix a segfault during checkpoint where we could attempt to access a file
that was in the process of being dropped in the background.
refs SERVER-18014
* Fix a segfault during eviction where we could attempt to evict a page from
a tree that was in the process of being dropped in the background.
refs SERVER-18460
* Fix a bug where WiredTiger could segfault in a workload with lots of cache
pressure.
refs WT-1937
* Fix a performance issue with WT_SESSION::compact, where it would spend a
long time compacting tables that had no space to reclaim.
refs WT-1953
* Fix a bug where accessing an overflow item could return WT_NOTFOUND
incorrectly. The issue was related to an invalid transaction visibility
check.
refs WT-1745
* Improve performance and avoid changing files on startup if no recovery is
required by avoiding the creation of unnecessary checkpoints and log
records for files that haven't changed.
refs WT-1936
* Improve how we handle create of a table, if a file with the same name
already exists (possibly from an earlier failed create).
refs #1974
* Fix compiler warnings for LZ4 implementation on Windows.
refs #2006
* Fix a bug in the WiredTiger command line utility where it could create a
base configuration file for an existing database, if there had been a
crash while creating the database.
refs WT-1943
* Fix a build problem where recent versions of RedHat would fail to detect
posix_memalign presence correctly.
refs WT-1951
* Fix several problems with how we create, recover and backup databases.
Related to order of creation and differences between Windows and POSIX
file system semantics.
refs #1993
* Fix a bug where we could flush the log file more often than required if
using auto-commit transactions.
refs WT-1949
* Fix a performance problem in LSM, where trees created with an initial bulk
load could choose poor merges.
refs WT-1947
* Improve how we decide whether to deepen a tree during an internal split
operation. Append workloads could create trees that were excessively deep.
* Fix a bug in LSM which could lead to a hang on connection close.
refs WT-1935
* Fix a bug in the internal random number generator, where concurrent calls
could lead to invalid sequences. Never seen in the wild.
WiredTiger release 2.6.0, 2015-05-13
------------------------------------
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.
WiredTiger release 2.5.3, 2015-04-22
------------------------------------
The WiredTiger 2.5.3 release contains important bug fixes.
API and behavior changes:
* Update configuration string parsing to always be case sensitive. See
upgrading documentation for more information.
* Change the statistics cursor WT_CURSOR::reset method to re-load statistics
values. See upgrading documentation for more information.
refs WT-1533
* Only align buffers on Linux if direct I/O is configured. See upgrading
documentation for more information.
* Fixes to how and when idle handles are closed.
refs WT-1808, WT-1811, WT-1814
* Add some new statistics related to cache usage.
* Add new configuration strings to provide control of how often handles are
are reviewed for closure, and how long a handle needs to be idle before
it is closed. The option is via the wiredtiger_open API,
file_manager=(close_idle_time=30,close_scan_interval=10)
* Add support for running WiredTiger command line utilities without logging.
refs WT-1732
* Update the async configuration API to allow a minimum of 1. That is change:
async=(ops_max=X) so that the minimum value is now 1 the old minimum was 10.
Bug fixes and other significant changes:
* Fixes and improvements to Windows support.
* Fix several bugs that prevent page eviction.
refs SERVER-16662, SERVER-17382, WT-1777
* Fix a race when stopping eviction workers on shutdown.
refs WT-1698
* Fix a bug where if the system crashes during create the base configuration
file could be left in an invalid state.
refs WT-1775, WT-1776, SERVER-17571
* Fix cases where WT_SESSION::truncate could return EBUSY when a schema level
operation is running - for example a checkpoint.
refs WT-1404, WT-1643
* Fix a bug in logging - where we could fail to update the end of the log
when there is a gap in the log records.
refs WT-1766, SERVER-17569, SERVER-17613
* Fix how we account for space used in the cache to be more accurate.
refs SERVER-17424
* Fix a bug where we could leak memory if opening a statistics cursor failed.
refs WT-1760
* Fix a bug where a single page could consume a large portion of the cache.
Leading to cases where a small cache size could result in a hang.
refs WT-1759
* Fix a bug in the eviction server that could cause a WT_PANIC. The issue
was encountered when the number of open handles exceeded the configured
number of hazard pointers.
refs SERVER-17551
* Fix a bug parsing huffman configuration options that could lead to a segfault.
* Fix accounting in btree statistics gathering, so page tracking is accurate.
refs WT-1733
* Fix a memory leak in cache management, where a race during page split could
leave a key structure allocated.
refs WT-1582, WT-1747
* Enhance checkpoint tracking code to allow eviction in files once the
checkpoint has finished processing them. This helps reduce the impact of
checkpoints on workloads with cache pressure.
refs WT-1745
* Fix when aggregation is set on statistics fields. Fixes problems with
visualizing statistics via wtstats graphs.
refs WT-1742
* Change how checkpoints use empty blocks in on-disk files. Use a first-fit
algorithm.
WiredTiger release 2.5.2, 2015-03-23
------------------------------------
The WiredTiger 2.5.2 release contains important bug fixes.
API changes:
* Allow memory_page_max to be at most a quarter of the cache size not half.
This avoids operations getting stalled due to the cache being filled with
one or two pages.
Bug fixes and other important changes:
* When skipping a dirty page during a checkpoint, make sure the tree is marked
dirty.
refs SUPPORT-1248, SERVER-17319, SERVER-17506, #1404, #1643, #1721, #1735
* Fix a bug in range truncate where we could remove the wrong records.
refs SERVER-17345
* Fix a bug in LSM management where we could let the cache get full - leading
to a operations being blocked.
refs #1720
* Fix several bugs in the checkpoint implementation that could lead to a tree
being marked clean when it had updates in memory. If shutdown occurred at
a specific time those updates would be discarded without being written.
refs SUPPORT-1248
* Fix some bugs in logging - where system crashes could leave empty files that
would stop recovery working on re-start.
refs #1717, #1719, SERVER-17451
* Fix a bug in recovery. Force recovery instead of returning an error if the
LSN given doesn't exist.
refs #1700, #1704
* Move writing into log worker thread to avoid latency in application threads.
refs #1683
* Fix a bug in the reconfigure API related to adhering to shared cache quotas.
refs #1712, #1713
* Fix a bug in WiredTiger statistics where we weren't recording overflow
record statistics.
refs #1520, #1703, #1711
* Several enhancements to eviction of large pages including:
- Don't do forced eviction of a page if it is the current walk point.
- Don't update the read generation on page in if it's set to oldest.
- Clear the walk positions before the eviction server sleeps.
- Reverse the direction of the LRU walk regularly.
- Add all pages that would block to the eviction queue.
- If evicting dirty pages use the worker threads not the server.
refs #1706
* Use raw mode when dumping indices.
refs #1709
* Fix a bug where we could race opening files while a WT_CONNECTION::close is
in progress.
refs SERVER-17319
* Fix a bug in LSM where snapshot transaction updates could have the wrong
visibility check applied. Leading to invalid updates.
refs #1641, #1701, #1702
* Fix a bug in checkpoint where it could get an EBUSY return unnecessarily.
refs #1404, #1589, #1705
* Fix a bug when writing a page from memory to disk (reconciling). We could
overwrite the end of a temporary buffer in some cases.
refs #1697, #1699
* Sometimes we would choose a sub-optimal layout for on disk pages when
writing them out from memory.
refs #1699
* Improve the performance of in-memory lookups by making the content of the
page structure more cache friendly.
WiredTiger release 2.5.1, 2015-03-07
------------------------------------
The WiredTiger 2.5.1 release contains new features, minor API changes and many
bug fixes.
New features and API changes:
* Add a new "log=(recover=on)" option to ::wiredtiger_open. The default value
is "on", if set to "error", recovery won't be run on startup. An error will be
returned if recovery is needed but disabled. This option is mainly to support
the WiredTiger command line utility.
refs #1651
* Add a new WT_CURSOR::equals method that returns when the cursors are equal,
intended as a fast-path for cursor comparison.
* Change how statistics work when there are checkpoints for an object. We
used to aggregate statistics for all open checkpoints and the current
handle. We now only return statistics for the object being queried. See
upgrading documentation for further information.
* Add a mode to LSM that allows us to limit the size of a tree by dropping
old chunks. Enabled via "lsm=(chunk_count_limit=0)", default to 0 which
disables the functionality. Note that enabling this feature discards old
data automatically.
refs #1652
* Update the WiredTiger printlog command line utility to generate JSON that
can be parsed by third party tools.
refs #1438
* Change how we track memory allocation overhead. We used to apply a fixed
size for each allocation (which was difficult to track). The overhead
can be specified via a new configuration option to ::wiredtiger_open using
"cache_overhead=8". The value is a percentage and the default is 8.
refs #1564 #1565
* Major enhancements to the wtstats.py tool that translates WiredTiger
statistics into an HTML graph. The tool now generates interactive graphs
and no longer requires third party Python libraries to be installed.
* Add a new WT_CURSOR::reconfigure method for cursor configuration.
See API documentation for more information.
refs #1381
* Add a new WT_SESSION::strerror method, a thread-safe alternative to
::wiredtiger_strerror.
refs #1516
Bug fixes for bugs that could cause data inconsistency:
* Fix a bug in recovery where we could lose track of file identifiers and
apply updates to the wrong file.
refs SERVER-17142 SERVER-17131
* Fix several bugs in data consistency that could cause corruption when
restarting after a hard crash, including:
- A bug in table create that could cause recovery to fail.
refs SERVER-17204
Other significant changes:
* Significant tuning enhancements for the WiredTiger cache, including:
- Avoiding stalls due to evicting large pages
- Better algorithms for getting application threads to help with cache
management without interfering with operation latencies.
- Better algorithms for maintaining the cache when there are a few very hot
pages (e.g: append workloads). SERVER-17344
- Freeing obsolete references more aggressively, which saves space and
reduces traversal overhead when there are lots of updates or deletes.
refs SERVER-17195, #1647
- Fix a bug that could cause a data loss if we split a large page into
multiple smaller pages and attempted to evict the page at the same time.
refs #1583 #1563 SERVER-16868
* Significant improvements to the cursor truncate implementation,
especially for workloads that periodically truncate from the start of
the file.
refs SERVER-17141
* Fix a bug in eviction where reconfiguring the number of eviction threads
could result in a segfault.
refs SERVER-17293
* Significant bug fixes and performance enhancements to the logging subsystem
including:
- Avoid yielding excessively to avoid CPU overhead when there are many
active sessions.
refs #1610
- The log close thread needs to wait for outstanding writes. #1571
- Create a new utility thread to close and fsync log files. #1560
- Ensure that log files are closed in sequence. #1555
- Ensure that log file create appears atomic. #1482
- Fix a race between connection close and switching log files that could
lead to a new log file being in an undefined state. #1480
* Added support for advanced options to the WiredTiger verify command line
tool.
* Fix a bug in our conflict detection algorithm, where we were failing to
detect some write-write conflicts in no-overwrite cursors.
refs SERVER-16351
* Significant bug fixes when writing pages to disk, including:
- Stop double count the on-disk header when choosing split points. refs #1655
- Fill the first and second pages as much as possible when splitting.
refs #1282
- Improve the algorithm for fitting large items onto pages when splitting.
refs #1630 #1631
- Fix a bug when using raw compression where we could overflow allocated
memory.
refs SERVER-16664
* Fix several cases where WT_SESSION::verify and WT_SESSION::salvage could
return EBUSY unnecessarily.
refs #1404 SERVER-16457
* Fix a bug where racing between discarding and updating a tree returned an
error to the application.
refs #1618 SERVER-17048
* Fix a bug where opening a statistics cursor in parallel with a checkpoint
could lead to a deadlock.
refs #1575 SERVER-16738
* Change the shared cache implementation to use cache read pressure rather
than write pressure to determine how best to share memory (as checkpoints
skew write pressure as a metric).
refs #1569
* Fix a bug where a deadlock could occur if a checkpoint starts in parallel to
compact operations.
refs #1589 SERVER-16967
* Fix a bug in how we parse Huffman-encoding configuration settings during
WT_SESSION::create.
refs #1417 #1536
* Fix a bug where the custom extractor terminate callback was being made twice.
refs #1503
* Add a new mode to the eviction server where it writes out some pages even
though the eviction triggers have not yet been reached.
* Fix several issues reported by COVERITY static analysis tool.
WiredTiger release 2.5.0, 2014-12-24
------------------------------------
The WiredTiger 2.5.0 release contains significant new features, API changes
and many bug fixes.
Now that WiredTiger is part of MongoDB, we are tracking issues related to
MongoDB usage of WiredTiger in the MongoDB JIRA system. Some entries in
the changelog now reference JIRA tickets that can be found at:
http://jira.mongodb.org
New features and API changes:
* Add support for storing large values on-page in a btree rather than in
an overflow item. This is useful for workloads that want to keep large
items in cache - since WiredTiger overflow items are never cached.
It is configured via new `leaf_value_max` configuration setting. This
enhancement led to the deprecation of internal_item_max and leaf_item_max
configuration settings, see upgrading documentation for further
information. [#1282]
* Add support for compressing log files. When configured each compressible
log record will be compressed. This is configure with the
`log=(compressor=X)` configuration setting. See upgrading documentation
for further information. [#1359]
* No longer return EBUSY when opening a bulk cursor, verifying or salvaging
a database if a checkpoint is currently running. This allows
applications to do these exclusive operations without shutting down the
checkpoint server thread. [#1397] [#1404] SERVER-16236 SERVER-16457
* Add support for immutable indexes. [#1344]
* Added several new statistics, improved accuracy for some statistics
tracking and simplified mechanism for querying a particular statistic.
[#1505]
* Have the eviction server write out unnecessary pages prior to the cache
reaching the configured eviction trigger size. This can reduce the
amount of eviction application threads do when configured with a large
cache.
* Several enhancements to managing how long we keep files open
* Revert a change in the 2.4.1 release that caused the WT_ROLLBACK (and
deprecated WT_DEADLOCK) error return to map to different numeric values.
Applications should ensure they are compiling against the same version
of the wiredtiger.h header file as the library they link against,
otherwise odd behavior will be experienced.
* Support setting configuration strings to "none" as being equivalent to an
empty string in most cases. [#1417]
* Enhance the hot backup implementation to allow recovery to be run between
incremental backups. [#1183]
Other significant changes:
* Improve performance of cursor open when there are many tables in a database.
[#1391] [#1443]
* Reduce the impact checkpoints have on concurrent operations. This was
done by changing how we lock tables. [#1391] [#1392]
* Improve performance when scanning a table that has many deleted items.
SERVER-16247
* Fix a bug in checkpoint, where the metadata (turtle) file wasn't being
synced on checkpoint. [#1383]
* Fix a bug where WiredTiger could accumulate memory during page splits and
never free it. SERVER-16546
* Many enhancements and bug fixes for Windows.
* Fix a bug where a custom extractor terminate was being called twice.
[#1503]
* Fix a bug where a race between closing a handle and checkpointing could
lead to errors. [#1495] [#1497]
* Validate the block header checksum before we clear it - if the checksum
field had been corrupted, we didn't notice. SERVER-16457
* Fix a bug in write conflict detection. Cursors configured with
no-overwrite could sometimes not see update conflicts for deleted
records. SERVER-16351
* Several bug fixes and performance improvements in LSM including:
- Add support for custom collators in LSM trees. [#1361]
- Fix a bug in LSM search_near, where it returned a deleted item.
BF-694, BF-700
- Improve background maintenance operations so that the cache does
not get full unnecessarily.
- Fix a bug that could lead to updates being written into old chunks.
[#1432] [#1418]
- Fix a bug in background merge that could skip updates. SERVER-16123
* Fix a bug when maintaining the cache, that could cause checkpoints to
skip writing an update that should have been included. [#1419] SERVER-16336
* Fix a bug in WT_SESSION::drop, where failures generated error output even
when force was specified. [#1436]
* Fix a bug in WiredTiger integer packing code when figuring out how much
space is required for a value (it can shrink as numbers grow). SERVER-16118
* Several enhancements to the wtstats.py tool that generates graphs from
standard WiredTiger statistics logs. [#1365]
* Fix a bug on OS X where fsync isn't sufficient to flush a file, use
fcntl(F_FULLFSYNC) instead.
* Work around a bug in clang 3.5.0 compare and swap primitive. The
__sync_bool_compare_and_swap version of the API in clang produces bad
code for us with -O3 optimization enabled.
WiredTiger release 2.4.1, 2014-11-06
------------------------------------
The WiredTiger 2.4.1 release contains several new features, many bug fixes
and performance enhancements.
New features and API changes:
* Add new custom extractor functionality to WiredTiger indexes. Allowing an
application to define mutated and/or multiple keys for indexes. [#1199]
* Add a new WT_SESSION::transaction_pinned_range method that allows users
to identify when a session is keeping a transaction ID pinned for a long
time. [#1314]
* Enhance statistics output so that keys are more clearly categorized. [#1313]
* Rename WT_DEADLOCK error return to WT_ROLLBACK. WiredTiger uses the return
in cases other than traditional application deadlock. The old value is
retained as an alias to maintain backward compatibility. [#1204]
* Increase the maximum configurable cache size to 100GB.
Other significant changes:
* Improve support for building on Windows platforms. [#1342]
* Fix a bug where WiredTiger could race closing handles. [#1336]
* Enhance performance when hot pages in cache are growing rapidly. [#1317]
* Fix a bug in recovery, where log files that are zero extended could
result in some log records being skipped. [#1334]
* Updates to the Java API to improve documentation and exception handling.
[#1295]
* Improve support for building on Oracle Solaris platform [#1329]
* Fix a bug where closing a handle could leave the tree in an inconsistent
state on failure. [#1316]
* Several bug fixes and improvements to LSM including:
- Improving algorithm for switching the in-memory chunk.
- Fixing a bug related to dropping obsolete chunks. [#1304]
* Fix a bug in schema level operations (table create, drop, etc). If there
was an explicit transaction running when the operation was performed that
was subsequently rolled back the object could be left in an inconsistent
state.
* Several enhancements to cache management when there are long running
transactions present.
WiredTiger release 2.4.0, 2014-10-15
------------------------------------
The WiredTiger 2.4.0 release contains significant new features, API changes
and many bug fixes.
New features and API changes:
* Cursors keep their position across transaction boundaries. That is
WT_SESSION::begin_transaction and WT_SESSION::commit_transaction no longer
reset cursors. [#1181]
* Change cursor behavior so that when an operation returns WT_NOTFOUND, the
cursor is now left pointing to the original key/value pair. [#1209]
* Initial support for building WiredTiger on Windows.
* Add ability to customize a collator for specific data sources or with
application managed metadata. See upgrading documentation for more
information. [#1165]
* Enhance extension mechanism in WiredTiger to support loading extensions from
the application binary - not just a separate library. [#1174]
* Replace WT_SESSION::create "lsm=(merge_threads)" configuration option with
::wiredtiger_open "lsm_manager=(worker_thread_max)". See upgrading documentation
for more information.
* Enhancements to the WiredTiger Python API build process. [#1188]
* Add ability to dump and load WiredTiger databases in JSON format. [#1154]