Revision tags: v7.0.2, v6.6.3, v7.0.1, v7.0.0, v6.6.2, v6.5.2, v6.6.1, v6.0.5, v6.6.0, v6.5.1, v6.0.4 |
|
#
34688619 |
| 15-Jan-2020 |
James Harrison <james.harrison@couchbase.com> |
MB-37529: Permit locking of multiple ranges of seqList Backfilling from the seqList requires a range of items to be "protected" from being updated and moved during the lifetime of the
MB-37529: Permit locking of multiple ranges of seqList Backfilling from the seqList requires a range of items to be "protected" from being updated and moved during the lifetime of the backfill. This is to ensure the resulting set of items is consistent at the end of the backfill. To do this, backfills take a range read marking seqnos X to Y, and front end ops will not relocate items from inside this range. Instead, a new item will be appended, and the old one marked as stale, to be cleaned up later after the backfill has completed. However, previously only a single range read was allowed at a given time. This means that an ephemeral vbucket can only serve a single backfill at a time, all others will be delayed. This can have a significant impact, given that a vbucket might need to backfill for 3 replicas, indexer nodes, the projector for XCDR etc. all at the same time. This is made more likely under high memory usage, if cursor dropping is triggered (as in-memory streams will be forced back to backfill). This patch allows concurrent read-only access to ranges of the seqList, allowing concurrent backfills. There is also specific support for exclusive write access to ranges of the seqList; this is required for tombstone purging. Exclusive range locks block shared range locks that would overlap the exclusive range. Exclusive locks will not succeed if a shared range lock exists which would overlap it. As described above, range locks still do not block front end ops. The "locking" is read-preferring; as a consequence the tombstone purger will be prevented from locking the needed seqno range as long as a single backfill holds a lock covering any of those seqnos. As constant backfills are not normally expected read-preference is acceptable for now. However, given the importance of purging tombstones/stale items in terms of managing memory usage (as noted briefly in MB-25218) write-preference in this situation may be worth assessing. Change-Id: I17bd544f091415bc6ae336551d92ddb2104f51ca Reviewed-on: http://review.couchbase.org/121952 Well-Formed: Build Bot <build@couchbase.com> Reviewed-by: Dave Rigby <daver@couchbase.com> Tested-by: Build Bot <build@couchbase.com>
show more ...
|
Revision tags: v6.5.0, v6.0.3, v5.5.4, v5.5.5 |
|
#
04c1c8ec |
| 20-Mar-2019 |
Trond Norbye <trond.norbye@gmail.com> |
Remove config.h Change-Id: I79eb8c762971255db9d36a5f6461a8a6d0f29249 Reviewed-on: http://review.couchbase.org/106517 Tested-by: Build Bot <build@couchbase.com> Reviewed-by: Dave
Remove config.h Change-Id: I79eb8c762971255db9d36a5f6461a8a6d0f29249 Reviewed-on: http://review.couchbase.org/106517 Tested-by: Build Bot <build@couchbase.com> Reviewed-by: Dave Rigby <daver@couchbase.com>
show more ...
|
Revision tags: v5.5.6, v6.0.1, v5.5.3, v6.0.0, v5.1.3, v5.5.2 |
|
#
d6a2e687 |
| 05-Sep-2018 |
Christopher Farman <christopher.farman@couchbase.com> |
MB-30552: Convert type of vBucket id's from uint16_t to Vbid [8/n] (Stage 8 of n) This commit changes to the type of Vbid for ep's tests, including mock. Vbid allows greater control
MB-30552: Convert type of vBucket id's from uint16_t to Vbid [8/n] (Stage 8 of n) This commit changes to the type of Vbid for ep's tests, including mock. Vbid allows greater control over what operations can be performed on a vBucket id, as well as ensuring the output formatting is consistent. To support the splitting of this into multiple stages, Vbid can currently be implicitly converted back to uint16_t to cover elements that have not yet been converted. During this, there may be logs or prints with "vb:vb:", which should be fixed within this set of changes. Change-Id: Ie86933239982b0dd882746fcc5ea0e490b79b3e7 Reviewed-on: http://review.couchbase.org/99627 Reviewed-by: Dave Rigby <daver@couchbase.com> Tested-by: Build Bot <build@couchbase.com>
show more ...
|
Revision tags: v5.5.1, v5.1.2, v5.1.1, v5.0.1, v5.1.0, v5.0.0 |
|
#
ef22f9b0 |
| 25-May-2017 |
Dave Rigby <daver@couchbase.com> |
Move ep-engine to engines/ep
|
#
59253c54 |
| 12-May-2017 |
Manu Dhundi <manu@couchbase.com> |
MB-24246: Combine 'writeLock' & 'highSeqnosLock' into one in BasicLinkedList Functionally 'writeLock' and 'highSeqnosLock' both result in the serialization of the BasicLinkedList write a
MB-24246: Combine 'writeLock' & 'highSeqnosLock' into one in BasicLinkedList Functionally 'writeLock' and 'highSeqnosLock' both result in the serialization of the BasicLinkedList write and other list operations. Hence this commit combines the 2 locks into one lock. As a consequence this commit ensures that the writeLock is held on the BasicLinkedList until the sequence number for the newly added, updated and soft-deleted is generated. While this is strictly not needed in new add, it is necessary in update and soft delete as explained below. (a) New Add : A1, B2, C3 and we are trying to add D4 A1, B2, C3, D? added but no seqno yet. Now we don't really care if range read starts here as it can read only A1, B2, C3 in the snapshot. But to maintain uniformity (hence simpler code) with update and soft-delete we grab writeLock such that we append to list + update highSeqno as an atomic operation. (b) Update (and Soft-delete): A1, B2, C3 and we are trying to update B to B4 A1, B2, C3, B? added but no seqno yet and/or no B2_stale yet Now we cannot start the range read here because we do not wait for range read to finish to mark the item stale (note that we are planning to not send stale(duplicate) items in a snapshot). This was already in case (b) using highSeqnosLock, this commit uses just writeLock for the same. The commit also adds documentation regarding the desired heirarchy of the lock acquisition in BasicLinkedList. Change-Id: I10a80f55a763d1496adec24fa12bc75d83ea1573 Reviewed-on: http://review.couchbase.org/77958 Reviewed-by: Dave Rigby <daver@couchbase.com> Tested-by: Build Bot <build@couchbase.com>
show more ...
|
#
5e2d1602 |
| 13-Apr-2017 |
Dave Rigby <daver@couchbase.com> |
Fix typo in MockBasicLinkedList::getWriteLock Change-Id: I7f7ceda0195549b89e3b317224c2eeebf80153b4 Reviewed-on: http://review.couchbase.org/76777 Reviewed-by: Manu Dhundi <manu@couch
Fix typo in MockBasicLinkedList::getWriteLock Change-Id: I7f7ceda0195549b89e3b317224c2eeebf80153b4 Reviewed-on: http://review.couchbase.org/76777 Reviewed-by: Manu Dhundi <manu@couchbase.com> Tested-by: Build Bot <build@couchbase.com>
show more ...
|
#
58b8ee8f |
| 06-Apr-2017 |
Dave Rigby <daver@couchbase.com> |
MB-23795: Ephemeral Tombstone purging (VBucket-level) Add Ephemeral Tombstone purging for Ephemeral VBuckets. This patch adds two purge operations - one for the HashTable, and one for th
MB-23795: Ephemeral Tombstone purging (VBucket-level) Add Ephemeral Tombstone purging for Ephemeral VBuckets. This patch adds two purge operations - one for the HashTable, and one for the sequenceList: a) The HashTable visitor (EphemeralVBucket::HTTombstonePurger) visits all items in the HashTable, and identifies any deletes which are old enough to be purged (age > ephemeral_metadata_purge_age). Such items are marked as stale, and transferred from the HashTable to the SequenceList. b) The SequenceList purger (BasicLinkedList::purgeTombstones()) then iterates over the sequencelist, and hard-deletes any items marked stale - both Alive and Deleted items. It is at this stage that the OSVs are actually deleted. Note the SequenceList purging is somewhat delicate, to ensure correctness while not blocking front-end writes. See the inline comments in BasicLinkedList::purgeTombstones() for further details. Note this isn't yet driven by any tasks - only by the unit tests. Subsequent patches will connect into tasks. Change-Id: I937ed23317826c84cbdd0bb0b3749a99ff446497 Reviewed-on: http://review.couchbase.org/76408 Reviewed-by: Jim Walker <jim@couchbase.com> Tested-by: Build Bot <build@couchbase.com>
show more ...
|
#
485a86ca |
| 12-Apr-2017 |
Dave Rigby <daver@couchbase.com> |
MB-23795: Move StoredValue::stale to OSV; guard with SeqList::writeLock The stale flag in (Ordered)StoredValue needs to be read by the tombstone purger when iterating the sequenceList; h
MB-23795: Move StoredValue::stale to OSV; guard with SeqList::writeLock The stale flag in (Ordered)StoredValue needs to be read by the tombstone purger when iterating the sequenceList; however at this point there is no HashTable lock available - the OSV has been released from the hashTable and hence we have no way to determine it's bucket (without reading the key to recalculate - and that's not possible without first acquiring the lock!). To allow us to safely access the stale flag, move it from being protected by the HT locks to the SequenceList::writeLock, and move to OSV so it doesn't share with the other bitfields in the same byte. While on the face of it this might seen like a serious performance degredation having to serialise on a single lock, it actually doesn't appear to be /that/ bad: 1) The stale flag is only accessed rarely: a) Set to false when a StoredValue is initially created (and this doesn't need the lock as the item isn't in the SeqList yet) b) Set to true when an item becomes stale (result of concurrent update & rangeRead, or deleted item is aged out and marked Stale). c) Read during tombStone purging. 2) Even when we *do* need to access the stale flag, we have already acquired the writeLock in the hot path (updateStoredValue/markItemStale). Note: This will increase contention during a tombstone purge, as it will need to acquire and release the writeLock for every seqList element; this is an area which should be looked at for future performance improvement - for example can the stale flag be made atomic, or can we add lightweight, per-OSV lock? Note(2): This increases the size of OSV by 8 bytes, as moving Stale to it pushes up the alignment requirements (it was previously aligned to 8 bytes), although we've only added 1 bit to it. Better solution would be to pack this into the boost_list hook, // or introduce per-OSV microlock to guard the whole object. Change-Id: If814b966a10c64fada204998410dafc5ad255351 Reviewed-on: http://review.couchbase.org/76715 Reviewed-by: Jim Walker <jim@couchbase.com> Tested-by: Build Bot <build@couchbase.com> Reviewed-by: Manu Dhundi <manu@couchbase.com>
show more ...
|
Revision tags: v4.6.2_ep |
|
#
2250e2f8 |
| 21-Mar-2017 |
Dave Rigby <daver@couchbase.com> |
MB-23435: [Ephemeral] Add seqlist statistics Add per-vBucket sequence list statistics for Ephemeral buckets: * seqlist_count - number of documents in this VBucket's sequence list.
MB-23435: [Ephemeral] Add seqlist statistics Add per-vBucket sequence list statistics for Ephemeral buckets: * seqlist_count - number of documents in this VBucket's sequence list. * seqlist_deleted_count - Count of deleted documents in this VBucket's sequence list. * seqlist_high_seqno - High sequence number in sequence list for this VBucket. We need to keep track of the highest seqno separately because there is a small window wherein the last element of the list (though in correct order) does not have a seqno. High seqno is monotonically increasing and is reset to a lower value only in case of a rollback. * seqlist_highest_deduped_seqno - Highest de-duplicated sequence number in sequence list for this VBucket. We need to this to send out point-in-time snapshots in range read. highest_deduped_seqno is monotonically increasing and is reset to a lower value only in case of a rollback. * seqlist_read_range_begin - Starting sequence number for this VBucket's sequence list read range. Marks the lower bound of possible stale documents in the sequence list. * seqlist_read_range_end - Ending sequence number for this VBucket's sequence list read range. Marks the upper bound of possible stale documents in the sequence list. * seqlist_read_range_count - Count of elements for this VBucket's sequence list read range (i.e. end - begin). * seqlist_stale_count - Count of stale documents in this VBucket's sequence list. * seqlist_stale_value_bytes - Number of bytes of stale values in this VBucket's sequence list. * seqlist_stale_metadata_bytes - Number of bytes of stale metadata (key + fixed metadata) in this VBucket's sequence list. Change-Id: Ia4e3ee062185e162fd8d1386edcd34724768a78f Reviewed-on: http://review.couchbase.org/75501 Reviewed-by: Manu Dhundi <manu@couchbase.com> Tested-by: Build Bot <build@couchbase.com>
show more ...
|
Revision tags: v4.6.2_mc |
|
#
c9fcd6f9 |
| 10-Mar-2017 |
Manu Dhundi <manu@couchbase.com> |
[Ephemeral]: Track memory usage of the items owned by the sequence list In ephemeral buckets we can have stale items which are not owned by the hash table, but owned by the sequence list
[Ephemeral]: Track memory usage of the items owned by the sequence list In ephemeral buckets we can have stale items which are not owned by the hash table, but owned by the sequence list. We need to track the memory usage of these items in the list for overall memory tracking. This commit only tracks memory used in the list. This is yet to be exported out to all the necessary global stats. Change-Id: Ie06e7a69a45780735a2d3f51341a261984c1786e Reviewed-on: http://review.couchbase.org/74959 Reviewed-by: Dave Rigby <daver@couchbase.com> Tested-by: Build Bot <build@couchbase.com>
show more ...
|
#
f7831b0b |
| 09-Mar-2017 |
Manu Dhundi <manu@couchbase.com> |
[Ephemeral Bucket]: Allow updates on sequential storage (linkedlist) When an item in hashtable (in an Ephemeral vbucket) is updated, the updated item must be placed in the right position
[Ephemeral Bucket]: Allow updates on sequential storage (linkedlist) When an item in hashtable (in an Ephemeral vbucket) is updated, the updated item must be placed in the right position (at the end) in the sequential storage data structure, linkedlist. If there are no range reads (backfills) during an update we just update the hash table element and move the item to the end of the list. This is somewhat similar (hashtable part) to what happens in current ep vbuckets. However, in case of range reads (backfills), the behavior is different w.r.t existing ep vbuckets. The range reads are basically point-in-time snapshots and hence require the older (non updated) item to be there in the range of the read. But the hashtable wants to store only the most recent (updated) item. Hence, we mark the item as stale and transfer the ownership of the item to the linkedlist from hashtable and add a new item with the value of update in the hashtable and at the end of the list. We have the module tests at the linkedlist level. Module tests at the ephemeral vbucket level will follow soon in a future commit. Change-Id: Ibb710a23410a44109512232ddd1aca342347b1b0 Reviewed-on: http://review.couchbase.org/74660 Reviewed-by: Dave Rigby <daver@couchbase.com> Tested-by: Build Bot <build@couchbase.com>
show more ...
|
#
df176008 |
| 08-Mar-2017 |
Manu Dhundi <manu@couchbase.com> |
[Ephemeral Bucket]: Add point-in-time snapshot rangeRead on LinkedList Monotonically point-in-time snapshots which can be used for incremental DCP. This is implemented in the sequential
[Ephemeral Bucket]: Add point-in-time snapshot rangeRead on LinkedList Monotonically point-in-time snapshots which can be used for incremental DCP. This is implemented in the sequential data structure 'BasicLinkedList' in EphemeralVBuckets. This is equivalent to DCP disk backfill in Couchbase buckets. To get a point-in-time snapshot from the list, the main requirement is no de-deduplication be allowed on the list in the range where the read for the snapshot is happening. We achieve it by not blocking the writes on the list during the time of the range read. This commit implements only the range read part. The non-blocking write during a range read will be evident with implementation of updateListElem in an upcoming commit. Change-Id: I80eeb760e94730645f4d20ec6a8de5ce81da7d26 Reviewed-on: http://review.couchbase.org/74639 Reviewed-by: Dave Rigby <daver@couchbase.com> Tested-by: Build Bot <build@couchbase.com>
show more ...
|
#
52fa223f |
| 07-Mar-2017 |
Manu Dhundi <manu@couchbase.com> |
[Ephemeral Bucket]: Add a class for ordered sequence of items in memory This commit adds an abstract base class 'SequenceList' that provides apis to store ordered sequence of items (Stor
[Ephemeral Bucket]: Add a class for ordered sequence of items in memory This commit adds an abstract base class 'SequenceList' that provides apis to store ordered sequence of items (StoredValues) in memory in our multi-threaded, monotonically increasing seq model. It also adds 'BasicLinkedList', a concrete class that implements SequenceList. 'BasicLinkedList' uses a boost intrusive doubly linked list. It is essentially a linked list of 'StoredValues'. Currently, only appendToList() functionality is implemented. But the goal is, 'BasicLinkedList' works in tandem with already existing 'HashTable' to achieve O(1) writes/updates, O(1) reads and range reads. Range read is necessary for an in-memory DCP backfill. Range reads provide point-in-time snapshots which is essential for our incremental DCP. And a module test is added as well. Change-Id: I9877c17c9e5b5be5bb55e559bbfb58f25281251d Reviewed-on: http://review.couchbase.org/74440 Reviewed-by: Dave Rigby <daver@couchbase.com> Tested-by: Build Bot <build@couchbase.com>
show more ...
|
Revision tags: v4.6.1_ep |
|
#
0b95e08b |
| 09-Feb-2017 |
Dave Rigby <daver@couchbase.com> |
Cleanup #include usage in headers (2) Further cleanup of unnecessary #includes in headers Change-Id: I31c74ffc2ed477f66c0ff955e706b069d06b99a8 Reviewed-on: http://review.couchba
Cleanup #include usage in headers (2) Further cleanup of unnecessary #includes in headers Change-Id: I31c74ffc2ed477f66c0ff955e706b069d06b99a8 Reviewed-on: http://review.couchbase.org/73460 Reviewed-by: Trond Norbye <trond.norbye@gmail.com> Tested-by: Build Bot <build@couchbase.com>
show more ...
|
Revision tags: v4.6.0_ep |
|
#
674da1ca |
| 05-Dec-2016 |
Dave Rigby <daver@couchbase.com> |
[2/4] Ephemeral class shuffle: Rename class KVBucket to KVBucketIface This makes room in the class hierarchy for a new concrete KVBucket class. Change-Id: I0c51be43907efa0f2b023
[2/4] Ephemeral class shuffle: Rename class KVBucket to KVBucketIface This makes room in the class hierarchy for a new concrete KVBucket class. Change-Id: I0c51be43907efa0f2b02305a2f6faee892170c46 Reviewed-on: http://review.couchbase.org/71103 Tested-by: buildbot <build@couchbase.com> Reviewed-by: Jim Walker <jim@couchbase.com>
show more ...
|
#
80d2cd1e |
| 05-Dec-2016 |
Dave Rigby <daver@couchbase.com> |
[1/4] Ephemeral class shuffle: Move kvbucket.h to kv_bucket_iface.h The current class hierarchy for Bucket classes in ep-engine looks like: KVBucket - pure
[1/4] Ephemeral class shuffle: Move kvbucket.h to kv_bucket_iface.h The current class hierarchy for Bucket classes in ep-engine looks like: KVBucket - pure interface ^ | EPBucket - concrete, all code To add support for Ephemeral buckets, we want to create a new EphemeralBucket class. This is expected to share a majority of its code with EPBucket (VBuckets, DCP, rebalance, failover), but with significant changes (no storage, HashTable is ordered). As such, we want to be able to share the majority of the current EPBucket's code, but also deviate where necessary. This suggests an inheritance heirarchy of: KVBucketIface - pure interface ^ | KVBucket - shared code ^ | /----------------------------\ | | EPBucket EphemeralBucket Where each subclass contains the class-specific code, and common code present in the parent class. However, it is desirable to maintain as much history in Git as possible - Git has poor handling of moves of individual pieces of code, and if we simply created a new shared parent class - KVBucket - and moved big chunks of code from EPBucket into KVBucket we'd likely cause many merge conflicts in future. It is preferable to instead break the change into a series of smaller patches, where we rename complete files in one patch (which Git handles very well), and then rename classes (i.e. make code changes) in a seperate patch. Therefore this patch is the first of a series of four: 1. Move kvbucket.h to kv_bucket_iface.h (this patch) - change no code, but move the file which is logically the abstract base class to the correct filename. 2. Rename class KVBucket to KVBucketIface - "make room" in the class hierarchy for a new concrete KVBucket class. 3. Move ep.{ccm,h} -> kv_bucket.{cc,h} - change no code, but move the file which is to become the new shared parent class to the correct filename. 4. Rename class EPBucket -> KVBucket - Finally rename the code which is the shared parent class to the correct name. Change-Id: Ifc06785b3c32a4ccc79f903c1fd37d476b879fd9 Reviewed-on: http://review.couchbase.org/71102 Reviewed-by: Sriram Ganesan <sriram@couchbase.com> Reviewed-by: Manu Dhundi <manu@couchbase.com> Tested-by: buildbot <build@couchbase.com> Reviewed-by: Jim Walker <jim@couchbase.com>
show more ...
|
Revision tags: v4.5.1-MP1_mc, v4.6.0-DP_mc, v4.6.0-DP_ep |
|
#
a7b5e9c9 |
| 20-Oct-2016 |
Manu Dhundi <manu@couchbase.com> |
[Ephemeral Bucket]: Create an abstract base class KVBucket Currently “EventuallyPersistentStore” is the class that engineers the couchbase bucket behavior in the kv-engine. It (i) ha
[Ephemeral Bucket]: Create an abstract base class KVBucket Currently “EventuallyPersistentStore” is the class that engineers the couchbase bucket behavior in the kv-engine. It (i) handles get/set requests, any spl requests defined in our protocol, (ii) spawns tasks like flusher, bgfetcher, pager, access scanner etc (iii) sets up config params for DCP, HT, Vbucket (iv) interactions with KV store (say forestdb or couchstore) for persistence, vb snapshotting, rollback etc and many more Ephemeral bucket is a new bucket type and it has some similar but many distinct features w.r.t couchbase bucket. For example we (i) do not need flusher, bgfetcher tasks (ii) handle get/sets differently as we do not have anything called full eviction/value eviction and hence no bloom filters (iii) No KV store (storage) interactions (iv) use modified HT+ skiplist structures to store/get items. Hence it is a good idea to derive new class “EphemeralBucket” and “EventuallyPersistentStore” as peer subclasses from the base class “KVBucket”. This commit just creates the abstract base class and makes the the clients of EventuallyPersistentStore which are expected to be clients of EphemeralStore as well to use base class KVBucket. Subsequent commits will add "EphemeralBucket" class and rename "EventuallyPersistentStore" to "EPBucket". Change-Id: Ia1e403b4c718d8ee8abd84316287d58743397cf8 Reviewed-on: http://review.couchbase.org/68671 Tested-by: buildbot <build@couchbase.com> Reviewed-by: Dave Rigby <daver@couchbase.com>
show more ...
|
Revision tags: v4.5.1-MP1_ep, v4.1.2-MP2_mc, v4.5.1_mc, v4.6.0_mc, v4.1.2-MP1_ep, v3.1.6_ep |
|
#
6403bc0e |
| 26-Jun-2016 |
Jim Walker <jim@couchbase.com> |
MB-18453: Give all tasks their own stats and priority MB-18453 identified that tasks have copied & pasted constructors which leads to some tasks all having the same Priority object.
MB-18453: Give all tasks their own stats and priority MB-18453 identified that tasks have copied & pasted constructors which leads to some tasks all having the same Priority object. The fallout of this is that many tasks now all contribute to the same histogram for runtime and scheduling waittime. When debugging issues which lead to MB-18453 it is near impossible at times to know which real task was delayed as the stats can be attributed to many tasks. This commit introduces makes all tasks have their own ID and thus their own histograms and also makes it easier for new tasks to be created without forgetting to create a new Priority instance. tasks.defs.h is a new file that captures every sub-class of GlobalTask and shows the priority of all tasks. TASK macros are now used to generate various switch statements and enums used in task accounting. The new system is not strict, MyTask could still be assigned the priority/id of OldTask, however this flexibility can be useful in some circumstances. Note this patch has changed ep_testsuite test_item_pager to increase the max_size value in the test config. This is because this patch increases the baseline heap usage of a bucket as we've increased the number of Histogram object allocated by EventuallyPersistentStore. Prior to this patch 28 were allocated, with this patch 51 are allocated (1 per task). Each Histogram<hrtime_t is approx 1568 bytes (on OSX clang build). The new max_size is 2.5MiB Change-Id: I209c67945b964023615af37a12f83ca97142ce53 Reviewed-on: http://review.couchbase.org/65253 Well-Formed: buildbot <build@couchbase.com> Reviewed-by: Dave Rigby <daver@couchbase.com> Tested-by: buildbot <build@couchbase.com>
show more ...
|
Revision tags: v4.5.0_mc, v4.5.0_ep, v4.1.1_ep, v3.1.5_ep, v4.1.1_mc, v3.1.4_ep, v3.1.4_mc, v3.1.5_mc, v3.1.3_ep, v4.1.0_ep |
|
#
e7754280 |
| 05-Nov-2015 |
Dave Rigby <daver@couchbase.com> |
Simplify common.h: Remove unnecessary headers [3/3] Remove all #includes which arn't actually needed by the file including them (aka "include what you use"). Reduces build time
Simplify common.h: Remove unnecessary headers [3/3] Remove all #includes which arn't actually needed by the file including them (aka "include what you use"). Reduces build time down from before this patch series from: 31.82 real 222.13 user 16.09 sys down to: 26.95 real 188.54 user 13.29 sys giving a 15% speedup in (user+sys). (Built using `make clean && CCACHE_DISABLE=1 time make -j8`) Change-Id: Ia47f08487d20c94167d93de8dd6590f7703dd898 Reviewed-on: http://review.couchbase.org/56705 Tested-by: buildbot <build@couchbase.com> Reviewed-by: Manu Dhundi <manu@couchbase.com> Reviewed-by: Chiyoung Seo <chiyoung@couchbase.com>
show more ...
|
Revision tags: v3.1.2_ep, v4.1.0_mc, v3.1.2_mc, v3.1.1_mc, v3.1.1_ep, v4.0.0_ep, v4.0.0_mc, v3.1.0_ep, v3.1.0_mc, v3.1.6_mc, v3.0.2-MP2_mc, v3.0.2_ep, v3.0.2_mc, v3.0.1_mc, v3.0.0_ep, v3.0.0-beta3_mc, v3.0.0_mc, v3.0.0-beta2_mc, v3.0.0-beta1_mc, v2.5.1_ep, v2.5.1-MP1-A_mc, v2.5.0_mc |
|
#
bf54e954 |
| 08-Jan-2014 |
Trond Norbye <trond.norbye@gmail.com> |
Refactor: Move ExecutorThread to its own file Change-Id: I7e8d2049aac7fefa2289d9a4f171aafdb840d267 Reviewed-on: http://review.couchbase.org/31725 Reviewed-by: Sundararaman Sridharan
Refactor: Move ExecutorThread to its own file Change-Id: I7e8d2049aac7fefa2289d9a4f171aafdb840d267 Reviewed-on: http://review.couchbase.org/31725 Reviewed-by: Sundararaman Sridharan <sundar.sridharan@gmail.com> Tested-by: Sundararaman Sridharan <sundar.sridharan@gmail.com>
show more ...
|
Revision tags: v2.5.0-dp1_mc |
|
#
ac3ea552 |
| 06-Dec-2013 |
Sundar Sridharan <sundar.sridharan@gmail.com> |
CBD-1148: Migrate all NonIO tasks into Common Pool This removes per-bucket threads from the NonIO dispatcher into the global thread pool shared by all buckets Following tasks handled
CBD-1148: Migrate all NonIO tasks into Common Pool This removes per-bucket threads from the NonIO dispatcher into the global thread pool shared by all buckets Following tasks handled by the non-io thread are now migrated into the common shared thread pool... 1) Backfill task 2) Hash Table Resizer 3) Checkpoint remover 4) ExpiredItemPager 5) Item Pager 6) VBCBAdaptor (async task spawned by daemon tasks 1-4) 7) Tap Connection Notification (daemon task) 8) Tap Resume 9) Tap Connection Reaper 10) VBucket Memory Deletion 11) FlushAll task 12) Checkpoint Stats Also removed isDaemon and makes GlobalTask's starttime internal Allow new api in ExecutorPool to stop a task group entirely Change-Id: Ic5cbbfb6d1a140335b0ff1a7c7dc31e20ca47186 Reviewed-on: http://review.couchbase.org/30775 Reviewed-by: Chiyoung Seo <chiyoung@couchbase.com> Tested-by: Chiyoung Seo <chiyoung@couchbase.com>
show more ...
|
Revision tags: v2.2.0_mc, 2.1.1r_ep, 2.1.0r_ep, 2.0.2r_ep, 2.0.2r_mc, 2.0.1-macosx_ep, 2.0.1-linux_ep |
|
#
66eb94d0 |
| 17-Jan-2013 |
Mike Wiederhold <mike@couchbase.com> |
MB-7728: Add copyright headers to all files This is something that our cpplint tool turns on and it makes our product look a little bit more profesional. I have also enabled the tool
MB-7728: Add copyright headers to all files This is something that our cpplint tool turns on and it makes our product look a little bit more profesional. I have also enabled the tool to begin checking for these headers so it will start complaining if we add a new file without a copyright header. Change-Id: Ie956fdf7027bf56d9665ee455acd3c109fcacc76 Reviewed-on: http://review.couchbase.org/24560 Reviewed-by: Chiyoung Seo <chiyoung.seo@gmail.com> Reviewed-by: Jin Lim <jin@couchbase.com> Tested-by: Michael Wiederhold <mike@couchbase.com>
show more ...
|
Revision tags: 2.0.1-linux_mc, 2.0.0-couchbase_ep |
|
#
244c0146 |
| 26-Nov-2012 |
Mike Wiederhold <mike@couchbase.com> |
MB-7461: Alphabetize includes to conform with c++ standards Change-Id: I71333dedada6530713b90184857bab9ac49d13df Reviewed-on: http://review.couchbase.org/23515 Reviewed-by: Jin Lim <
MB-7461: Alphabetize includes to conform with c++ standards Change-Id: I71333dedada6530713b90184857bab9ac49d13df Reviewed-on: http://review.couchbase.org/23515 Reviewed-by: Jin Lim <jin@couchbase.com> Tested-by: Michael Wiederhold <mike@couchbase.com>
show more ...
|
#
8f48f64b |
| 23-Nov-2012 |
Mike Wiederhold <mike@couchbase.com> |
MB-7426: Fix all header defines to conform with cpplint Change-Id: I8253b640bc49ee8a0fabbb39ece73c2efdb906d5 Reviewed-on: http://review.couchbase.org/23510 Reviewed-by: Michael Wiede
MB-7426: Fix all header defines to conform with cpplint Change-Id: I8253b640bc49ee8a0fabbb39ece73c2efdb906d5 Reviewed-on: http://review.couchbase.org/23510 Reviewed-by: Michael Wiederhold <mike@couchbase.com> Tested-by: Michael Wiederhold <mike@couchbase.com>
show more ...
|
#
fc9615cd |
| 23-Nov-2012 |
Mike Wiederhold <mike@couchbase.com> |
MB-7405: Make extension for all header files .h Change-Id: I7badb1e71c038b6498296c2893ccdbd47c2f0f87 Reviewed-on: http://review.couchbase.org/23483 Reviewed-by: Michael Wiederhold <m
MB-7405: Make extension for all header files .h Change-Id: I7badb1e71c038b6498296c2893ccdbd47c2f0f87 Reviewed-on: http://review.couchbase.org/23483 Reviewed-by: Michael Wiederhold <mike@couchbase.com> Tested-by: Michael Wiederhold <mike@couchbase.com>
show more ...
|