)]}'
{"id":"libcouchbase~243718","triplet_id":"libcouchbase~master~I617bf964cf1329eaff989009a66a02dd57128fd2","project":"libcouchbase","branch":"master","attention_set":{},"removed_from_attention_set":{"1000201":{"account":{"_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}]},"last_update":"2026-05-11 23:33:48.000000000","reason":"removed on reply"}},"hashtags":[],"change_id":"I617bf964cf1329eaff989009a66a02dd57128fd2","subject":"CCBC-1685: add lcb_trim_memory() to release cached pool memory","status":"MERGED","created":"2026-04-21 00:01:11.000000000","updated":"2026-05-11 23:33:51.000000000","submitted":"2026-05-11 23:33:51.000000000","submitter":{"_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}]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"243718","meta_rev_id":"500830776b53b151ba04b5ead5d1ccfe0f942f8a","_number":243718,"virtual_id_number":243718,"owner":{"_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}]},"actions":{},"labels":{"Verified":{"approved":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:gerrit:merged","value":1,"date":"2026-05-11 23:33:51.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"value":0,"_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":{"approved":{"_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}]},"all":[{"value":0,"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"tag":"autogenerated:gerrit:merged","value":2,"date":"2026-05-11 23:33:51.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":[{"value":0,"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"value":0,"_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":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"_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}]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-04-21 00:01:19.000000000","updated_by":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2026-04-21 00:48:50.000000000","updated_by":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"1607fd736cc732eb6f5f93f23f66931246125e8c","tag":"autogenerated:gerrit:newPatchSet","author":{"_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}]},"date":"2026-04-21 00:01:11.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"cbe9398647143a3def6087adcc62c45444ecc4dc","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-04-21 00:01:19.000000000","message":"Patch Set 1:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/c-cpp/job/lcb/job/lcb-gerrit-trigger/2151/","accounts_in_message":[],"_revision_number":1},{"id":"0531cbbf63df870e9c090072afad0360d7ffc747","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-04-21 00:48:50.000000000","message":"Patch Set 1: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/c-cpp/job/lcb/job/lcb-gerrit-trigger/2151/ : FAILURE","accounts_in_message":[],"_revision_number":1},{"id":"267022237e202bf6e8242cf1886d4c082e6fc39c","tag":"autogenerated:gerrit:newPatchSet","author":{"_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}]},"date":"2026-04-24 21:28:12.000000000","message":"Patch Set 2: Patch Set 1 was rebased\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":2},{"id":"acf0e6bc09e25f31e66e2f20a0779aac2eba1bda","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-04-24 21:28:20.000000000","message":"Patch Set 2:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/c-cpp/job/lcb/job/lcb-gerrit-trigger/2200/","accounts_in_message":[],"_revision_number":2},{"id":"475b98b808fbde2edb2dcd1850b0bc6064acba36","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-04-24 23:44:40.000000000","message":"Patch Set 2: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/c-cpp/job/lcb/job/lcb-gerrit-trigger/2200/ : SUCCESS","accounts_in_message":[],"_revision_number":2},{"id":"a6fbfa81adf68f74b5c11e4108270fe8087c4535","tag":"autogenerated:gerrit:newPatchSet","author":{"_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}]},"date":"2026-04-29 01:46:33.000000000","message":"Patch Set 3: Patch Set 2 was rebased\n\nOutdated Votes:\n* Verified+1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":3},{"id":"03ae7e4f06a59071ffff60a61723bb4a7f3c82d9","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-04-29 01:46:41.000000000","message":"Patch Set 3:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/c-cpp/job/lcb/job/lcb-gerrit-trigger/2240/","accounts_in_message":[],"_revision_number":3},{"id":"21dea1cb472c9efda008923d1622d1523955d105","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-04-29 04:12:33.000000000","message":"Patch Set 3: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/c-cpp/job/lcb/job/lcb-gerrit-trigger/2240/ : SUCCESS","accounts_in_message":[],"_revision_number":3},{"id":"b3782a48e6b69a34ddb93d8a0a158d93aaf12f48","tag":"autogenerated:gerrit:newPatchSet","author":{"_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}]},"date":"2026-04-29 20:50:35.000000000","message":"Patch Set 4: Patch Set 3 was rebased\n\nOutdated Votes:\n* Verified+1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":4},{"id":"f87e0d51053e12aaac9f1ea66e589c19ba19081a","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-04-29 20:50:42.000000000","message":"Patch Set 4:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/c-cpp/job/lcb/job/lcb-gerrit-trigger/2244/","accounts_in_message":[],"_revision_number":4},{"id":"4b3d1a5dc87c00d15551692b7c83a0e55a0aebe3","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-04-29 23:27:29.000000000","message":"Patch Set 4: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/c-cpp/job/lcb/job/lcb-gerrit-trigger/2244/ : SUCCESS","accounts_in_message":[],"_revision_number":4},{"id":"6fb1725830a266464da6e6abb81afa0cf3ef8a38","author":{"_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}]},"date":"2026-05-11 23:33:48.000000000","message":"Patch Set 4: Code-Review+2","accounts_in_message":[],"_revision_number":4},{"id":"500830776b53b151ba04b5ead5d1ccfe0f942f8a","tag":"autogenerated:gerrit:merged","author":{"_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}]},"date":"2026-05-11 23:33:51.000000000","message":"Change has been successfully cherry-picked as 488e60cfa213a1d3b95aee2cb300cf5a9c544d01","accounts_in_message":[],"_revision_number":5}],"current_revision_number":5,"current_revision":"488e60cfa213a1d3b95aee2cb300cf5a9c544d01","revisions":{"06fda88833b56139f53930bf1866b6a6df5765c7":{"kind":"REWORK","_number":1,"created":"2026-04-21 00:01:11.000000000","uploader":{"_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}]},"ref":"refs/changes/18/243718/1","fetch":{"anonymous http":{"url":"https://review.couchbase.org/libcouchbase","ref":"refs/changes/18/243718/1","commands":{"Branch":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/1 \u0026\u0026 git checkout -b change-243718 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/libcouchbase refs/changes/18/243718/1","Reset To":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"c5480c4e3c66603326b703e95864c9bf87e6c151","subject":"Fix packet replacement and memory management in retry queue"}],"author":{"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","date":"2026-04-20 23:59:16.000000000","tz":-420},"committer":{"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","date":"2026-04-21 00:00:53.000000000","tz":-420},"subject":"CCBC-1685: add lcb_trim_memory() to release cached pool memory","message":"CCBC-1685: add lcb_trim_memory() to release cached pool memory\n\nlibcouchbase\u0027s per-pipeline netbuf allocator keeps released blocks on\nan available list so the fast path can re-reserve without going back\nto malloc.  A long-lived instance that occasionally bursts and then\nidles retains the peak working set of every pipeline until\nlcb_destroy() tears the instance down.  In memory-constrained\ncontainers (Kubernetes pods, tight cgroup limits) this plateau can\nbe mistaken for a leak and eventually trigger the OOM killer once\nmultiple instances are stacked in the same process.\n\nAdd lcb_trim_memory(lcb_INSTANCE *), marked @uncommitted.  Calling\nit walks every pipeline\u0027s nbmgr and reqpool and frees the backing\nbuffers of blocks on the avail list.  Active (in-flight) blocks are\nnot touched, connections are not closed, no network I/O is issued.\nIntended use is a periodic call from the application\u0027s own idle tick\nwhen RSS approaches a configured limit; on a busy instance the call\nis a no-op since freed blocks would be reallocated on the next\nburst.\n\nExposed as a dedicated API rather than an lcb_cntl because lcb_cntl\nis reachable through the connection string, which is the wrong\nsurface for an operational command.  A standalone function also\nleaves room to evolve the return type (e.g. bytes released) without\nanother ABI change.\n\nImplementation in two layers:\n\n- netbuf_shrink(nb_MGR *) in src/netbuf/netbuf.c walks each pool\u0027s\n  avail list, frees the backing buffer of every block, and either\n  frees the block header (standalone) or resets the cache-slot\n  header so alloc_new_block sees it as free.  Returns bytes\n  released.\n\n- lcb_trim_memory() in src/instance.cc iterates every pipeline owned\n  by the instance and calls netbuf_shrink on nbmgr and reqpool.\n\nRegression coverage in tests/basic/t_netbuf.cc:\n\n- shrinkFreesAvailBlocksAfterBurst drives 40 concurrent 20 KB\n  reservations, releases them in reverse order to populate avail,\n  and asserts that shrink empties the list and returns the expected\n  byte count.\n\n- shrinkLeavesActiveBlocksAlone holds a reservation, forces a\n  transient large allocation onto avail, calls shrink, and verifies\n  the held span\u0027s buffer is still readable/writable.\n\n- shrinkOnCleanPoolIsNoop calls shrink on a freshly-initialized\n  manager and on a cleanly-drained manager and asserts no state\n  damage.\n\nAll 96 nonio-tests continue to pass.  End-to-end smoke test against\na live cluster (1000 KV stores with 1.5 KB values): invoking\nlcb_trim_memory() followed by malloc_trim(0) releases ~340 kB of RSS\non a small run; the amount scales with the peak burst size.\n\nChange-Id: I617bf964cf1329eaff989009a66a02dd57128fd2\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"c5480c4e3c66603326b703e95864c9bf87e6c151","is_merged_in_target_branch":true,"change_id":"Ic5cbc9aac5c7d25d49dd8d7c9febfefc9377086e","change_number":239882,"patch_set_number":3,"change_status":"MERGED"}],"branch":"refs/heads/master"},"df020675e993bce1176bee839c33a113b5ef8ac5":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2026-04-24 21:28:12.000000000","uploader":{"_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}]},"ref":"refs/changes/18/243718/2","fetch":{"anonymous http":{"url":"https://review.couchbase.org/libcouchbase","ref":"refs/changes/18/243718/2","commands":{"Branch":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/2 \u0026\u0026 git checkout -b change-243718 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/libcouchbase refs/changes/18/243718/2","Reset To":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"c1e2b5acbe82b0d496070af4085b9e85285b59e3","subject":"CCBC-1688: tracing: copy host/port strings in add_host_and_port to avoid UAF"}],"author":{"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","date":"2026-04-20 23:59:16.000000000","tz":-420},"committer":{"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","date":"2026-04-24 21:28:12.000000000","tz":0},"subject":"CCBC-1685: add lcb_trim_memory() to release cached pool memory","message":"CCBC-1685: add lcb_trim_memory() to release cached pool memory\n\nlibcouchbase\u0027s per-pipeline netbuf allocator keeps released blocks on\nan available list so the fast path can re-reserve without going back\nto malloc.  A long-lived instance that occasionally bursts and then\nidles retains the peak working set of every pipeline until\nlcb_destroy() tears the instance down.  In memory-constrained\ncontainers (Kubernetes pods, tight cgroup limits) this plateau can\nbe mistaken for a leak and eventually trigger the OOM killer once\nmultiple instances are stacked in the same process.\n\nAdd lcb_trim_memory(lcb_INSTANCE *), marked @uncommitted.  Calling\nit walks every pipeline\u0027s nbmgr and reqpool and frees the backing\nbuffers of blocks on the avail list.  Active (in-flight) blocks are\nnot touched, connections are not closed, no network I/O is issued.\nIntended use is a periodic call from the application\u0027s own idle tick\nwhen RSS approaches a configured limit; on a busy instance the call\nis a no-op since freed blocks would be reallocated on the next\nburst.\n\nExposed as a dedicated API rather than an lcb_cntl because lcb_cntl\nis reachable through the connection string, which is the wrong\nsurface for an operational command.  A standalone function also\nleaves room to evolve the return type (e.g. bytes released) without\nanother ABI change.\n\nImplementation in two layers:\n\n- netbuf_shrink(nb_MGR *) in src/netbuf/netbuf.c walks each pool\u0027s\n  avail list, frees the backing buffer of every block, and either\n  frees the block header (standalone) or resets the cache-slot\n  header so alloc_new_block sees it as free.  Returns bytes\n  released.\n\n- lcb_trim_memory() in src/instance.cc iterates every pipeline owned\n  by the instance and calls netbuf_shrink on nbmgr and reqpool.\n\nRegression coverage in tests/basic/t_netbuf.cc:\n\n- shrinkFreesAvailBlocksAfterBurst drives 40 concurrent 20 KB\n  reservations, releases them in reverse order to populate avail,\n  and asserts that shrink empties the list and returns the expected\n  byte count.\n\n- shrinkLeavesActiveBlocksAlone holds a reservation, forces a\n  transient large allocation onto avail, calls shrink, and verifies\n  the held span\u0027s buffer is still readable/writable.\n\n- shrinkOnCleanPoolIsNoop calls shrink on a freshly-initialized\n  manager and on a cleanly-drained manager and asserts no state\n  damage.\n\nAll 96 nonio-tests continue to pass.  End-to-end smoke test against\na live cluster (1000 KV stores with 1.5 KB values): invoking\nlcb_trim_memory() followed by malloc_trim(0) releases ~340 kB of RSS\non a small run; the amount scales with the peak burst size.\n\nChange-Id: I617bf964cf1329eaff989009a66a02dd57128fd2\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"c1e2b5acbe82b0d496070af4085b9e85285b59e3","is_merged_in_target_branch":true,"change_id":"I6ce6ddb69b39d3234eced2e4674ed575c53acf0c","change_number":243963,"patch_set_number":5,"change_status":"MERGED"}],"branch":"refs/heads/master","description":"Rebase"},"21a5f7ba75bfc5b39f88a2aa005a875b44022218":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2026-04-29 01:46:33.000000000","uploader":{"_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}]},"ref":"refs/changes/18/243718/3","fetch":{"anonymous http":{"url":"https://review.couchbase.org/libcouchbase","ref":"refs/changes/18/243718/3","commands":{"Branch":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/3 \u0026\u0026 git checkout -b change-243718 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/libcouchbase refs/changes/18/243718/3","Reset To":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"69ea15927c7bfcf1733d7f291561dbe09e02ab23","subject":"CCBC-1678: deprecate the views API in public headers"}],"author":{"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","date":"2026-04-20 23:59:16.000000000","tz":-420},"committer":{"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","date":"2026-04-29 01:46:33.000000000","tz":0},"subject":"CCBC-1685: add lcb_trim_memory() to release cached pool memory","message":"CCBC-1685: add lcb_trim_memory() to release cached pool memory\n\nlibcouchbase\u0027s per-pipeline netbuf allocator keeps released blocks on\nan available list so the fast path can re-reserve without going back\nto malloc.  A long-lived instance that occasionally bursts and then\nidles retains the peak working set of every pipeline until\nlcb_destroy() tears the instance down.  In memory-constrained\ncontainers (Kubernetes pods, tight cgroup limits) this plateau can\nbe mistaken for a leak and eventually trigger the OOM killer once\nmultiple instances are stacked in the same process.\n\nAdd lcb_trim_memory(lcb_INSTANCE *), marked @uncommitted.  Calling\nit walks every pipeline\u0027s nbmgr and reqpool and frees the backing\nbuffers of blocks on the avail list.  Active (in-flight) blocks are\nnot touched, connections are not closed, no network I/O is issued.\nIntended use is a periodic call from the application\u0027s own idle tick\nwhen RSS approaches a configured limit; on a busy instance the call\nis a no-op since freed blocks would be reallocated on the next\nburst.\n\nExposed as a dedicated API rather than an lcb_cntl because lcb_cntl\nis reachable through the connection string, which is the wrong\nsurface for an operational command.  A standalone function also\nleaves room to evolve the return type (e.g. bytes released) without\nanother ABI change.\n\nImplementation in two layers:\n\n- netbuf_shrink(nb_MGR *) in src/netbuf/netbuf.c walks each pool\u0027s\n  avail list, frees the backing buffer of every block, and either\n  frees the block header (standalone) or resets the cache-slot\n  header so alloc_new_block sees it as free.  Returns bytes\n  released.\n\n- lcb_trim_memory() in src/instance.cc iterates every pipeline owned\n  by the instance and calls netbuf_shrink on nbmgr and reqpool.\n\nRegression coverage in tests/basic/t_netbuf.cc:\n\n- shrinkFreesAvailBlocksAfterBurst drives 40 concurrent 20 KB\n  reservations, releases them in reverse order to populate avail,\n  and asserts that shrink empties the list and returns the expected\n  byte count.\n\n- shrinkLeavesActiveBlocksAlone holds a reservation, forces a\n  transient large allocation onto avail, calls shrink, and verifies\n  the held span\u0027s buffer is still readable/writable.\n\n- shrinkOnCleanPoolIsNoop calls shrink on a freshly-initialized\n  manager and on a cleanly-drained manager and asserts no state\n  damage.\n\nAll 96 nonio-tests continue to pass.  End-to-end smoke test against\na live cluster (1000 KV stores with 1.5 KB values): invoking\nlcb_trim_memory() followed by malloc_trim(0) releases ~340 kB of RSS\non a small run; the amount scales with the peak burst size.\n\nChange-Id: I617bf964cf1329eaff989009a66a02dd57128fd2\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"69ea15927c7bfcf1733d7f291561dbe09e02ab23","is_merged_in_target_branch":true,"change_id":"Ib93bcced61a7ed21a5995ec579ca3e886df50fea","change_number":244123,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/master","description":"Rebase"},"3beaa598f9e00ddb2a61a4c637a090d8eaf992fd":{"kind":"TRIVIAL_REBASE","_number":4,"created":"2026-04-29 20:50:35.000000000","uploader":{"_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}]},"ref":"refs/changes/18/243718/4","fetch":{"anonymous http":{"url":"https://review.couchbase.org/libcouchbase","ref":"refs/changes/18/243718/4","commands":{"Branch":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/4 \u0026\u0026 git checkout -b change-243718 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/libcouchbase refs/changes/18/243718/4","Reset To":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"525535aff23f2e77a36cdbbe53826c5f704962e1","subject":"CCBC-1695: libuv + TLS: fix instance teardown deadlock and SIGABRT"}],"author":{"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","date":"2026-04-20 23:59:16.000000000","tz":-420},"committer":{"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","date":"2026-04-29 20:50:35.000000000","tz":0},"subject":"CCBC-1685: add lcb_trim_memory() to release cached pool memory","message":"CCBC-1685: add lcb_trim_memory() to release cached pool memory\n\nlibcouchbase\u0027s per-pipeline netbuf allocator keeps released blocks on\nan available list so the fast path can re-reserve without going back\nto malloc.  A long-lived instance that occasionally bursts and then\nidles retains the peak working set of every pipeline until\nlcb_destroy() tears the instance down.  In memory-constrained\ncontainers (Kubernetes pods, tight cgroup limits) this plateau can\nbe mistaken for a leak and eventually trigger the OOM killer once\nmultiple instances are stacked in the same process.\n\nAdd lcb_trim_memory(lcb_INSTANCE *), marked @uncommitted.  Calling\nit walks every pipeline\u0027s nbmgr and reqpool and frees the backing\nbuffers of blocks on the avail list.  Active (in-flight) blocks are\nnot touched, connections are not closed, no network I/O is issued.\nIntended use is a periodic call from the application\u0027s own idle tick\nwhen RSS approaches a configured limit; on a busy instance the call\nis a no-op since freed blocks would be reallocated on the next\nburst.\n\nExposed as a dedicated API rather than an lcb_cntl because lcb_cntl\nis reachable through the connection string, which is the wrong\nsurface for an operational command.  A standalone function also\nleaves room to evolve the return type (e.g. bytes released) without\nanother ABI change.\n\nImplementation in two layers:\n\n- netbuf_shrink(nb_MGR *) in src/netbuf/netbuf.c walks each pool\u0027s\n  avail list, frees the backing buffer of every block, and either\n  frees the block header (standalone) or resets the cache-slot\n  header so alloc_new_block sees it as free.  Returns bytes\n  released.\n\n- lcb_trim_memory() in src/instance.cc iterates every pipeline owned\n  by the instance and calls netbuf_shrink on nbmgr and reqpool.\n\nRegression coverage in tests/basic/t_netbuf.cc:\n\n- shrinkFreesAvailBlocksAfterBurst drives 40 concurrent 20 KB\n  reservations, releases them in reverse order to populate avail,\n  and asserts that shrink empties the list and returns the expected\n  byte count.\n\n- shrinkLeavesActiveBlocksAlone holds a reservation, forces a\n  transient large allocation onto avail, calls shrink, and verifies\n  the held span\u0027s buffer is still readable/writable.\n\n- shrinkOnCleanPoolIsNoop calls shrink on a freshly-initialized\n  manager and on a cleanly-drained manager and asserts no state\n  damage.\n\nAll 96 nonio-tests continue to pass.  End-to-end smoke test against\na live cluster (1000 KV stores with 1.5 KB values): invoking\nlcb_trim_memory() followed by malloc_trim(0) releases ~340 kB of RSS\non a small run; the amount scales with the peak burst size.\n\nChange-Id: I617bf964cf1329eaff989009a66a02dd57128fd2\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"525535aff23f2e77a36cdbbe53826c5f704962e1","is_merged_in_target_branch":true,"change_id":"I2688ab5c23d7f31819859c99df4a0d624e146f5b","change_number":244242,"patch_set_number":3,"change_status":"MERGED"}],"branch":"refs/heads/master","description":"Rebase"},"488e60cfa213a1d3b95aee2cb300cf5a9c544d01":{"kind":"REWORK","_number":5,"created":"2026-05-11 23:33:51.000000000","uploader":{"_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}]},"ref":"refs/changes/18/243718/5","fetch":{"anonymous http":{"url":"https://review.couchbase.org/libcouchbase","ref":"refs/changes/18/243718/5","commands":{"Branch":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/5 \u0026\u0026 git checkout -b change-243718 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/libcouchbase refs/changes/18/243718/5","Reset To":"git fetch https://review.couchbase.org/libcouchbase refs/changes/18/243718/5 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"faf66a339124fdb6d00e07b094326d3239feb419","subject":"CCBC-1702: requeue ops when vbmap briefly has no master"}],"author":{"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","date":"2026-04-20 23:59:16.000000000","tz":-420},"committer":{"name":"Sergey Avseyev","email":"sergey.avseyev@gmail.com","date":"2026-05-11 23:33:51.000000000","tz":0},"subject":"CCBC-1685: add lcb_trim_memory() to release cached pool memory","message":"CCBC-1685: add lcb_trim_memory() to release cached pool memory\n\nlibcouchbase\u0027s per-pipeline netbuf allocator keeps released blocks on\nan available list so the fast path can re-reserve without going back\nto malloc.  A long-lived instance that occasionally bursts and then\nidles retains the peak working set of every pipeline until\nlcb_destroy() tears the instance down.  In memory-constrained\ncontainers (Kubernetes pods, tight cgroup limits) this plateau can\nbe mistaken for a leak and eventually trigger the OOM killer once\nmultiple instances are stacked in the same process.\n\nAdd lcb_trim_memory(lcb_INSTANCE *), marked @uncommitted.  Calling\nit walks every pipeline\u0027s nbmgr and reqpool and frees the backing\nbuffers of blocks on the avail list.  Active (in-flight) blocks are\nnot touched, connections are not closed, no network I/O is issued.\nIntended use is a periodic call from the application\u0027s own idle tick\nwhen RSS approaches a configured limit; on a busy instance the call\nis a no-op since freed blocks would be reallocated on the next\nburst.\n\nExposed as a dedicated API rather than an lcb_cntl because lcb_cntl\nis reachable through the connection string, which is the wrong\nsurface for an operational command.  A standalone function also\nleaves room to evolve the return type (e.g. bytes released) without\nanother ABI change.\n\nImplementation in two layers:\n\n- netbuf_shrink(nb_MGR *) in src/netbuf/netbuf.c walks each pool\u0027s\n  avail list, frees the backing buffer of every block, and either\n  frees the block header (standalone) or resets the cache-slot\n  header so alloc_new_block sees it as free.  Returns bytes\n  released.\n\n- lcb_trim_memory() in src/instance.cc iterates every pipeline owned\n  by the instance and calls netbuf_shrink on nbmgr and reqpool.\n\nRegression coverage in tests/basic/t_netbuf.cc:\n\n- shrinkFreesAvailBlocksAfterBurst drives 40 concurrent 20 KB\n  reservations, releases them in reverse order to populate avail,\n  and asserts that shrink empties the list and returns the expected\n  byte count.\n\n- shrinkLeavesActiveBlocksAlone holds a reservation, forces a\n  transient large allocation onto avail, calls shrink, and verifies\n  the held span\u0027s buffer is still readable/writable.\n\n- shrinkOnCleanPoolIsNoop calls shrink on a freshly-initialized\n  manager and on a cleanly-drained manager and asserts no state\n  damage.\n\nAll 96 nonio-tests continue to pass.  End-to-end smoke test against\na live cluster (1000 KV stores with 1.5 KB values): invoking\nlcb_trim_memory() followed by malloc_trim(0) releases ~340 kB of RSS\non a small run; the amount scales with the peak burst size.\n\nChange-Id: I617bf964cf1329eaff989009a66a02dd57128fd2\nReviewed-on: https://review.couchbase.org/c/libcouchbase/+/243718\nTested-by: Build Bot \u003cbuild@couchbase.com\u003e\nReviewed-by: Sergey Avseyev \u003csergey.avseyev@gmail.com\u003e\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"faf66a339124fdb6d00e07b094326d3239feb419","is_merged_in_target_branch":true,"change_id":"I83c8c95a1b279082cd750d8363664f14a78aa0c5","change_number":244745,"patch_set_number":4,"change_status":"MERGED"}],"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"OK","applied_by":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"OK","applied_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}]}},{"label":"Well-Formed","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dMAX -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX","-label:Verified\u003dMIN"],"failing_atoms":[]}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX","-label:Code-Review\u003dMIN"],"failing_atoms":[]}}]}
