)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"82f007e8268fd522f35fa625db458738f3178b76","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add optional skip_if_exists parameter to ConfigOpts.register_opts()."},{"line_number":10,"context_line":"When True, silently skips already-registered options (same object),"},{"line_number":11,"context_line":"avoiding DuplicateOptError for repeated registrations. Default behavior"},{"line_number":12,"context_line":"remains strict. Real conflicts always raise DuplicateOptError."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I0dbb457f3177c0385f5eb7deae6bca57bb94ac0f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a3c7743_d39927f2","line":11,"updated":"2026-03-23 16:46:32.000000000","message":"I\u0027ve noted this in the next file, but I don\u0027t know how `DuplicateOptError` is raised currently outside of the real conflict case you note below?","commit_id":"90127874e31a19781462d3b2cbd13113c52a825c"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ca0701434da084e66ceca33a607b263b7cf334c7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8c4bb05a_c7ca8150","updated":"2025-11-20 14:37:19.000000000","message":"This still hides problems caused by two libraries registering options with same names but different values in the other fields (like default)\n\nRestoring old discussion in the oslo.service unit tests I think further better approach is to implement a logic to avoid duplicate registeraion in service level. As I mentioned in your cotyledon patch I\u0027d rather suggest you first try https://github.com/sileht/cotyledon/pull/86 .","commit_id":"852ed251dc34cda1bb1a810c5e5ac8f0731c3dcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0ff8f9e3a176147ba6672aeb19ca9f8c29ef80f1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c2e8abc2_14a07545","in_reply_to":"5cf74815_8923299f","updated":"2025-11-27 18:03:17.000000000","message":"Can you provide tests to prove this?","commit_id":"852ed251dc34cda1bb1a810c5e5ac8f0731c3dcd"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"fe4bcadb8b442ff499ddfa1b403e208f48ae0119","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5cf74815_8923299f","in_reply_to":"8c4bb05a_c7ca8150","updated":"2025-11-21 10:31:12.000000000","message":"The skip_if_exists does not hide real conflicts. If an option with the same name but different fields is registered, oslo.config still raises DuplicateOptError, and this patch explicitly re-raises it. The only case skipped is when the same opt object is registered more than once, which is already documented behavior of register_opt (it returns False in this case). This makes register_opts() consistent with register_opt() behavior while preserving strictness for real conflicts.","commit_id":"852ed251dc34cda1bb1a810c5e5ac8f0731c3dcd"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c41d44cd939b338311b815f2ef722a945289fb00","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7e716e58_0855b3a3","in_reply_to":"b836360a_00cf9fde","updated":"2025-12-04 11:25:16.000000000","message":"Done","commit_id":"852ed251dc34cda1bb1a810c5e5ac8f0731c3dcd"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82cb3103ffc75d4b855d82d0979a1b8f5ab32012","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b836360a_00cf9fde","in_reply_to":"c2e8abc2_14a07545","updated":"2025-11-27 18:12:41.000000000","message":"\u003e This makes register_opts() consistent with register_opt() behavior while preserving strictness for real conflicts.\n\nOK I overlooked that. As Stephen mentioned we may want additional unit test cases to cover this like two Opt, with same type and name but different default values.","commit_id":"852ed251dc34cda1bb1a810c5e5ac8f0731c3dcd"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"a34539b81179ea8c90f5af8b6f757a66322e4943","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"31f7401f_ee0f2f20","updated":"2025-12-22 12:39:29.000000000","message":"Can I get a new update here please?","commit_id":"90127874e31a19781462d3b2cbd13113c52a825c"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"820b88a9165fa29645d21714f6f2441fa7cff5c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c45529dc_618749a7","updated":"2026-01-05 15:06:23.000000000","message":"Hi,\n\nJust a gentle ping to check if there’s any update or feedback needed from my side.\nHappy to adjust or add anything if required. Thanks a lot!","commit_id":"90127874e31a19781462d3b2cbd13113c52a825c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"82f007e8268fd522f35fa625db458738f3178b76","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c43ee87e_c8f16cfc","updated":"2026-03-23 16:46:32.000000000","message":"I believe the code in question is already behaving as you expect and that this patch doesn\u0027t do anything useful. Please let me know if I\u0027ve missed something though","commit_id":"90127874e31a19781462d3b2cbd13113c52a825c"}],"oslo_config/cfg.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0ff8f9e3a176147ba6672aeb19ca9f8c29ef80f1","unresolved":true,"context_lines":[{"line_number":2548,"context_line":"        return True"},{"line_number":2549,"context_line":""},{"line_number":2550,"context_line":"    @__clear_cache"},{"line_number":2551,"context_line":"    def register_opts(self, opts, group\u003dNone, skip_if_exists\u003dFalse):"},{"line_number":2552,"context_line":"        \"\"\"Register multiple option schemas at once.\"\"\""},{"line_number":2553,"context_line":"        for opt in opts:"},{"line_number":2554,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"4fdcc5de_6aa6cc86","line":2551,"updated":"2025-11-27 18:03:17.000000000","message":"This should likely be a kwarg-only parameter.\n\n```suggestion\n    def register_opts(self, opts, group\u003dNone, *, skip_if_exists\u003dFalse):\n```","commit_id":"852ed251dc34cda1bb1a810c5e5ac8f0731c3dcd"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82cb3103ffc75d4b855d82d0979a1b8f5ab32012","unresolved":true,"context_lines":[{"line_number":2548,"context_line":"        return True"},{"line_number":2549,"context_line":""},{"line_number":2550,"context_line":"    @__clear_cache"},{"line_number":2551,"context_line":"    def register_opts(self, opts, group\u003dNone, skip_if_exists\u003dFalse):"},{"line_number":2552,"context_line":"        \"\"\"Register multiple option schemas at once.\"\"\""},{"line_number":2553,"context_line":"        for opt in opts:"},{"line_number":2554,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ac1de018_a2283829","line":2551,"in_reply_to":"4fdcc5de_6aa6cc86","updated":"2025-11-27 18:12:41.000000000","message":"+1","commit_id":"852ed251dc34cda1bb1a810c5e5ac8f0731c3dcd"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c41d44cd939b338311b815f2ef722a945289fb00","unresolved":false,"context_lines":[{"line_number":2548,"context_line":"        return True"},{"line_number":2549,"context_line":""},{"line_number":2550,"context_line":"    @__clear_cache"},{"line_number":2551,"context_line":"    def register_opts(self, opts, group\u003dNone, skip_if_exists\u003dFalse):"},{"line_number":2552,"context_line":"        \"\"\"Register multiple option schemas at once.\"\"\""},{"line_number":2553,"context_line":"        for opt in opts:"},{"line_number":2554,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"b8c83228_478d3e98","line":2551,"in_reply_to":"ac1de018_a2283829","updated":"2025-12-04 11:25:16.000000000","message":"Done","commit_id":"852ed251dc34cda1bb1a810c5e5ac8f0731c3dcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"82f007e8268fd522f35fa625db458738f3178b76","unresolved":true,"context_lines":[{"line_number":2564,"context_line":"            except DuplicateOptError:"},{"line_number":2565,"context_line":"                # Real conflict (same name, different type) - always raise"},{"line_number":2566,"context_line":"                # even if skip_if_exists\u003dTrue"},{"line_number":2567,"context_line":"                raise"},{"line_number":2568,"context_line":""},{"line_number":2569,"context_line":"    @__clear_cache"},{"line_number":2570,"context_line":"    def register_cli_opt(self, opt, group\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"f93021fe_12a2fc5a","line":2567,"updated":"2026-03-23 16:46:32.000000000","message":"I don\u0027t understand how this works. We were not checking the return value of `self.register_opt`, so we should never have exited the loop. And the try-except is simply re-raising the exception. It looks like the code is currently behaving as expected?","commit_id":"90127874e31a19781462d3b2cbd13113c52a825c"}]}
