Nathan Bronson 2c1db5ea51 always invalidate sequential-insertion cache for concurrent skiplist adds
Summary:
InlineSkipList::InsertConcurrently should invalidate the
sequential-insertion cache prev_[] for all inserts of multi-level nodes,
not just those that increase the height of the skip list.  The invariant
for prev_ is that prev_[i] (i > 0) is supposed to be the predecessor of
prev_[0] at level i.  Before this diff InsertConcurrently could violate
this constraint when inserting a multi-level node after prev_[i] but
before prev_[0].

This diff also reenables kConcurrentSkipList as db_test's
MultiThreaded/MultiThreadedDBTest.MultiThreaded/29.

Test Plan:
1. unit tests
2. temporarily hack kConcurrentSkipList timing so that it is fast but has a 1.5% failure rate on my dev box (1ms stagger on thread launch, 1s test duration, failure rate baseline over 1000 runs)
3. observe 1000 passes post-fix

Reviewers: igor, sdong

Reviewed By: sdong

Subscribers: MarkCallaghan, dhruba

Differential Revision: https://reviews.facebook.net/D53751
2016-02-03 11:08:16 -08:00
..
2015-07-17 18:59:11 +02:00
2015-12-11 01:54:48 +09:00
2015-12-29 13:22:13 -08:00
2015-09-17 11:42:56 -07:00
2015-04-23 12:10:36 -07:00
2015-12-11 01:54:48 +09:00
2015-03-17 14:08:00 -07:00
2015-07-07 12:10:10 -07:00
2015-11-24 16:33:09 +03:00
2015-11-24 16:33:09 +03:00
2015-08-05 07:33:27 -07:00
2016-01-06 13:43:22 -08:00
2016-01-11 16:10:48 -08:00
2015-12-28 15:06:34 -08:00
2015-03-17 14:08:00 -07:00
2014-11-10 17:39:38 -05:00
2015-09-17 11:42:56 -07:00
2015-05-29 14:36:35 -07:00