)]}'
{"src/transactions/transactions.cxx":[{"author":{"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"8f562a0f77f241aa2e7fa3b0f78c96461c61516a","unresolved":true,"context_lines":[{"line_number":1467,"context_line":"            exc_type \u003d pycbc_txns::TxnExceptionType::TRANSACTION_EXPIRED;"},{"line_number":1468,"context_line":"            break;"},{"line_number":1469,"context_line":"        }"},{"line_number":1470,"context_line":"        auto message \u003d txn_external_exception_to_string(err-\u003ecause());"},{"line_number":1471,"context_line":"        pyObj_err \u003d create_python_exception(exc_type, message.c_str());"},{"line_number":1472,"context_line":"        if (nullptr \u003d\u003d pyObj_errback) {"},{"line_number":1473,"context_line":"          barrier-\u003eset_value(pyObj_err);"}],"source_content_type":"text/x-c++src","patch_set":2,"id":"b1b710d1_6589a959","line":1470,"updated":"2025-01-22 19:37:56.000000000","message":"Here should we be setting the `cause` (or is it the one called `inner_cause`?) attribute in the exception, which is also of type `Exception`, rather than using it as the error message?\n\nThe `err` should also have a `what()` method that should give the exception message the core is setting (as it extends `std::runtime_error`)","commit_id":"724af993ba3ee281ab71bb5a1aae2cdca553fe9d"},{"author":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"193fb3d1874ae57f53c262a5f14a7eb948715ad7","unresolved":true,"context_lines":[{"line_number":1467,"context_line":"            exc_type \u003d pycbc_txns::TxnExceptionType::TRANSACTION_EXPIRED;"},{"line_number":1468,"context_line":"            break;"},{"line_number":1469,"context_line":"        }"},{"line_number":1470,"context_line":"        auto message \u003d txn_external_exception_to_string(err-\u003ecause());"},{"line_number":1471,"context_line":"        pyObj_err \u003d create_python_exception(exc_type, message.c_str());"},{"line_number":1472,"context_line":"        if (nullptr \u003d\u003d pyObj_errback) {"},{"line_number":1473,"context_line":"          barrier-\u003eset_value(pyObj_err);"}],"source_content_type":"text/x-c++src","patch_set":2,"id":"c1436e0e_a043b757","line":1470,"in_reply_to":"b1b710d1_6589a959","updated":"2025-01-23 00:45:17.000000000","message":"Soooo, I was actually thinking (hoping) that we might be able remove the `inner_cause` handling from the bindings.\n\nIn this case, if the commit fails, we eat the exception and retry the txn lambda in Python land (see `TransactionLogic.run()`).\n\nIn the case where the txn lambda fails we raise a `TransactionFailed` and set the `inner_cause` in Python land (unless it is a `TransactionExpired`, then we simply raise the `TransactionExpired`).\n\nAdmittedly I still have not absorbed the txns spec in a way that it mostly stays in memory and exceptions seems particularly unclear. 😊  But, since the tests haven\u0027t changed (and all pass) I figure there is a degree of confidence we are not changing anything from an end user perspective.  Although I suppose the tests could maybe do a better job at drilling down the Exception chain...","commit_id":"724af993ba3ee281ab71bb5a1aae2cdca553fe9d"},{"author":{"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"39a362ba6f3892d70a598a32a1ac0afdb87a7924","unresolved":false,"context_lines":[{"line_number":1467,"context_line":"            exc_type \u003d pycbc_txns::TxnExceptionType::TRANSACTION_EXPIRED;"},{"line_number":1468,"context_line":"            break;"},{"line_number":1469,"context_line":"        }"},{"line_number":1470,"context_line":"        auto message \u003d txn_external_exception_to_string(err-\u003ecause());"},{"line_number":1471,"context_line":"        pyObj_err \u003d create_python_exception(exc_type, message.c_str());"},{"line_number":1472,"context_line":"        if (nullptr \u003d\u003d pyObj_errback) {"},{"line_number":1473,"context_line":"          barrier-\u003eset_value(pyObj_err);"}],"source_content_type":"text/x-c++src","patch_set":2,"id":"d8b24a89_8824ce6f","line":1470,"in_reply_to":"c1436e0e_a043b757","updated":"2025-01-23 17:33:51.000000000","message":"This makes sense, we can revisit this later","commit_id":"724af993ba3ee281ab71bb5a1aae2cdca553fe9d"}]}
