)]}'
{"couchbase/tests/eventingmgmt_t.py":[{"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":"f540cf7411ba2e7e56137dfa7ff781508c705cda","unresolved":true,"context_lines":[{"line_number":81,"context_line":"            \u0027test_resume_function_fail\u0027,"},{"line_number":82,"context_line":"            \u0027test_upsert_function_fail\u0027,"},{"line_number":83,"context_line":"        ]:"},{"line_number":84,"context_line":"            pytest.skip(\u0027MB-67773: Skip for 8.0+\u0027)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        cb_env.efm.upsert_function(cb_env.BASIC_FUNC)"},{"line_number":87,"context_line":"        yield"}],"source_content_type":"text/x-python","patch_set":2,"id":"0f6420d8_fbde1c5b","line":84,"updated":"2025-08-22 10:41:10.000000000","message":"I think it would be better to have different expectations for 8.0+ instead of skipping these tests, just to make sure the new behavior doesn\u0027t change unexpectedly.\n\nFor `test_deploy_function_fail` that would be expecting no exception, and for `test_pause_function_fail` and `test_resume_function_fail` expecting a `CouchbaseException`. I\u0027ve left a separate comment for `test_upsert_function_fail`.","commit_id":"4a3b09db2edd681409a37b1d41b4d41d38ce52de"},{"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":"c476d913cbf68be065b0689cccf854e57a144c91","unresolved":true,"context_lines":[{"line_number":81,"context_line":"            \u0027test_resume_function_fail\u0027,"},{"line_number":82,"context_line":"            \u0027test_upsert_function_fail\u0027,"},{"line_number":83,"context_line":"        ]:"},{"line_number":84,"context_line":"            pytest.skip(\u0027MB-67773: Skip for 8.0+\u0027)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        cb_env.efm.upsert_function(cb_env.BASIC_FUNC)"},{"line_number":87,"context_line":"        yield"}],"source_content_type":"text/x-python","patch_set":2,"id":"f86b3358_5e9b6967","line":84,"in_reply_to":"0f6420d8_fbde1c5b","updated":"2025-08-25 20:40:50.000000000","message":"Fair.  Although I think another fair counter argument is we probably put too much effort in to eventing function mgmt tests. 😄\n\nI updated the tests to not skip.  However, we don\u0027t get CouchbaseExceptions, instead we have InternalServerFailureExceptions (b/c that is what the C++ core gives us).  Quite possible a discussion around this is needed as an internal_server_failure is not ideal.  However, I don\u0027t think we have _any_ users of the eventing mgmt func management API.","commit_id":"4a3b09db2edd681409a37b1d41b4d41d38ce52de"},{"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":"231fc468d250feafe58b5eeb83d221ded3d23d6e","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            \u0027test_resume_function_fail\u0027,"},{"line_number":82,"context_line":"            \u0027test_upsert_function_fail\u0027,"},{"line_number":83,"context_line":"        ]:"},{"line_number":84,"context_line":"            pytest.skip(\u0027MB-67773: Skip for 8.0+\u0027)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        cb_env.efm.upsert_function(cb_env.BASIC_FUNC)"},{"line_number":87,"context_line":"        yield"}],"source_content_type":"text/x-python","patch_set":2,"id":"2cebcedf_9f4731f4","line":84,"in_reply_to":"f86b3358_5e9b6967","updated":"2025-08-26 08:56:07.000000000","message":"\u003e  Although I think another fair counter argument is we probably put too much effort in to eventing function mgmt tests\n\nThis is very true\n\n\u003e Quite possible a discussion around this is needed as an internal_server_failure is not ideal\n\nI agree, this is an issue we have with the C++ core in general, it\u0027s not specific to eventing. We don\u0027t currently have a way for the core to return something equivalent to `CouchbaseException`, so many operations return internal_server_failure if there is no more specific error which isn\u0027t always right.","commit_id":"4a3b09db2edd681409a37b1d41b4d41d38ce52de"},{"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":"f540cf7411ba2e7e56137dfa7ff781508c705cda","unresolved":true,"context_lines":[{"line_number":169,"context_line":"    @pytest.mark.usefixtures(\u0027create_eventing_function\u0027)"},{"line_number":170,"context_line":"    @pytest.mark.usefixtures(\u0027undeploy_and_drop_eventing_function\u0027)"},{"line_number":171,"context_line":"    def test_deploy_function_fail(self, cb_env):"},{"line_number":172,"context_line":"        if cb_env.server_version_short \u003e\u003d 8.0:"},{"line_number":173,"context_line":"            pytest.skip(\u0027MB-67773: Skip for 8.0+\u0027)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        with pytest.raises(EventingFunctionNotFoundException):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1c8c2c2c_d70bd95c","line":172,"updated":"2025-08-22 10:41:10.000000000","message":"Could this be done with the `ServerFeatures` enum instead?","commit_id":"4a3b09db2edd681409a37b1d41b4d41d38ce52de"},{"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":"c476d913cbf68be065b0689cccf854e57a144c91","unresolved":true,"context_lines":[{"line_number":169,"context_line":"    @pytest.mark.usefixtures(\u0027create_eventing_function\u0027)"},{"line_number":170,"context_line":"    @pytest.mark.usefixtures(\u0027undeploy_and_drop_eventing_function\u0027)"},{"line_number":171,"context_line":"    def test_deploy_function_fail(self, cb_env):"},{"line_number":172,"context_line":"        if cb_env.server_version_short \u003e\u003d 8.0:"},{"line_number":173,"context_line":"            pytest.skip(\u0027MB-67773: Skip for 8.0+\u0027)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        with pytest.raises(EventingFunctionNotFoundException):"}],"source_content_type":"text/x-python","patch_set":2,"id":"e724079f_b1dc4368","line":172,"in_reply_to":"1c8c2c2c_d70bd95c","updated":"2025-08-25 20:40:50.000000000","message":"I think w/ the updates keying off of \u003e\u003d 8.0 is fine until the server team decides to make other changes.","commit_id":"4a3b09db2edd681409a37b1d41b4d41d38ce52de"},{"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":"231fc468d250feafe58b5eeb83d221ded3d23d6e","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    @pytest.mark.usefixtures(\u0027create_eventing_function\u0027)"},{"line_number":170,"context_line":"    @pytest.mark.usefixtures(\u0027undeploy_and_drop_eventing_function\u0027)"},{"line_number":171,"context_line":"    def test_deploy_function_fail(self, cb_env):"},{"line_number":172,"context_line":"        if cb_env.server_version_short \u003e\u003d 8.0:"},{"line_number":173,"context_line":"            pytest.skip(\u0027MB-67773: Skip for 8.0+\u0027)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        with pytest.raises(EventingFunctionNotFoundException):"}],"source_content_type":"text/x-python","patch_set":2,"id":"808ee8e9_9b32f46e","line":172,"in_reply_to":"e724079f_b1dc4368","updated":"2025-08-26 08:56:07.000000000","message":"Acknowledged","commit_id":"4a3b09db2edd681409a37b1d41b4d41d38ce52de"},{"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":"f540cf7411ba2e7e56137dfa7ff781508c705cda","unresolved":true,"context_lines":[{"line_number":473,"context_line":"            \u0027beer-sample\u0027, \"test-scope\", \"test-collection\""},{"line_number":474,"context_line":"        )"},{"line_number":475,"context_line":"        with pytest.raises(EventingFunctionCollectionNotFoundException):"},{"line_number":476,"context_line":"            cb_env.efm.upsert_function(local_func)"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    @pytest.mark.usefixtures(\u0027drop_eventing_functions\u0027)"},{"line_number":479,"context_line":"    def test_url_bindings(self, cb_env):"}],"source_content_type":"text/x-python","patch_set":2,"id":"d6f56e53_29e4e56d","line":476,"updated":"2025-08-22 10:41:10.000000000","message":"In 8.0+, they now return the `ERR_COLLECTION_MISSING` when you attempt to deploy the function. We could avoid skipping this test for 8.0+, and add a call to `deploy_function` only for 8.0+ to verify that we are getting the error.","commit_id":"4a3b09db2edd681409a37b1d41b4d41d38ce52de"},{"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":"231fc468d250feafe58b5eeb83d221ded3d23d6e","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            \u0027beer-sample\u0027, \"test-scope\", \"test-collection\""},{"line_number":474,"context_line":"        )"},{"line_number":475,"context_line":"        with pytest.raises(EventingFunctionCollectionNotFoundException):"},{"line_number":476,"context_line":"            cb_env.efm.upsert_function(local_func)"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    @pytest.mark.usefixtures(\u0027drop_eventing_functions\u0027)"},{"line_number":479,"context_line":"    def test_url_bindings(self, cb_env):"}],"source_content_type":"text/x-python","patch_set":2,"id":"d4566152_34ad9791","line":476,"in_reply_to":"43460276_d720b3c8","updated":"2025-08-26 08:56:07.000000000","message":"Yes, my suggestion was to add branching for 8.0+ to do both `upsert_function` (which doesn\u0027t raise in that case) and `deploy_function` (which will raise) to still ensure that same exception will be raised (albeit one step further on). Though, that maybe expands the scope of the test, so it\u0027s fine as is.","commit_id":"4a3b09db2edd681409a37b1d41b4d41d38ce52de"},{"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":"c476d913cbf68be065b0689cccf854e57a144c91","unresolved":true,"context_lines":[{"line_number":473,"context_line":"            \u0027beer-sample\u0027, \"test-scope\", \"test-collection\""},{"line_number":474,"context_line":"        )"},{"line_number":475,"context_line":"        with pytest.raises(EventingFunctionCollectionNotFoundException):"},{"line_number":476,"context_line":"            cb_env.efm.upsert_function(local_func)"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    @pytest.mark.usefixtures(\u0027drop_eventing_functions\u0027)"},{"line_number":479,"context_line":"    def test_url_bindings(self, cb_env):"}],"source_content_type":"text/x-python","patch_set":2,"id":"43460276_d720b3c8","line":476,"in_reply_to":"d6f56e53_29e4e56d","updated":"2025-08-25 20:40:50.000000000","message":"The exception is raised when `upsert_function()` is called though.  We don\u0027t get to the deploy step.  The behavior, w.r.t. the test looks to be the same as pause/resume fail tests.","commit_id":"4a3b09db2edd681409a37b1d41b4d41d38ce52de"}]}
