{"push_id":2344219833,"size":20,"distinct_size":20,"ref":"refs/heads/collections","head":"7ddde99a7e2aa27062dc0cedd60f60ff425596ec","before":"ba81398a8aa1f690379c7a6e60841a5a8d78d830","commits":[{"sha":"addf05d14c4139f1437e884054a5c1d6fc41f619","author":{"name":"Sriram Ganesan","email":"18ee6cd3ea559797e7ecb64257dc5001f77a9457@couchbase.com"},"message":"MB-27976: Print the connection string while closing DCP connection\n\nInstead of printing the pointer to the cookie, print the connection\nstring. It describes the connection being removed more than the\ncookie pointer.\n\nChange-Id: I981e48944d84f0edd33f66507ae5125d1a00a10b\nReviewed-on: http://review.couchbase.org/89630\nTested-by: Build Bot <build@couchbase.com>\nReviewed-by: Dave Rigby <daver@couchbase.com>","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/addf05d14c4139f1437e884054a5c1d6fc41f619"},{"sha":"ce7632fc990adc50396fcc41ca8d80c9ea8868b0","author":{"name":"Trond Norbye","email":"4c56d166da4f78aca802dc5c2a08cae9f3a0d0ce@gmail.com"},"message":"Fixed log message from DCP Open\n\nWhen moving to spdlogger there was a bug with missing escape of\nthe surrounding brace characters for the flags.\n\nGiven that DCP open isn't in the performance critical path of\nthe server let's format the string as a proper JSON array as\nwell. Ex:\n\nINFO 40: DCP connection opened successfully. flags:[\"PRODUCER\",\"INCLUDE_XATTRS\"]\n\nChange-Id: Id92c02d88818a8ec9c1a514fb5a28626af7689f7\nReviewed-on: http://review.couchbase.org/89656\nTested-by: Build Bot <build@couchbase.com>\nReviewed-by: Dave Rigby <daver@couchbase.com>","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/ce7632fc990adc50396fcc41ca8d80c9ea8868b0"},{"sha":"070d2c8f224bb6b42f9e038e6f05e64cd3eb349c","author":{"name":"Dave Rigby","email":"f1dabaf34419d2352350e740ada40ded900019c4@couchbase.com"},"message":"CMake: speed up incremntal build via CMAKE_LINK_DEPENDS_NO_SHARED\n\nSpeed up incremental builds by not depending on linked shared library\nfiles, only the library API.\n\nModification to shared library *files* will not be sufficient to\nre-link targets which depend on them; however changes to the shared\nlibrary interface (i.e. headers) will still cause re-linking.\n\nExample: memcached.exe dynamically links to libplatform.so; and\ndepends on the various <platform/xxx> header files. With this setting,\nmodifications to the implemenation of libplatform.so which don't\nchange it's headers will not cause memcached.exe to be re-linked.\n\nChange-Id: Ia47750552a22405c70a168d4288b079f7d6816ac\nReviewed-on: http://review.couchbase.org/89319\nReviewed-by: Paolo Cocchi <paolo.cocchi@couchbase.com>\nTested-by: Build Bot <build@couchbase.com>","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/070d2c8f224bb6b42f9e038e6f05e64cd3eb349c"},{"sha":"0739f2fd9e18b55b9c926ae0f3194fe0eeb069bd","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"MB-27199: Address TSAN issues with ephemeral backfill\n\nThe memory backfill will read much of a StoredValue when it does\nStoredValue::toItem. All of the StoredValue members are generally\nupdated under the HashBucketLock, so obtain the same for correct\naccess.\n\nThe linked-list code (range read etc...) often reads the bySeqno of\nan entry. In general StoredValues are either out of the hashtable and\nwon't have their bySeqno changed by a frontend op and are protected\nby the range-read lock, for elements in the hashtable, the hash-bucket\nlock provides safe access for updates. However TSAN doesn't detect\nthis and sees someone writing the bySeqno with a hash-bucket lock and\nsomeone reading it without the hash-bucket lock, hence the change to\nStoredValue making it a RelaxedAtomic\n\ndcp_test is updated so that a backfill test exasperates the original\nissue in the MB.\n\nChange-Id: Iadded56466b3ee92c075a3429936fcd578905b49\nReviewed-on: http://review.couchbase.org/88936\nReviewed-by: Dave Rigby <daver@couchbase.com>\nTested-by: Build Bot <build@couchbase.com>","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/0739f2fd9e18b55b9c926ae0f3194fe0eeb069bd"},{"sha":"0da3ed5444fb52017c689435add223d3080a5c39","author":{"name":"Daniel Owen","email":"8a57d28ff614254d5f5384c898c5f403b046677e@couchbase.com"},"message":"MB-28082: Audit Daemon: Support filtering_permitted option\n\nWith version 2 of the audit daemon configuration a filtering_permitted\nboolean attribute can be added to an event description.\n\nIf set to true it means that event can be filtered out and therefore\nmay not appear in the audit log.  If set to false, the event is not\npermitted to be filtered out due to security reasons.\n\nThe filtering_permitted attribute is set for all auditd and memcached\nevent descriptions.\n\nRe-applying, as the issue was ns_server did not support stating version\n2 in audit_events.json file.  This re-apply also contains an additional\nchange from the original patch where we set the version to 2 in the\nauditd and memcached descriptor files.\n\nChange-Id: Ie025c64c2ca4b61b34ea64e2eba1779c04cc0580\nReviewed-on: http://review.couchbase.org/89406\nTested-by: Build Bot <build@couchbase.com>\nReviewed-by: Dave Rigby <daver@couchbase.com>","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/0da3ed5444fb52017c689435add223d3080a5c39"},{"sha":"6dcad8cdb50defed46fc62614ae79c68c26dee83","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"MB-25342: Fix removeKey as value evicted items still need removing\n\nThe removeKey function is only removing keys if they're resident.\nresident or not, if the key is found and has a matching seqno, delete\nit.\n\nChange-Id: I57b7a5c74d2185afacd1447cf8e77ca6c30dbfee\nReviewed-on: http://review.couchbase.org/89001\nReviewed-by: Dave Rigby <daver@couchbase.com>\nTested-by: Build Bot <build@couchbase.com>","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/6dcad8cdb50defed46fc62614ae79c68c26dee83"},{"sha":"d60c9887610e0a953c643625fee81672eae34022","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"Reduce variations of MemoryAllocationStat benchmark\n\nThe benchmark was configured using ranges which lead to many\nvariations being executed. Switch over to run a smaller set of\ninteresting arguments using the Arg api.\n\nChange-Id: Ie60aee916fd0d10271e402cbd3a02d58c52afcd8\nReviewed-on: http://review.couchbase.org/89673\nTested-by: Build Bot <build@couchbase.com>\nReviewed-by: Dave Rigby <daver@couchbase.com>","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/d60c9887610e0a953c643625fee81672eae34022"},{"sha":"66797447ef04c0174f67f58c71b1d5867b3e7088","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"MB-27818: Don't allow sanitizeFailoverTable to leave an empty table\n\n1. Check the table after sanitize, do we need to create an entry?\n2. A second issue was spotted in that when sanitize removes elements\n it is not updating the internal JSON cache, so toJSON would return\n the JSON with the bad entries.\n\nChange-Id: I2914efe8633fc97670bb30e27b3d9172abfa36c8\nReviewed-on: http://review.couchbase.org/88766\nReviewed-by: Dave Rigby <daver@couchbase.com>\nTested-by: Build Bot <build@couchbase.com>","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/66797447ef04c0174f67f58c71b1d5867b3e7088"},{"sha":"0222762c12621a34654974fac18c80d36ef99c00","author":{"name":"Paolo Cocchi","email":"d2d6aac6b4dc1654bdcbcd00126dcf7b8579b20f@couchbase.com"},"message":"CouchRocks: Increase 'stats_dump_period_sec' to 600 seconds\n\nWe are currently dumping RocksDB internal stats every minute. This\nproduced a 24GB log file on HiDD S1 Perftests.\nWe increase the dump period to 10 minutes.\n\nChange-Id: I067df49327ac2387bd4fd7a44c624dfec6b33a8f\nReviewed-on: http://review.couchbase.org/89563\nReviewed-by: Dave Rigby <daver@couchbase.com>\nTested-by: Build Bot <build@couchbase.com>","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/0222762c12621a34654974fac18c80d36ef99c00"},{"sha":"4bfe2897207bf0cdddbf4b4d9cb530c387c2d82b","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"MB-28258: Change Warmup::State from int to enum class\n\nSwitch the int to an enum class\n\nChange-Id: I8c5cf436b53fbb99f3566987c791f55727aa7d7b","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/4bfe2897207bf0cdddbf4b4d9cb530c387c2d82b"},{"sha":"b514c1792b577e43e57e56e2270565e184004b3f","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"MB-26455: Allow correct processing of 'old' keys and separator changes\n\nThe collection's separator can only be changed when 0 collections\nexist. However nothing stops the separator from changing if there are\ndeleted collections (and their keys) in play.\n\nPrior to this commit each separator change resulted in a single system\nevent being mutated, that event had a static key. Thus a VB could have\nthe following sequence of keys/events.\n\n    1  fruit::1\n    2  fruit::2\n    <fruit collection is deleted>\n    <separator is changed from :: to - >\n    <fruit collection is recreated>\n    6  fruit-1\n    7  fruit-2\n    <fruit collection is deleted>\n    <separator is changed from - to # >\n    9  $collections_separator (the Item value contains the new separator)\n    10 $collections::fruit (fruit recreated)\n    11 fruit#1\n    12 fruit#2\n\nIn this sequence, some of the changes are lost historically because a\nstatic key is used for the separator change. Between seqno 2 and 6 the\nseparator changed from :: to -, but the separator change system event\nis currently at seqno 9 with # as its value.\n\nWith this setup a problem exists if we were to process the historical\ndata e.g. whilst backfilling for DCP or performing a compaction\ncollection erase. The problem is that when we go back to seqno 1 and\n2, we have no knowledge of the separator for those items,  all we have\nis the current # separator. We cannot determine that fruit::1 is a\nfruit collection key.\n\nThis commit addresses this problem by making each separator change\ngenerate a unique key. The key itself will encode the new separator,\nand because the key is unique it will reside at the correct point in\nhistory for each separator change.\n\nThe unique key format will be:\n\n    $collections_separator:<seqno>:<new_separator>\n\nWith this change the above sequence now looks as:\n\n    1  fruit::1\n    2  fruit::2\n    <fruit collection is deleted>\n    4  $collections_separator:3:- (change separator to -)\n    <fruit collection is recreated>\n    6  fruit-1\n    7  fruit-2\n    <fruit collection is deleted>\n    9  $collections_separator:8:# (change separator to #)\n    10 $collections::fruit (fruit recreated)\n    11 fruit#1\n    12 fruit#2\n\nNow the code which looks at the historical data (e.g. backfill) will\nencounter these separator change keys before it encounters collection\nkeys using that separator. Backfill and collections-erase can just\nmaintain a current separator and can no correctly break keys to\ndiscover the collection they belong to. The collections eraser and\nKVStore scanning code now include a collections context which has data\nand associated code for doing this tracking.\n\nA final piece of the commit is the garbage collection of these unique\nkeys. i.e. if each separator change puts a unique into the seqno\nindex, how can we clean these away when they're no longer needed (i.e.\nall fruit:: keys purged).\n\nWhilst the eraser runs it tracks all separator change\nkeys, because a separator change can only happen when 0 collections\nexist, it can assume that all but the latest separator change key are\nredundant once the erase has completed. This list of keys\nare simply deleted in the normal way by pushing a deleted Item into\nthe checkpoint once compaction is complete.\n\nChange-Id: I4b38b04ed72d6b39ceded4a860c15260fd394118","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/b514c1792b577e43e57e56e2270565e184004b3f"},{"sha":"fbfb086be77949b98438d9074da1614529a0ea64","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"MB-26972: JSON DCP Filter must also accept name and uid format\n\nIf a client wants to re-connect a DCP stream (non-zero) they must\nbe specific about the collection so they don't miss a intermediate\ncollection delete during their downtime.\n\nThis commit updates Collections::Filter so two formats of JSON are\nvalid and updates Collections::VB::Filter to use the strict name/uid\nchecks when the client uses the name:uid format.\n\nA subsequent patch will ensure that the client does a name:uid request\nwhen the start-seqno is non-zero.\n\nChange-Id: I3cae53bf855d4b8001bcc65b6f036a9053b88307","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/fbfb086be77949b98438d9074da1614529a0ea64"},{"sha":"76fa57d556da2e95a944e88879e2be05c27b7c3b","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"MB-26972: Fail non-zero stream requests with name-only filters\n\nWhen a producer has a name-only filter it cannot accept stream non\nzero stream requests.\n\nChange-Id: I0246d89ffcb20c0f84bdbfc785889c46b12c7b85","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/76fa57d556da2e95a944e88879e2be05c27b7c3b"},{"sha":"9ef2385a9b1bd9a1c4eb367b3fb5ecab67698ace","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"MB-25342: Fix missing completeDeletion when collection is re-opened\n\nWhen updating the CollectionsFlushTest to use the real collections\nerase flow (i.e. compaction) the test failed because the final phase\ndoes a sequence of\n\n1. create fruit\n2. delete fruit\n3. create fruit\n4. trigger compaction/erase\n\nSo when the compactor/eraser processes the bySeqno index it finds all\nof the logically deleted fruit keys, but never triggered 'complete'\nbecause the final 'fruit' system key is a create marker for the\nnew generation of fruit. That key was not logicallyDeleted so we\njust returned false from KVBucket::collectionsEraseKey at line 2407.\n\nWe now don't shortcut out so early, but proceed to test if the key\nis a trigger (shouldCompleteDeletion => true) for completeDeletion.\n\nThis commit was previously a simple test update, but that found the\nissue so now this commit does both.\n\nChange-Id: Id8298da4fef33ae098d2ebc9063481a570f09d61","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/9ef2385a9b1bd9a1c4eb367b3fb5ecab67698ace"},{"sha":"563ed59e0ddef1e454bda6c3d54005565212e00b","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"MB-16181: Make collections erase callback use a CachingReadHandle\n\nSome upstream changes are better implemented with a CachingReadHandle\nused in the eraser callback (so that we avoid extra key scans).\n\nChange-Id: I74ee5ed6e3c00a6185b9cae1f5aae7e21c051efe","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/563ed59e0ddef1e454bda6c3d54005565212e00b"},{"sha":"79277e9f8e793053f0f8a9576f9ca1b236892791","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"MB-27215: Basic collection counting\n\nStore in _local namespace the current count\n\nOnly store collections which have changed in each flush\n\nChange-Id: Ibab2aa7a8ad557ce455f082221d906f5c95e7b39","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/79277e9f8e793053f0f8a9576f9ca1b236892791"},{"sha":"e571f2512a3a386d5cfecba06c254fba91084d0a","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"load counts\n\nChange-Id: Id17a722f58ea209be2b8e7c811860baaad43a20c","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/e571f2512a3a386d5cfecba06c254fba91084d0a"},{"sha":"b3772a53616cac81155347e65b0dfc19b6577433","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"sqiash with warmup collections\n\nChange-Id: I15a17d5b1a25e2ecc581dd50204bd83582b8294b","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/b3772a53616cac81155347e65b0dfc19b6577433"},{"sha":"9b12c41ea5ac25829eca2ad4d136b2752272996a","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"Warmup item counts\n\nChange-Id: I429e102770ecb662ee890f4f6ce243d6c6f613c1","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/9b12c41ea5ac25829eca2ad4d136b2752272996a"},{"sha":"7ddde99a7e2aa27062dc0cedd60f60ff425596ec","author":{"name":"Jim Walker","email":"e3a16e9ace25eabbd302f2bef793087beb8ecdce@couchbase.com"},"message":"getColl RDONLY\n\nChange-Id: Ica9ec8753d0bbeb437961fd7a9d2baf1218f6bca","distinct":true,"url":"https://api.github.com/repos/jimwwalker/kv_engine/commits/7ddde99a7e2aa27062dc0cedd60f60ff425596ec"}]}
{"actor":{"display_login":"jimwwalker"}}