)]}'
{"id":"couchbase-net-client~219679","triplet_id":"couchbase-net-client~master~Id8ca603b9de9cdfa81b03282597408a2e737659b","project":"couchbase-net-client","branch":"master","attention_set":{},"removed_from_attention_set":{"1003698":{"account":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"last_update":"2025-07-24 04:09:05.000000000","reason":"Change was submitted"},"1000530":{"account":{"_account_id":1000530,"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","username":"jmorris","avatars":[{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"last_update":"2025-07-24 04:08:59.000000000","reason":"removed on reply"},"1005037":{"account":{"_account_id":1005037,"name":"Emilien Bevierre","email":"emilien.bevierre@couchbase.com","username":"SecureCake","avatars":[{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"last_update":"2025-07-24 04:09:05.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"Id8ca603b9de9cdfa81b03282597408a2e737659b","subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","status":"MERGED","created":"2024-11-16 21:41:25.000000000","updated":"2025-07-24 04:09:05.000000000","submitted":"2025-07-24 04:09:05.000000000","submitter":{"_account_id":1000530,"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","username":"jmorris","avatars":[{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"total_comment_count":5,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"219679","meta_rev_id":"a330d52933727085cc37ec5602ce0c9bd6182e53","_number":219679,"virtual_id_number":219679,"owner":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.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":[{"value":0,"_account_id":1000530,"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","username":"jmorris","avatars":[{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2025-07-24 04:09:05.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":1005037,"name":"Emilien Bevierre","email":"emilien.bevierre@couchbase.com","username":"SecureCake","avatars":[{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.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":1000530,"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","username":"jmorris","avatars":[{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"all":[{"tag":"autogenerated:gerrit:merged","value":2,"date":"2025-07-24 04:09:05.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":1000530,"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","username":"jmorris","avatars":[{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"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":1005037,"name":"Emilien Bevierre","email":"emilien.bevierre@couchbase.com","username":"SecureCake","avatars":[{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.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":1000530,"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","username":"jmorris","avatars":[{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"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":1005037,"name":"Emilien Bevierre","email":"emilien.bevierre@couchbase.com","username":"SecureCake","avatars":[{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.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":1000530,"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","username":"jmorris","avatars":[{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"_account_id":1005037,"name":"Emilien Bevierre","email":"emilien.bevierre@couchbase.com","username":"SecureCake","avatars":[{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2024-11-16 21:41:32.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":"2024-11-16 21:53:27.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"},{"updated":"2024-11-17 13:49:11.000000000","updated_by":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"reviewer":{"_account_id":1005037,"name":"Emilien Bevierre","email":"emilien.bevierre@couchbase.com","username":"SecureCake","avatars":[{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"state":"REVIEWER"},{"updated":"2024-11-17 13:49:11.000000000","updated_by":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"reviewer":{"_account_id":1000530,"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","username":"jmorris","avatars":[{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"state":"REVIEWER"}],"messages":[{"id":"3462564e650c614193d7801ecc75422fea84857a","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2024-11-16 21:41:25.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"1175871e61f1589adca720558dda171795d71df3","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":"2024-11-16 21:41:32.000000000","message":"Patch Set 1:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5174/","accounts_in_message":[],"_revision_number":1},{"id":"6818f459028bf37d6bf725d7b900bf9974137165","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":"2024-11-16 21:53:27.000000000","message":"Patch Set 1: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5174/ : failed","accounts_in_message":[],"_revision_number":1},{"id":"ede93870c3e9c11fbd4585ebd3432aff5c3929b1","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2024-11-17 13:32:52.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":2},{"id":"6cbc388c42e8fad07e7c0a453662b052d422ac42","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":"2024-11-17 13:33:02.000000000","message":"Patch Set 2:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5175/","accounts_in_message":[],"_revision_number":2},{"id":"b59386bc4fcb022cc01c86e6862e0e3f1b7e8f3c","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":"2024-11-17 13:46:05.000000000","message":"Patch Set 2: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5175/ : success","accounts_in_message":[],"_revision_number":2},{"id":"cc5d9344d384ccd8b2faee11eaefb8bd6da73b2e","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2024-11-17 13:49:11.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"fbc412ac62d21b32d068d5ce8b9608ce1582bb33","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2024-12-23 13:53:55.000000000","message":"Uploaded 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":"b68b316eef00cc0240c634ef7b2974d00df6e421","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":"2024-12-23 13:54:05.000000000","message":"Patch Set 3:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5226/","accounts_in_message":[],"_revision_number":3},{"id":"1f60b440d383bb2075a728f292d02e5c373820e5","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":"2024-12-23 14:09:17.000000000","message":"Patch Set 3: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5226/ : success","accounts_in_message":[],"_revision_number":3},{"id":"2b6298b4b4eecf4af1bedde90349371c64c1b2b6","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-01-22 14:06:45.000000000","message":"Uploaded 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":"d684356a7fc62b50cefd44e79d67a14f7cc5293c","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":"2025-01-22 14:06:53.000000000","message":"Patch Set 4:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5234/","accounts_in_message":[],"_revision_number":4},{"id":"903b7906d1c375cffce488cf1f0e1582a4397199","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":"2025-01-22 14:20:44.000000000","message":"Patch Set 4: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5234/ : failed","accounts_in_message":[],"_revision_number":4},{"id":"53ecef0029e3a0b8e0deec680dd1ce438721c2bc","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-01-23 22:04:01.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":5},{"id":"277ad4d58167dc4abeadff49a6645af4222fbee5","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":"2025-01-23 22:04:11.000000000","message":"Patch Set 5:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5240/","accounts_in_message":[],"_revision_number":5},{"id":"d3dc9b527be2ed5cd0b2f40c75d94599d0cb5ee5","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":"2025-01-23 22:20:33.000000000","message":"Patch Set 5: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5240/ : success","accounts_in_message":[],"_revision_number":5},{"id":"8a7716fc74a9958180c7d0c9ce7a3c2a63bd0fa2","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-03-11 12:26:31.000000000","message":"Patch Set 6: Patch Set 5 was rebased\n\nOutdated Votes:\n* Verified+1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":6},{"id":"211f8433164453262ac133752b56a4160d6a0919","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":"2025-03-11 12:37:42.000000000","message":"Patch Set 6:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5331/","accounts_in_message":[],"_revision_number":6},{"id":"3de78f092002d10eabb8bf3b4a6c3dbe82e20bfc","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":"2025-03-11 12:51:21.000000000","message":"Patch Set 6: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5331/ : success","accounts_in_message":[],"_revision_number":6},{"id":"618c183ad5550c588fa9530ac75a65b43284cbe7","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-04-29 19:40:27.000000000","message":"Uploaded patch set 7: Patch Set 6 was rebased.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":7},{"id":"c964a19aa3882c94e7a79f59637ae653c2e867c9","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":"2025-04-29 20:09:56.000000000","message":"Patch Set 7:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5451/","accounts_in_message":[],"_revision_number":7},{"id":"cc16fe5e13e33295e91cfea0b9020bb33081717d","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":"2025-04-29 20:22:33.000000000","message":"Patch Set 7: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5451/ : failed","accounts_in_message":[],"_revision_number":7},{"id":"91a4fb72e1ea96c1a84ff1c4170f486b61f72e39","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":"2025-04-30 13:51:28.000000000","message":"Patch Set 7: -Verified\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5458/","accounts_in_message":[],"_revision_number":7},{"id":"f70c757e9af15c84ce2309843b7389bf30179f1b","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":"2025-04-30 14:02:42.000000000","message":"Patch Set 7: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5458/ : failed","accounts_in_message":[],"_revision_number":7},{"id":"64488521956fd34a94f6423784e318eef0d0c8db","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":"2025-04-30 15:32:59.000000000","message":"Patch Set 7: -Verified\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5463/","accounts_in_message":[],"_revision_number":7},{"id":"b2c55ccbbab44724e7ddefa9a828d54d9d918ca4","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":"2025-04-30 15:44:24.000000000","message":"Patch Set 7: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5463/ : failed","accounts_in_message":[],"_revision_number":7},{"id":"a20825a6c8b93e1ca31c2ff3c3b5db977c498567","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":"2025-04-30 19:57:57.000000000","message":"Patch Set 7: -Verified\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5471/","accounts_in_message":[],"_revision_number":7},{"id":"338babb052b1566aa132e755d6175cba30bc1062","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":"2025-04-30 20:10:53.000000000","message":"Patch Set 7: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5471/ : success","accounts_in_message":[],"_revision_number":7},{"id":"ce0ff05e4ddfd370a7d8ae996cab50e50ff9dd7b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"real_author":{"_account_id":1005037,"name":"Emilien Bevierre","email":"emilien.bevierre@couchbase.com","username":"SecureCake","avatars":[{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-05-01 10:19:07.000000000","message":"Patch Set 8: Patch Set 7 was rebased on behalf of \u003cGERRIT_ACCOUNT_1003698\u003e\n\nOutdated Votes:\n* Verified+1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"_revision_number":8},{"id":"26fc5a1e1a1e840be9ec03cb9cc3c05a11a1bbb4","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":"2025-05-01 10:19:16.000000000","message":"Patch Set 8:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5473/","accounts_in_message":[],"_revision_number":8},{"id":"82fc6eb190870d581acb9045208b6ad945674588","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":"2025-05-01 10:33:31.000000000","message":"Patch Set 8: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5473/ : success","accounts_in_message":[],"_revision_number":8},{"id":"871748f3a5b75d1c393428d6f225ccefb69cb331","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"real_author":{"_account_id":1005037,"name":"Emilien Bevierre","email":"emilien.bevierre@couchbase.com","username":"SecureCake","avatars":[{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-05-08 10:57:23.000000000","message":"Patch Set 9: Patch Set 8 was rebased on behalf of \u003cGERRIT_ACCOUNT_1003698\u003e\n\nOutdated Votes:\n* Verified+1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"_revision_number":9},{"id":"c821a6035edb0cfc64b8412f105fe5a59020ef43","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":"2025-05-08 11:04:13.000000000","message":"Patch Set 9:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5504/","accounts_in_message":[],"_revision_number":9},{"id":"da20f8024a1c9f3efe9a16ec74f859ca80ae575f","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":"2025-05-08 11:17:24.000000000","message":"Patch Set 9: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5504/ : success","accounts_in_message":[],"_revision_number":9},{"id":"e5d5fd1ae1b996edc89221015db60eb848df4692","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-05-12 12:26:49.000000000","message":"Patch Set 10: Patch Set 9 was rebased\n\nOutdated Votes:\n* Verified+1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":10},{"id":"4727b557c7190c59467d13df1f6ded9dec010c26","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":"2025-05-12 12:38:27.000000000","message":"Patch Set 10:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5537/","accounts_in_message":[],"_revision_number":10},{"id":"dcefce72a72b5e9f6685e8825477faf49ebce5ec","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":"2025-05-12 12:49:49.000000000","message":"Patch Set 10: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5537/ : failed","accounts_in_message":[],"_revision_number":10},{"id":"87972c12c5a32d93daecf53fe114d36ef2a6a56b","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":"2025-05-12 15:47:22.000000000","message":"Patch Set 10: -Verified\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5539/","accounts_in_message":[],"_revision_number":10},{"id":"e8bda40afedad913d128c30ccaa37eb71d0c19fc","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":"2025-05-12 15:58:13.000000000","message":"Patch Set 10: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5539/ : failed","accounts_in_message":[],"_revision_number":10},{"id":"02e26b61808c4dfc037771d803c08967214d8836","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":"2025-05-12 16:08:20.000000000","message":"Patch Set 10: -Verified\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5540/","accounts_in_message":[],"_revision_number":10},{"id":"ef53bdf93fd89cd04c0b879b6d0b16e48946783d","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":"2025-05-12 16:20:04.000000000","message":"Patch Set 10: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5540/ : failed","accounts_in_message":[],"_revision_number":10},{"id":"785785280ec959886520ec9e21595a151fa526a7","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":"2025-05-15 11:17:38.000000000","message":"Patch Set 10: -Verified\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5544/","accounts_in_message":[],"_revision_number":10},{"id":"bbb8e7de97135bef76dc09b30d846e68e3898374","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":"2025-05-15 11:31:15.000000000","message":"Patch Set 10: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5544/ : success","accounts_in_message":[],"_revision_number":10},{"id":"9baebeafd9cea9479f7c32eb662f7498259b1753","author":{"_account_id":1005037,"name":"Emilien Bevierre","email":"emilien.bevierre@couchbase.com","username":"SecureCake","avatars":[{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-05-15 13:55:43.000000000","message":"Patch Set 10: Code-Review+2\n\n(2 comments)","accounts_in_message":[],"_revision_number":10},{"id":"9f905153d09d0cfec72963330473e39bfb5d39c3","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-05-15 15:09:54.000000000","message":"Uploaded patch set 11.\n\nOutdated Votes:\n* Code-Review+2 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE OR changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":11},{"id":"cc9069b26ac2c3cf745b3a487ee651353bd8b4b3","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":"2025-05-15 15:10:04.000000000","message":"Patch Set 11:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5545/","accounts_in_message":[],"_revision_number":11},{"id":"711f2f2e24933ae26494f3f54e25dd2258e38137","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-05-15 15:12:46.000000000","message":"Patch Set 11:\n\n(2 comments)","accounts_in_message":[],"_revision_number":11},{"id":"6815501b9eeb2a2e747ab0f2f7e28d3411fe6732","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":"2025-05-15 15:22:11.000000000","message":"Patch Set 11: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5545/ : failed","accounts_in_message":[],"_revision_number":11},{"id":"5d3c640f183b004607c1ea35c4982fcfb2ee267c","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":"2025-05-15 15:27:07.000000000","message":"Patch Set 11: -Verified\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5546/","accounts_in_message":[],"_revision_number":11},{"id":"cfbaddddf064f303ba5bd8939a9f2cdecbebec53","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":"2025-05-15 15:39:56.000000000","message":"Patch Set 11: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5546/ : success","accounts_in_message":[],"_revision_number":11},{"id":"9c8c46248fa52d4469d4f5474829cd12ab5b6e22","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"real_author":{"_account_id":1005037,"name":"Emilien Bevierre","email":"emilien.bevierre@couchbase.com","username":"SecureCake","avatars":[{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-05-21 10:35:43.000000000","message":"Patch Set 12: Patch Set 11 was rebased on behalf of \u003cGERRIT_ACCOUNT_1003698\u003e\n\nOutdated Votes:\n* Verified+1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"_revision_number":12},{"id":"4eb00cca5701a1deb3e0b0e70d0ed64871762019","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":"2025-05-21 11:08:41.000000000","message":"Patch Set 12:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5555/","accounts_in_message":[],"_revision_number":12},{"id":"a1d61321313fa7c083e073ea4078b5e6b6d4229c","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":"2025-05-21 11:25:08.000000000","message":"Patch Set 12: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5555/ : failed","accounts_in_message":[],"_revision_number":12},{"id":"64459c1f3a72b51fba83437de3f6d0cdd7f56fa8","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-07-01 19:24:27.000000000","message":"Uploaded patch set 13.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":13},{"id":"3360e9a78f6d7513f9ddc78abe9587451debddba","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":"2025-07-01 19:24:37.000000000","message":"Patch Set 13:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5582/","accounts_in_message":[],"_revision_number":13},{"id":"c855e78602c0f9b69d98e3fe7a0089030f85e221","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":"2025-07-01 19:39:53.000000000","message":"Patch Set 13: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5582/ : success","accounts_in_message":[],"_revision_number":13},{"id":"a597f1cb6f897e05a7e4ed44895c2ab42e90c766","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"real_author":{"_account_id":1000530,"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","username":"jmorris","avatars":[{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-07-24 00:42:32.000000000","message":"Patch Set 14: Patch Set 13 was rebased on behalf of \u003cGERRIT_ACCOUNT_1003698\u003e\n\nOutdated Votes:\n* Verified+1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"_revision_number":14},{"id":"b66dd9bc6b89703d6cceec49f21dd889b82c6e11","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":"2025-07-24 00:42:42.000000000","message":"Patch Set 14:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5608/","accounts_in_message":[],"_revision_number":14},{"id":"a349261a08ca883191c2403c16b306bc8a37f334","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":"2025-07-24 00:49:32.000000000","message":"Patch Set 14: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5608/ : failed","accounts_in_message":[],"_revision_number":14},{"id":"686e83156aa33a5b479d37555d1ee21b134ffd58","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-07-24 01:57:05.000000000","message":"Uploaded patch set 15.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":15},{"id":"b09182d0723d989bac355569550d8ef33e2ca67d","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":"2025-07-24 01:57:13.000000000","message":"Patch Set 15:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5609/","accounts_in_message":[],"_revision_number":15},{"id":"a88060ee5e1ee6e426b29ff449d7128518bfb81f","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":"2025-07-24 02:08:12.000000000","message":"Patch Set 15: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5609/ : failed","accounts_in_message":[],"_revision_number":15},{"id":"24f2d3561e47928ae0a5fb7a8bbbd23a8812a2b6","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":"2025-07-24 02:53:27.000000000","message":"Patch Set 15: -Verified\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5610/","accounts_in_message":[],"_revision_number":15},{"id":"fc67c27df1ebdadd0c2c5f68b51417c041b97bd1","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":"2025-07-24 03:05:17.000000000","message":"Patch Set 15: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5610/ : failed","accounts_in_message":[],"_revision_number":15},{"id":"1a35307796f0f058717dda61d6b1d81bc8521071","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":"2025-07-24 03:38:31.000000000","message":"Patch Set 15: -Verified\n\nBuild Started https://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5611/","accounts_in_message":[],"_revision_number":15},{"id":"fac6badcd39249c41289e1ba4544b16340bc7972","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":"2025-07-24 03:58:41.000000000","message":"Patch Set 15: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/dotnet/job/sdk/job/couchbase-net-client-cv-trigger/5611/ : success","accounts_in_message":[],"_revision_number":15},{"id":"5585e502200440bc8e00a2953f98328385c21b97","author":{"_account_id":1000530,"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","username":"jmorris","avatars":[{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-07-24 04:08:59.000000000","message":"Patch Set 15: Code-Review+2","accounts_in_message":[],"_revision_number":15},{"id":"a330d52933727085cc37ec5602ce0c9bd6182e53","tag":"autogenerated:gerrit:merged","author":{"_account_id":1000530,"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","username":"jmorris","avatars":[{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2025-07-24 04:09:05.000000000","message":"Change has been successfully cherry-picked as 9fa20b9ea5f7366dfcbea6f2d042f64d97e25574","accounts_in_message":[],"_revision_number":16}],"current_revision_number":16,"current_revision":"9fa20b9ea5f7366dfcbea6f2d042f64d97e25574","revisions":{"04184eb58ecf0ecf3c7afd5f9d0240f2f9d35486":{"kind":"REWORK","_number":1,"created":"2024-11-16 21:41:25.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/1","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/1","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/1 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/1","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"cded15b7ab406a9e1cf2aa6f9f9ac72cb08c83f2","subject":"NCBC-3845: ReadOnlySequence and IBufferWriter support in ITypeSerializer"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-16 21:39:44.000000000","tz":-300},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"cded15b7ab406a9e1cf2aa6f9f9ac72cb08c83f2","is_merged_in_target_branch":true,"change_id":"I927d951d04659dc44824174a9c8cb7ff259ded37","change_number":219023,"patch_set_number":4,"change_status":"MERGED"}],"branch":"refs/heads/master"},"36a8ef81393edb88a3d33a606a4ad1af4502ad50":{"kind":"REWORK","_number":2,"created":"2024-11-17 13:32:52.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/2","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/2","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/2 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/2","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"cded15b7ab406a9e1cf2aa6f9f9ac72cb08c83f2","subject":"NCBC-3845: ReadOnlySequence and IBufferWriter support in ITypeSerializer"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-17 13:32:46.000000000","tz":-300},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"cded15b7ab406a9e1cf2aa6f9f9ac72cb08c83f2","is_merged_in_target_branch":true,"change_id":"I927d951d04659dc44824174a9c8cb7ff259ded37","change_number":219023,"patch_set_number":4,"change_status":"MERGED"}],"branch":"refs/heads/master"},"47e2bf1d7e1a1ac81210cc83a0fa2a087208251b":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2024-12-23 13:53:55.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/3","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/3","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/3 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/3","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"02b2cd629ebfe4be5beb04a314a7890848c2395c","subject":"NCBC-3920: Rename Integrated.Transactions to Client.Transactions"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-12-23 13:53:52.000000000","tz":-300},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"02b2cd629ebfe4be5beb04a314a7890848c2395c","is_merged_in_target_branch":true,"change_id":"I7e71132379bf058a05651ccb8a6ae83620b64261","change_number":220856,"patch_set_number":4,"change_status":"MERGED"}],"branch":"refs/heads/master"},"7576459cc30c648b5720a4ea98b26948cfd83ad7":{"kind":"TRIVIAL_REBASE","_number":4,"created":"2025-01-22 14:06:45.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/4","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/4","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/4 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/4","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"d6c4e08fa152e275a9e07ecd11869c073e778e72","subject":"NCBC-3919: TXNN - Final refactor to match initial commit"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2025-01-22 14:06:40.000000000","tz":-300},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"d6c4e08fa152e275a9e07ecd11869c073e778e72","is_merged_in_target_branch":true,"change_id":"I59a2bb75ec58fc1920a4813eeca086d51fe65a65","change_number":220542,"patch_set_number":4,"change_status":"MERGED"}],"branch":"refs/heads/master"},"a86acc8e21227e13a036847ff9d2e349ec76a592":{"kind":"REWORK","_number":5,"created":"2025-01-23 22:04:01.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/5","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/5","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/5 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/5","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/5 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"d6c4e08fa152e275a9e07ecd11869c073e778e72","subject":"NCBC-3919: TXNN - Final refactor to match initial commit"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2025-01-23 22:03:55.000000000","tz":-300},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"d6c4e08fa152e275a9e07ecd11869c073e778e72","is_merged_in_target_branch":true,"change_id":"I59a2bb75ec58fc1920a4813eeca086d51fe65a65","change_number":220542,"patch_set_number":4,"change_status":"MERGED"}],"branch":"refs/heads/master"},"7989da62418a783b007d2a8e4dbf505deaf9864c":{"kind":"TRIVIAL_REBASE","_number":6,"created":"2025-03-11 12:26:31.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/6","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/6","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/6 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/6","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/6 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"15db053fa27eb70d486796cab9e47e206a385d00","subject":"NCBC-3971: Update assembly version in Directory.Build.Props"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2025-03-11 12:26:31.000000000","tz":0},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"15db053fa27eb70d486796cab9e47e206a385d00","is_merged_in_target_branch":true,"change_id":"Idb5c20437b02381447d68e80411f74edeff4e58d","change_number":224530,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/master","description":"Rebase"},"00398b48ea2482cc956ed094236f73a583f7c6ac":{"kind":"TRIVIAL_REBASE","_number":7,"created":"2025-04-29 19:40:27.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/7","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/7","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/7 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/7","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/7 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"6a40a72cd719be412430d3b24f8fac66dfdf4502","subject":"NCBC-3998: Implement Zone Aware Read from Replica (Non-Transactions)"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2025-04-29 19:34:04.000000000","tz":-240},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"6a40a72cd719be412430d3b24f8fac66dfdf4502","is_merged_in_target_branch":true,"change_id":"I5bf8b10aabd2819f78d6073659d4e43236304ee8","change_number":225201,"patch_set_number":15,"change_status":"MERGED"}],"branch":"refs/heads/master"},"c9e721df15fa74fff812083959afa14e306a2df2":{"kind":"TRIVIAL_REBASE","_number":8,"created":"2025-05-01 10:19:07.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"real_uploader":{"_account_id":1005037,"name":"Emilien Bevierre","email":"emilien.bevierre@couchbase.com","username":"SecureCake","avatars":[{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/8","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/8","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/8 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/8","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/8 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"07312d003744ed8ce78aab197e9e2fa500173bbb","subject":"NCBC-3846: Seal internal classes for devirtualization perf gains"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2025-05-01 10:19:07.000000000","tz":0},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"07312d003744ed8ce78aab197e9e2fa500173bbb","is_merged_in_target_branch":true,"change_id":"I683214564283a33f04b4f03d25675e4e675131b6","change_number":214947,"patch_set_number":8,"change_status":"MERGED"}],"branch":"refs/heads/master","description":"Rebase"},"fa97f38ad3cc947f7cca861406324ab34bf0981a":{"kind":"TRIVIAL_REBASE","_number":9,"created":"2025-05-08 10:57:23.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"real_uploader":{"_account_id":1005037,"name":"Emilien Bevierre","email":"emilien.bevierre@couchbase.com","username":"SecureCake","avatars":[{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/9","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/9","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/9 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/9","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/9 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"adb124b8b5f18bac04ee241dfc4e258acede04d2","subject":"NCBC-3861: Improve CancellationTokenPairSource performance"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2025-05-08 10:57:23.000000000","tz":0},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"adb124b8b5f18bac04ee241dfc4e258acede04d2","is_merged_in_target_branch":true,"change_id":"I8dd65b026fc28015855922ae81bbaa67a88e4e39","change_number":215752,"patch_set_number":12,"change_status":"MERGED"}],"branch":"refs/heads/master","description":"Rebase"},"462aafcb77f7da9197bf3eefabc48d887b853a0d":{"kind":"TRIVIAL_REBASE","_number":10,"created":"2025-05-12 12:26:49.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/10","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/10","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/10 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/10 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/10 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/10 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/10","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/10 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"2696c93a55d1c64b8dd07c9130223f431d6dd47f","subject":"NCBC-3896: SDK Telemetry Collection in Server"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2025-05-12 12:26:49.000000000","tz":0},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"2696c93a55d1c64b8dd07c9130223f431d6dd47f","is_merged_in_target_branch":true,"change_id":"I5d8d389eb23259531e078c83a64f038649187c69","change_number":222591,"patch_set_number":68,"change_status":"MERGED"}],"branch":"refs/heads/master","description":"Rebase"},"06b241627f9399b2bebee815dd8f08d1d12d8d15":{"kind":"REWORK","_number":11,"created":"2025-05-15 15:09:54.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/11","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/11","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/11 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/11 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/11 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/11 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/11","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/11 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"2696c93a55d1c64b8dd07c9130223f431d6dd47f","subject":"NCBC-3896: SDK Telemetry Collection in Server"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2025-05-15 15:09:40.000000000","tz":-240},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"2696c93a55d1c64b8dd07c9130223f431d6dd47f","is_merged_in_target_branch":true,"change_id":"I5d8d389eb23259531e078c83a64f038649187c69","change_number":222591,"patch_set_number":68,"change_status":"MERGED"}],"branch":"refs/heads/master"},"867178fbecfc4d9789d2b82759d863ac7f40f059":{"kind":"TRIVIAL_REBASE","_number":12,"created":"2025-05-21 10:35:43.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"real_uploader":{"_account_id":1005037,"name":"Emilien Bevierre","email":"emilien.bevierre@couchbase.com","username":"SecureCake","avatars":[{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1e3f0606531d9492a433378ebb72350.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/12","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/12","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/12 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/12 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/12 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/12 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/12","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/12 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"bd7a78b33b2c875addbbeadf53faf61888321e7b","subject":"NCBC-4018: Implement Binary Collection KV APIs"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2025-05-21 10:35:43.000000000","tz":0},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"bd7a78b33b2c875addbbeadf53faf61888321e7b","is_merged_in_target_branch":true,"change_id":"I629937368b972219a37d97e4e011d1cc1753de23","change_number":227547,"patch_set_number":6,"change_status":"MERGED"}],"branch":"refs/heads/master","description":"Rebase"},"f4c4c9ce9afac81e3ecb03fb8214b09e8830c5d6":{"kind":"REWORK","_number":13,"created":"2025-07-01 19:24:27.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/13","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/13","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/13 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/13 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/13 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/13 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/13","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/13 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"9c762beca933c13aab2c947f4f2ebb7a8258e083","subject":"NCBC-4039: Add JsonIgnore to public fields in BucketConfig"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2025-07-01 19:24:19.000000000","tz":-240},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"9c762beca933c13aab2c947f4f2ebb7a8258e083","is_merged_in_target_branch":true,"change_id":"I10a694585ebaf8834c2ee7e1715bc1ec1851c198","change_number":229588,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/master"},"32ae5eedce450acdcd4c5cc42674b87fb9ce12cb":{"kind":"TRIVIAL_REBASE","_number":14,"created":"2025-07-24 00:42:32.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"real_uploader":{"_account_id":1000530,"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","username":"jmorris","avatars":[{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/14","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/14","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/14 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/14 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/14 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/14 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/14","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/14 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"28491add03ed152ea3e9264c0e5535b0899adc70","subject":"NCBC-3848: Use bit blitting to improve perf reading response headers"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2025-07-24 00:42:32.000000000","tz":0},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"28491add03ed152ea3e9264c0e5535b0899adc70","is_merged_in_target_branch":true,"change_id":"I4218b2688ecd67499eabd579566e300c22b1cfcb","change_number":214952,"patch_set_number":15,"change_status":"MERGED"}],"branch":"refs/heads/master","description":"Rebase"},"ca70b49edb0ae5704ccbaeff97f3a24755def22d":{"kind":"REWORK","_number":15,"created":"2025-07-24 01:57:05.000000000","uploader":{"_account_id":1003698,"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","username":"brantburnett","avatars":[{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/12aa2d70cf0b92feeceb6dd7f81dd059.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/15","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/15","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/15 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/15 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/15 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/15 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/15","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/15 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"28491add03ed152ea3e9264c0e5535b0899adc70","subject":"NCBC-3848: Use bit blitting to improve perf reading response headers"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2025-07-24 01:57:00.000000000","tz":-240},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"28491add03ed152ea3e9264c0e5535b0899adc70","is_merged_in_target_branch":true,"change_id":"I4218b2688ecd67499eabd579566e300c22b1cfcb","change_number":214952,"patch_set_number":15,"change_status":"MERGED"}],"branch":"refs/heads/master"},"9fa20b9ea5f7366dfcbea6f2d042f64d97e25574":{"kind":"NO_CODE_CHANGE","_number":16,"created":"2025-07-24 04:09:05.000000000","uploader":{"_account_id":1000530,"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","username":"jmorris","avatars":[{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/79/219679/16","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-net-client","ref":"refs/changes/79/219679/16","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/16 \u0026\u0026 git checkout -b change-219679 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/16 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/16 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/16 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/16","Reset To":"git fetch https://review.couchbase.org/couchbase-net-client refs/changes/79/219679/16 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"28491add03ed152ea3e9264c0e5535b0899adc70","subject":"NCBC-3848: Use bit blitting to improve perf reading response headers"}],"author":{"name":"Brant Burnett","email":"bburnett@centeredgesoftware.com","date":"2024-11-15 21:40:15.000000000","tz":-300},"committer":{"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","date":"2025-07-24 04:09:05.000000000","tz":0},"subject":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e","message":"NCBC-3904: Improve OperationBuilder perf using IBufferWriter\u003cbyte\u003e\n\nMotivation\n----------\nUsing the `IBufferWriter\u003cT\u003e` pattern can significantly improve\nperformance, especially when using the System.Text.Json serializer, by\navoiding unnecessary intermediate buffers which add additional heap\nallocations and memory copies.\n\nModifications\n-------------\n- Refactor `OperationBuilder` to expose the `IBufferWriter\u003cbyte\u003e`\n  interface and to use backing buffers from the ArrayPool instead of a\n  backing `MemoryStream`\n- Update `RawJsonTranscoder` and `RawStringTranscoder` to write strings\n  directly to the `OperationBuilder` rather than an intermediate buffer\n  or a `StreamWriter` with intermediate buffers\n- When binary data is encoded using `RawBinaryTranscoder` or\n  `RawJsonTranscoder` on down-level runtimes, use `IBufferWriter\u003cbyte\u003e`\n  to write directly to the `OperationBuilder` rather than trying to\n  extract an array and possibly needing to use an intermediate buffer\n- When serializing JSON to `OperationBuilder` via `DefaultTranscoder` or\n  `JsonTranscoder`, if the serializer supports `IBufferedTypeSerializer`\n  and is not the Newtonsoft serializer then serialize via\n  `IBufferWriter\u003cbyte\u003e`.\n- Refactor all operations to build themselves using\n  `IBufferWriter\u003cbyte\u003e` methods instead of intermediate arrays or\n  stackallocs.\n- Refactor ramge scan and sampling scan to serialize themselves using\n  `IBufferWriter\u003cbyte\u003e`\n- Add a suite of unit tests for `OperationBuilder`\n- Add an option to enable Snappy compression when running integration\n  tests\n- Fixup benchmarks and add a `RawStringTranscoder` benchmark\n- Target the .NET 8 SDK via global.json to keep behaviors consistent\n  until we choose to use the .NET 9 SDK for builds\n\nResults\n-------\nGeneral performance improvements on key/value operations, most notably\nwhen using the System.Text.Json serializer, which offers approximately\na 20% reduction that generally scales with the size of the document.\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-UITXDI : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | DocSize | Mean         | Error      | StdDev     | Ratio | RatioSD | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |-------- |-------------:|-----------:|-----------:|------:|--------:|-----:|-------:|----------:|------------:|\n| Old    | 128     |    114.92 ns |   0.495 ns |   0.463 ns |  1.00 |    0.00 |    2 |      - |         - |          NA |\n| New    | 128     |     88.35 ns |   0.238 ns |   0.211 ns |  0.77 |    0.00 |    1 | 0.0095 |     120 B |          NA |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 10240   |  1,183.61 ns |   6.884 ns |   6.102 ns |  1.00 |    0.00 |    2 | 0.0114 |     152 B |        1.00 |\n| New    | 10240   |    956.63 ns |   6.595 ns |   6.169 ns |  0.81 |    0.01 |    1 | 0.0095 |     120 B |        0.79 |\n|        |         |              |            |            |       |         |      |        |           |             |\n| Old    | 131072  | 15,293.04 ns | 256.661 ns | 240.081 ns |  1.00 |    0.00 |    2 |      - |     376 B |        1.00 |\n| New    | 131072  | 12,716.78 ns | 106.768 ns |  94.647 ns |  0.83 |    0.02 |    1 |      - |     120 B |        0.32 |\n\nStrings passed via `RawStringTranscoder` or `RawJsonTranscoder` also see\nimprovements:\n\nBenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.2314)\nUnknown processor\n.NET SDK 9.0.100\n  [Host]     : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n  Job-AVGOBO : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2\n\nRuntime\u003d.NET 8.0  Toolchain\u003dnet8.0\n\n| Method | Length | Mean        | Error     | StdDev    | Ratio | Rank | Gen0   | Allocated | Alloc Ratio |\n|------- |------- |------------:|----------:|----------:|------:|-----:|-------:|----------:|------------:|\n| Old    | 128    |    46.01 ns |  0.120 ns |  0.112 ns |  1.00 |    2 |      - |         - |          NA |\n| New    | 128    |    27.09 ns |  0.273 ns |  0.255 ns |  0.59 |    1 |      - |         - |          NA |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 10240  |   809.19 ns |  5.271 ns |  4.930 ns |  1.00 |    2 | 0.4244 |    5328 B |        1.00 |\n| New    | 10240  |   477.67 ns |  1.698 ns |  1.589 ns |  0.59 |    1 |      - |         - |        0.00 |\n|        |        |             |           |           |       |      |        |           |             |\n| Old    | 131072 | 8,083.21 ns | 44.767 ns | 39.685 ns |  1.00 |    2 | 0.4120 |    5328 B |        1.00 |\n| New    | 131072 | 7,896.41 ns | 61.938 ns | 54.906 ns |  0.98 |    1 |      - |         - |        0.00 |\n\nAdditionally, the backing buffers for the OperationBuilder are returned\nto the ArrayPool when the builder is resized or the builder is disposed,\nunlike the previous case where the backing MemoryStream used arrays that\nwere simply garbage collected. This was mitigated somewhat before by the\npool of OperationBuilders, but the pool would still sometimes discard\nbuilders or create new builders that needed to scale up for larger\noperations.\n\nChange-Id: Id8ca603b9de9cdfa81b03282597408a2e737659b\nReviewed-on: https://review.couchbase.org/c/couchbase-net-client/+/219679\nReviewed-by: Jeffry Morris \u003cjeffrymorris@gmail.com\u003e\nTested-by: Build Bot \u003cbuild@couchbase.com\u003e\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"28491add03ed152ea3e9264c0e5535b0899adc70","is_merged_in_target_branch":true,"change_id":"I4218b2688ecd67499eabd579566e300c22b1cfcb","change_number":214952,"patch_set_number":15,"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":1000530,"name":"Jeffry Morris","email":"jeffrymorris@gmail.com","username":"jmorris","avatars":[{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d0b8b4cd259ea37fb99be261e6a720b0.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":[]}}]}
