)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"f0bb938e29a3e2ca7bff648db8e04dcfd29342f1","unresolved":true,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2023-04-04 22:00:56 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make all config parsing case-sensitive"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Idd8e552d9fe98b84d7cee1adfa431ea3ae93345d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bc1362dc_3ab26768","line":8,"updated":"2023-04-05 11:12:07.000000000","message":"some kind of UpgradeImpact note here would be appropriate","commit_id":"196d62026bcb3fc43e2c76199172fe35e29d59ed"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"32182dd40c596aafa77932398f6e8868f415c41c","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2023-04-04 22:00:56 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make all config parsing case-sensitive"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Idd8e552d9fe98b84d7cee1adfa431ea3ae93345d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"75e23791_92a08840","line":8,"in_reply_to":"bc1362dc_3ab26768","updated":"2023-04-11 16:05:10.000000000","message":"Done","commit_id":"196d62026bcb3fc43e2c76199172fe35e29d59ed"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"32182dd40c596aafa77932398f6e8868f415c41c","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Make all config parsing case-sensitive"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"UpgradeImpact:"},{"line_number":10,"context_line":"Previously swift\u0027s daemon configuration .ini files were parsed in a"},{"line_number":11,"context_line":"case-insensitive manor, so you could use CLIENT_TIMEOUT and the daemons"},{"line_number":12,"context_line":"would recognize you meant client_timeout.  The proxy and other WSGI"},{"line_number":13,"context_line":"servers have always been case-sensitive.  This difference was surprising"},{"line_number":14,"context_line":"(who wants anything case-insenstive?) and potentially dangerous for"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"cf84a88a_d994647d","line":11,"range":{"start_line":10,"start_character":51,"end_line":11,"end_character":22},"updated":"2023-04-11 16:05:10.000000000","message":"Specifically, the *option names* were normalized to lower-case, yeah? Option *values* have always been case-sensitive (right?), setting aside certain things like `config_true_value`.\n\ns/manor/manner/","commit_id":"648067379997f3a10692069af9a13a428952a843"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"32182dd40c596aafa77932398f6e8868f415c41c","unresolved":true,"context_lines":[{"line_number":10,"context_line":"Previously swift\u0027s daemon configuration .ini files were parsed in a"},{"line_number":11,"context_line":"case-insensitive manor, so you could use CLIENT_TIMEOUT and the daemons"},{"line_number":12,"context_line":"would recognize you meant client_timeout.  The proxy and other WSGI"},{"line_number":13,"context_line":"servers have always been case-sensitive.  This difference was surprising"},{"line_number":14,"context_line":"(who wants anything case-insenstive?) and potentially dangerous for"},{"line_number":15,"context_line":"values like RECLAIM_AGE.  If you have configs that were shouting you"},{"line_number":16,"context_line":"might have to tone it down a bit."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Idd8e552d9fe98b84d7cee1adfa431ea3ae93345d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3c901d87_45766638","line":15,"range":{"start_line":13,"start_character":42,"end_line":15,"end_character":24},"updated":"2023-04-11 16:05:10.000000000","message":"nit: I generally try to keep this kind of justification for the change to the main commit message body, and have the `UpgradeImpact` focus on what\u0027s changed and what operators may need to do about it.","commit_id":"648067379997f3a10692069af9a13a428952a843"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"32182dd40c596aafa77932398f6e8868f415c41c","unresolved":true,"context_lines":[{"line_number":13,"context_line":"servers have always been case-sensitive.  This difference was surprising"},{"line_number":14,"context_line":"(who wants anything case-insenstive?) and potentially dangerous for"},{"line_number":15,"context_line":"values like RECLAIM_AGE.  If you have configs that were shouting you"},{"line_number":16,"context_line":"might have to tone it down a bit."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Idd8e552d9fe98b84d7cee1adfa431ea3ae93345d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5293a356_3bf73bec","line":16,"updated":"2023-04-11 16:05:10.000000000","message":"Do we have any tooling operators could use to determine whether they\u0027re affected? I guess something like\n\n    grep -IR \u0027[A-Z]\u0027 /etc/swift/ | sed -e \u0027/^[^:]*:#/d; /^[^\u003d]*[A-Z][^\u003d]*\u003d/!d\u0027\n\nmight be enough...","commit_id":"648067379997f3a10692069af9a13a428952a843"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c9241c91baa403eaba6b9b2fbce4afc40bfbabb0","unresolved":true,"context_lines":[{"line_number":15,"context_line":"UpgradeImpact:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Previously the option keys in swift\u0027s configuration .ini files were"},{"line_number":18,"context_line":"sometimes parsed in a case-insensitive manor, so you could use"},{"line_number":19,"context_line":"CLIENT_TIMEOUT and the daemons would recognize you meant client_timeout."},{"line_number":20,"context_line":"Now CLIENT_TIMEOUT will be ignored.  If you have configs that were"},{"line_number":21,"context_line":"shouting you might have to tone it down a bit."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"d5aa1706_c508e3ca","line":18,"range":{"start_line":18,"start_character":39,"end_line":18,"end_character":44},"updated":"2023-04-27 17:54:55.000000000","message":"manner","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"8515e61643026a4cdda7bccd9261fd46782cfc39","unresolved":true,"context_lines":[{"line_number":15,"context_line":"UpgradeImpact:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Previously the option keys in swift\u0027s configuration .ini files were"},{"line_number":18,"context_line":"sometimes parsed in a case-insensitive manor, so you could use"},{"line_number":19,"context_line":"CLIENT_TIMEOUT and the daemons would recognize you meant client_timeout."},{"line_number":20,"context_line":"Now CLIENT_TIMEOUT will be ignored.  If you have configs that were"},{"line_number":21,"context_line":"shouting you might have to tone it down a bit."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"710904ae_a9d9645a","line":18,"range":{"start_line":18,"start_character":39,"end_line":18,"end_character":44},"in_reply_to":"d5aa1706_c508e3ca","updated":"2023-04-28 15:03:53.000000000","message":"#willfix\n\nbetween bad math and bad spelling I don\u0027t know why you still let me commit to this repo","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c9241c91baa403eaba6b9b2fbce4afc40bfbabb0","unresolved":true,"context_lines":[{"line_number":17,"context_line":"Previously the option keys in swift\u0027s configuration .ini files were"},{"line_number":18,"context_line":"sometimes parsed in a case-insensitive manor, so you could use"},{"line_number":19,"context_line":"CLIENT_TIMEOUT and the daemons would recognize you meant client_timeout."},{"line_number":20,"context_line":"Now CLIENT_TIMEOUT will be ignored.  If you have configs that were"},{"line_number":21,"context_line":"shouting you might have to tone it down a bit."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: Idd8e552d9fe98b84d7cee1adfa431ea3ae93345d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da129e6c_5ef4cd06","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":34},"updated":"2023-04-27 17:54:55.000000000","message":"Maybe better as\n\n\u003e Now upper-case or mixed-case option names, such as CLIENT_TIMEOUT or Client_Timeout, will be ignored.","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"8515e61643026a4cdda7bccd9261fd46782cfc39","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Previously the option keys in swift\u0027s configuration .ini files were"},{"line_number":18,"context_line":"sometimes parsed in a case-insensitive manor, so you could use"},{"line_number":19,"context_line":"CLIENT_TIMEOUT and the daemons would recognize you meant client_timeout."},{"line_number":20,"context_line":"Now CLIENT_TIMEOUT will be ignored.  If you have configs that were"},{"line_number":21,"context_line":"shouting you might have to tone it down a bit."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: Idd8e552d9fe98b84d7cee1adfa431ea3ae93345d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"a8e1c7d6_7d413b48","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":34},"in_reply_to":"da129e6c_5ef4cd06","updated":"2023-04-28 15:03:53.000000000","message":"Ack","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"94e09c0eaa7aaa9c4d801d16d20149ff027678f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c368d8a0_17a6d983","updated":"2023-04-04 22:39:22.000000000","message":"Since we\u0027re at it, how do we ensure that a release note happens? Our CHANGELOG is updated by the PTL, acting as a release manager. But how does he know?","commit_id":"196d62026bcb3fc43e2c76199172fe35e29d59ed"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"32182dd40c596aafa77932398f6e8868f415c41c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1f2f25be_09d8aa7d","in_reply_to":"c368d8a0_17a6d983","updated":"2023-04-11 16:05:10.000000000","message":"As part of putting together release notes, I run through a few different variations around something like\n\n    git log --oneline --no-merges $(git describe --abbrev\u003d0)..\n\noften focusing on changes under swift/ or etc/ in particular. A commit message like\n\n    Make all config parsing case-sensitive\n\nwould definitely stick out to me as warranting a release note. An `UpgradeImpact` is good, though; I definitely always include a\n\n    git log --grep UpgradeImpact $(git describe --abbrev\u003d0)..\n\nwhen putting a release together, in no small part because I expect/hope that the better operators likely do something similar. It doesn\u0027t *necessarily* ensure I\u0027ll make a big to-do about it in release notes (there were a few recently like \"There is change of log format when ...\" that seemed a little excessive), but it\u0027s a strong signal that I should\n\n- almost certainly explicitly include the change in the notes, rather than letting it get caught in the \"Various other minor bug fixes and improvements.\" line, and\n- think about what we expect operators to do before/during/after upgrade and write up an explanation of that if it seems warranted.","commit_id":"196d62026bcb3fc43e2c76199172fe35e29d59ed"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"fb73cd04002970b541a5d7a529dec2f1fb97d9da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"85306c8e_53131aef","updated":"2023-04-28 15:12:33.000000000","message":"Tim, I tried to look at making the tests better but couldn\u0027t see how to do it exactly.  Do you want to show me what you\u0027re thinking with a diff or do you think we have the coverage we need?\n\nmaybe it\u0027s always a smell for a test to require a comment; but I had thought it might look good in the diff - I wanted to keep the \"assert duplicate option\" tests, but needed to fix them so that they collide on case.","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"8515e61643026a4cdda7bccd9261fd46782cfc39","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"13e347de_5c927e63","updated":"2023-04-28 15:03:53.000000000","message":"fixing the commit seems like a good idea; more tests doesn\u0027t obviously seem like a BAD idea!?","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d84f9aa80ad2e29533b38de4907c2faeb260a73c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b2b77cd8_23c0e43b","updated":"2023-04-14 20:06:30.000000000","message":"maybe i\u0027m done twiddling this","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"30fe5bec08484c4c3775fde1dfc66d2e84274900","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c4d247ca_40e84801","updated":"2023-04-28 16:16:21.000000000","message":"This is surely better than we had before.","commit_id":"ab03e057d774b8a3b9b5310c10a76b282df020ad"}],"swift/common/utils/__init__.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d84f9aa80ad2e29533b38de4907c2faeb260a73c","unresolved":true,"context_lines":[{"line_number":2542,"context_line":"            # values like \"1%\" (which we want to support for"},{"line_number":2543,"context_line":"            # fallocate_reserve)."},{"line_number":2544,"context_line":"            c \u003d ConfigParser(defaults, interpolation\u003dNicerInterpolation())"},{"line_number":2545,"context_line":"    c.optionxform \u003d str  # Don\u0027t lower-case keys"},{"line_number":2546,"context_line":""},{"line_number":2547,"context_line":"    if hasattr(conf_path, \u0027readline\u0027):"},{"line_number":2548,"context_line":"        if hasattr(conf_path, \u0027seek\u0027):"}],"source_content_type":"text/x-python","patch_set":6,"id":"72eeb030_f2465376","line":2545,"updated":"2023-04-14 20:06:30.000000000","message":"what a bunch of work for a simple one line change","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"}],"test/unit/common/test_daemon.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"f0bb938e29a3e2ca7bff648db8e04dcfd29342f1","unresolved":true,"context_lines":[{"line_number":227,"context_line":"        # my-daemon section takes priority (!?)"},{"line_number":228,"context_line":"        self.assertEqual(\u00272\u0027, d.conf[\u0027client_timeout\u0027])"},{"line_number":229,"context_line":"        self.assertEqual(\u00275\u0027, d.conf[\u0027conn_timeout\u0027])"},{"line_number":230,"context_line":"        self.assertEqual(\u002710\u0027, d.conf[\u0027CONN_timeout\u0027])"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    @with_tempdir"},{"line_number":233,"context_line":"    def test_run_deamon_from_conf_file_with_duplicate_var(self, tempdir):"}],"source_content_type":"text/x-python","patch_set":2,"id":"d0f084b2_e6e3f301","line":230,"updated":"2023-04-05 11:12:07.000000000","message":"ok, CONN !\u003d conn","commit_id":"196d62026bcb3fc43e2c76199172fe35e29d59ed"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"fb73cd04002970b541a5d7a529dec2f1fb97d9da","unresolved":true,"context_lines":[{"line_number":227,"context_line":"        # my-daemon section takes priority (!?)"},{"line_number":228,"context_line":"        self.assertEqual(\u00272\u0027, d.conf[\u0027client_timeout\u0027])"},{"line_number":229,"context_line":"        self.assertEqual(\u002710\u0027, d.conf[\u0027CONN_timeout\u0027])"},{"line_number":230,"context_line":"        self.assertEqual(\u00275\u0027, d.conf[\u0027conn_timeout\u0027])"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    @with_tempdir"},{"line_number":233,"context_line":"    def test_run_daemon_from_conf_file_with_duplicate_var(self, tempdir):"}],"source_content_type":"text/x-python","patch_set":6,"id":"162876e8_aa87b6e4","line":230,"updated":"2023-04-28 15:12:33.000000000","message":"I think this is test_run_daemon_from_conf_file_is_case_sensitive","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"30fe5bec08484c4c3775fde1dfc66d2e84274900","unresolved":true,"context_lines":[{"line_number":227,"context_line":"        # my-daemon section takes priority (!?)"},{"line_number":228,"context_line":"        self.assertEqual(\u00272\u0027, d.conf[\u0027client_timeout\u0027])"},{"line_number":229,"context_line":"        self.assertEqual(\u002710\u0027, d.conf[\u0027CONN_timeout\u0027])"},{"line_number":230,"context_line":"        self.assertEqual(\u00275\u0027, d.conf[\u0027conn_timeout\u0027])"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    @with_tempdir"},{"line_number":233,"context_line":"    def test_run_daemon_from_conf_file_with_duplicate_var(self, tempdir):"}],"source_content_type":"text/x-python","patch_set":6,"id":"dbe7d1dd_894541e7","line":230,"in_reply_to":"162876e8_aa87b6e4","updated":"2023-04-28 16:16:21.000000000","message":"IDK -- I was expecting a test with a config more like\n```\n[DEFAULT]\nconn_timeout \u003d 5\nCONN_timeout \u003d 10\n```\nor\n\n```\n[my-daemon]\nconn_timeout \u003d 5\nCONN_timeout \u003d 10\n```","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c9241c91baa403eaba6b9b2fbce4afc40bfbabb0","unresolved":true,"context_lines":[{"line_number":246,"context_line":"            f.write(contents)"},{"line_number":247,"context_line":"        with mock.patch(\u0027swift.common.daemon.use_hub\u0027):"},{"line_number":248,"context_line":"            app_config \u003d lambda: daemon.run_daemon(MyDaemon, tempdir)"},{"line_number":249,"context_line":"            # N.B. CLIENT_TIMEOUT/client_timeout are unique options"},{"line_number":250,"context_line":"            self.assertDuplicateOption(app_config, \u0027conn_timeout\u0027, \u00271.2\u0027)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    @with_tempdir"}],"source_content_type":"text/x-python","patch_set":6,"id":"f265e9ed_1ca7fb97","line":249,"updated":"2023-04-27 17:54:55.000000000","message":"I feel like we want two distinct tests here: `test_run_daemon_from_conf_file_is_case_sensitive` which can make assertions about `client_timeout` and `CLIENT_TIMEOUT`, and `test_run_daemon_from_conf_file_with_duplicate_var` to show what happens when you\u0027ve got multiple `conn_timeout`s (or whatever).","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"8515e61643026a4cdda7bccd9261fd46782cfc39","unresolved":true,"context_lines":[{"line_number":246,"context_line":"            f.write(contents)"},{"line_number":247,"context_line":"        with mock.patch(\u0027swift.common.daemon.use_hub\u0027):"},{"line_number":248,"context_line":"            app_config \u003d lambda: daemon.run_daemon(MyDaemon, tempdir)"},{"line_number":249,"context_line":"            # N.B. CLIENT_TIMEOUT/client_timeout are unique options"},{"line_number":250,"context_line":"            self.assertDuplicateOption(app_config, \u0027conn_timeout\u0027, \u00271.2\u0027)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    @with_tempdir"}],"source_content_type":"text/x-python","patch_set":6,"id":"725b86ac_626edb9a","line":249,"in_reply_to":"f265e9ed_1ca7fb97","updated":"2023-04-28 15:03:53.000000000","message":"yeah - there could be like... a lot more tests, but there\u0027d be some more duplication.","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"fb73cd04002970b541a5d7a529dec2f1fb97d9da","unresolved":true,"context_lines":[{"line_number":275,"context_line":"        # my-daemon section takes priority (!?)"},{"line_number":276,"context_line":"        self.assertEqual(\u00272\u0027, d.conf[\u0027client_timeout\u0027])"},{"line_number":277,"context_line":"        self.assertEqual(\u002710\u0027, d.conf[\u0027CONN_timeout\u0027])"},{"line_number":278,"context_line":"        self.assertEqual(\u00275\u0027, d.conf[\u0027conn_timeout\u0027])"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    @with_tempdir"},{"line_number":281,"context_line":"    def test_run_daemon_from_conf_dir_with_duplicate_var(self, tempdir):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8d1b07_b9c8b611","line":278,"updated":"2023-04-28 15:12:33.000000000","message":"I think this is test_run_daemon_from_conf_dir_is_case_sensitive","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"30fe5bec08484c4c3775fde1dfc66d2e84274900","unresolved":true,"context_lines":[{"line_number":275,"context_line":"        # my-daemon section takes priority (!?)"},{"line_number":276,"context_line":"        self.assertEqual(\u00272\u0027, d.conf[\u0027client_timeout\u0027])"},{"line_number":277,"context_line":"        self.assertEqual(\u002710\u0027, d.conf[\u0027CONN_timeout\u0027])"},{"line_number":278,"context_line":"        self.assertEqual(\u00275\u0027, d.conf[\u0027conn_timeout\u0027])"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    @with_tempdir"},{"line_number":281,"context_line":"    def test_run_daemon_from_conf_dir_with_duplicate_var(self, tempdir):"}],"source_content_type":"text/x-python","patch_set":6,"id":"64b4d0b6_63d6c9b2","line":278,"in_reply_to":"ba8d1b07_b9c8b611","updated":"2023-04-28 16:16:21.000000000","message":":-/ so what happened to the `CONN_timeout \u003d 3`? Smells like a bug that we *don\u0027t* get a duplicate option error...","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c9241c91baa403eaba6b9b2fbce4afc40bfbabb0","unresolved":true,"context_lines":[{"line_number":299,"context_line":"        with mock.patch(\u0027swift.common.daemon.use_hub\u0027):"},{"line_number":300,"context_line":"            app_config \u003d lambda: daemon.run_daemon(MyDaemon, tempdir)"},{"line_number":301,"context_line":"            # N.B. CLIENT_TIMEOUT/client_timeout are unique options"},{"line_number":302,"context_line":"            self.assertDuplicateOption(app_config, \u0027conn_timeout\u0027, \u00271.2\u0027)"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    @contextmanager"},{"line_number":305,"context_line":"    def mock_os(self, child_worker_cycles\u003d3):"}],"source_content_type":"text/x-python","patch_set":6,"id":"58fc50f6_6ec3b00b","line":302,"updated":"2023-04-27 17:54:55.000000000","message":"Similarly, here.","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"8515e61643026a4cdda7bccd9261fd46782cfc39","unresolved":true,"context_lines":[{"line_number":299,"context_line":"        with mock.patch(\u0027swift.common.daemon.use_hub\u0027):"},{"line_number":300,"context_line":"            app_config \u003d lambda: daemon.run_daemon(MyDaemon, tempdir)"},{"line_number":301,"context_line":"            # N.B. CLIENT_TIMEOUT/client_timeout are unique options"},{"line_number":302,"context_line":"            self.assertDuplicateOption(app_config, \u0027conn_timeout\u0027, \u00271.2\u0027)"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    @contextmanager"},{"line_number":305,"context_line":"    def mock_os(self, child_worker_cycles\u003d3):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f2eb9aa_c7a6729d","line":302,"in_reply_to":"58fc50f6_6ec3b00b","updated":"2023-04-28 15:03:53.000000000","message":"it would end up looking like a diff saying: \"case difference is no longer a duplicate option error\" (which would change the test name) and \"you can still get duplicate option errors\"","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"}],"test/unit/common/test_wsgi.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d84f9aa80ad2e29533b38de4907c2faeb260a73c","unresolved":true,"context_lines":[{"line_number":306,"context_line":"            with open(path, \u0027wt\u0027) as fd:"},{"line_number":307,"context_line":"                fd.write(dedent(conf_body))"},{"line_number":308,"context_line":"        app_config \u003d lambda: wsgi.loadapp(tempdir)"},{"line_number":309,"context_line":"        self.assertDuplicateOption(app_config, \u0027client_timeout\u0027, 2.0)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    @with_tempdir"},{"line_number":312,"context_line":"    def test_load_app_config(self, tempdir):"}],"source_content_type":"text/x-python","patch_set":6,"id":"e7296895_dfd62151","side":"PARENT","line":309,"updated":"2023-04-14 20:06:30.000000000","message":"see under py3 unpatched readconf would trigger DuplicateOptionError because client_timeout \u003d\u003d CLIENT_TIMEOUT.\n\nI don\u0027t know py2 w/ unpatched readconf behind wsgi was picking 2.0 - very surprising behavior.","commit_id":"c95f8e6c050bbe9244122100ca90e6f335c73ab7"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d84f9aa80ad2e29533b38de4907c2faeb260a73c","unresolved":true,"context_lines":[{"line_number":312,"context_line":"        app_config \u003d lambda: wsgi.loadapp(tempdir)"},{"line_number":313,"context_line":"        # N.B. our paste conf.d parsing re-uses readconf,"},{"line_number":314,"context_line":"        # so, CLIENT_TIMEOUT/client_timeout are unique options"},{"line_number":315,"context_line":"        self.assertDuplicateOption(app_config, \u0027conn_timeout\u0027, 4.0)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    @with_tempdir"},{"line_number":318,"context_line":"    def test_load_app_config(self, tempdir):"}],"source_content_type":"text/x-python","patch_set":6,"id":"d21deb41_c8f5a3c8","line":315,"updated":"2023-04-14 20:06:30.000000000","message":"this test helped me understand that conf.d wsgi was also sometimes case-insenstive!  so it was a good call to write tests first.  I didn\u0027t understand the system I wanted to change correctly.","commit_id":"ce372245e9e9241f1bef061874421432d26e2e30"}]}
