)]}'
{"id":"libcouchbase~13177","triplet_id":"libcouchbase~master~Id5ec01b8e6fd75e570a35f23fa61f6e12109479a","project":"libcouchbase","branch":"master","hashtags":[],"change_id":"Id5ec01b8e6fd75e570a35f23fa61f6e12109479a","subject":"Proper enqueued retry handling (WIP)","status":"ABANDONED","created":"2012-02-11 08:32:18.000000000","updated":"2012-10-05 00:34:18.000000000","total_comment_count":4,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"459829f49176b93645b5c14cd1a34f4f27f2872b","_number":13177,"virtual_id_number":13177,"owner":{"_account_id":1000292,"name":"Mark Nunberg","email":"mark.nunberg@couchbase.com","username":"mnunberg","avatars":[{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"actions":{},"labels":{"Verified":{"all":[{"_account_id":1000292,"name":"Mark Nunberg","email":"mark.nunberg@couchbase.com","username":"mnunberg","avatars":[{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":1000201,"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","username":"avsej","avatars":[{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{"-1":"Fails"," 0":"No score","+1":"Verified"},"description":"","default_value":0},"Code-Review":{"all":[{"value":0,"date":"2012-02-11 17:20:08.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":1000292,"name":"Mark Nunberg","email":"mark.nunberg@couchbase.com","username":"mnunberg","avatars":[{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"date":"2012-02-11 08:34:10.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":1000201,"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","username":"avsej","avatars":[{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{"-2":"Do not submit","-1":"I would prefer that you didn\u0027t submit this"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me, approved"},"description":"","default_value":0},"Well-Formed":{"all":[{"_account_id":1000292,"name":"Mark Nunberg","email":"mark.nunberg@couchbase.com","username":"mnunberg","avatars":[{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"_account_id":1000201,"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","username":"avsej","avatars":[{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{"-1":"Commit is not well-formed"," 0":"Well-formedness not checked","+1":"Commit is well-formed"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":1000201,"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","username":"avsej","avatars":[{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"_account_id":1000292,"name":"Mark Nunberg","email":"mark.nunberg@couchbase.com","username":"mnunberg","avatars":[{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2012-02-11 08:34:10.000000000","updated_by":{"_account_id":1000201,"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","username":"avsej","avatars":[{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"reviewer":{"_account_id":1000201,"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","username":"avsej","avatars":[{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/dd70f9d8cc5f9ee488d68e7a787ba526.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"state":"REVIEWER"}],"messages":[{"id":"6ab9ff170f832ef017cc6201280729d9fa453cd1","author":{"_account_id":1000002,"name":"Trond Norbye","display_name":"Trond","email":"trond.norbye@couchbase.com","username":"trond","avatars":[{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/1521a1fa74885ab7b9748113afe689cc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2012-02-11 09:01:17.000000000","message":"Patch Set 1: (4 inline comments)\n\nI just glanced at it while I was waiting for a compile job to complete.\n\nhow is this \"delay\" for retries supposed to work if I run another command that wants to send a command to that server? will that force the buffer to be sent immediately, or will all commands to that server be delayed?","accounts_in_message":[],"_revision_number":1},{"id":"09a0338da42be23a8d148dee0123d2fd2e17e219","author":{"_account_id":1000292,"name":"Mark Nunberg","email":"mark.nunberg@couchbase.com","username":"mnunberg","avatars":[{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2012-02-11 17:20:08.000000000","message":"Patch Set 1:\n\nThe delay for retries works like this. When a command fails and is retriable, it is placed in an instance-level fifo queue. The actual binary header and command data is stored along with command metadata in this queue.\n\nThe event loop will call a timer every \u0027retry interval\u0027 seconds, and pop as many items from the queue as possible, as long as the last popped item\u0027s \u0027retry timeout\u0027 is not in the future.\n\nWhen the timeout is triggered, the command is retried with an updated current opaque sequence number as well as an updated vbid and server (using vbucket mapping functions). The complexity isn\u0027t that great for re-submitting the command, although the current implementation assumes each command has at least a key and a vbucket ID.\n\nThe nice part about this mechanism is that it\u0027s per-instance and not per-server, so there\u0027s no complex buffer relocations or anything like that","accounts_in_message":[],"_revision_number":1},{"id":"8603b6779849f421085d6ec799aa3436dd161c6c","author":{"_account_id":1000292,"name":"Mark Nunberg","email":"mark.nunberg@couchbase.com","username":"mnunberg","avatars":[{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2012-02-11 17:34:47.000000000","message":"Patch Set 1:\n\nAnd to actually answer your question, retried commands would not affect other commands to *any* server, as they are not stored on a per-server queue and do not maintain their server mappings at all (they only have their vbucket IDs)","accounts_in_message":[],"_revision_number":1},{"id":"f4d08eef1eafee1a3218be272c5d257069103765","author":{"_account_id":1000292,"name":"Mark Nunberg","email":"mark.nunberg@couchbase.com","username":"mnunberg","avatars":[{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2012-10-05 00:34:18.000000000","message":"Patch Set 1: Abandoned","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"62b63298c6705d3b18cfb483c93b79f686b78714","revisions":{"62b63298c6705d3b18cfb483c93b79f686b78714":{"kind":"REWORK","_number":1,"created":"2012-02-11 08:32:18.000000000","uploader":{"_account_id":1000292,"name":"Mark Nunberg","email":"mark.nunberg@couchbase.com","username":"mnunberg","avatars":[{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ea97d1987ed08d8e48e394afae24c122.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/77/13177/1","fetch":{"anonymous http":{"url":"https://review.couchbase.org/libcouchbase","ref":"refs/changes/77/13177/1","commands":{"Branch":"git fetch https://review.couchbase.org/libcouchbase refs/changes/77/13177/1 \u0026\u0026 git checkout -b change-13177 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/libcouchbase refs/changes/77/13177/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/libcouchbase refs/changes/77/13177/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/libcouchbase refs/changes/77/13177/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/libcouchbase refs/changes/77/13177/1","Reset To":"git fetch https://review.couchbase.org/libcouchbase refs/changes/77/13177/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"b2ad6871776dd75d1456cc68f3ce97fe7e866fc1","subject":"Don\u0027t request write event if there is no data to send"}],"author":{"name":"Mark Nunberg","email":"mnunberg@haskalah.org","date":"2012-02-11 08:30:28.000000000","tz":-480},"committer":{"name":"Mark Nunberg","email":"mnunberg@haskalah.org","date":"2012-02-11 08:30:28.000000000","tz":-480},"subject":"Proper enqueued retry handling (WIP)","message":"Proper enqueued retry handling (WIP)\n\nThis introduces an instance-level retry fifo queue with\nuser-configurable intervals and grace periods in between retries. This\nalso sets up a foundation for \u0027generic\u0027 and \u0027server-neutral\u0027 metadata\nabout commands.\n\nI have only checked to see that it compiles and passes all tests\ncurrently, but is far from completed. I don\u0027t even think it\u0027s parented\nto the right branch\n\nChange-Id: Id5ec01b8e6fd75e570a35f23fa61f6e12109479a\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"b2ad6871776dd75d1456cc68f3ce97fe7e866fc1","is_merged_in_target_branch":false,"change_id":"I8db7444967ace53150cecc758cc228cc49915bb9","change_number":13169,"patch_set_number":1,"change_status":"ABANDONED"}],"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
