)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1a8844e9b1b83b75bba5bfcadaa427c31f356508","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously, it was possible for updater_workers to be a negative integer or zero. This change enforces that updater_workers should be a positive integer."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"UpgradeImpact: Any configurations relying on non-positive values will require updates to ensure compatibility."},{"line_number":12,"context_line":"Change-Id: Ie40194b406aeedcf8c38a3c273ab768e2b643a5d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"6d74e766_96f0b10e","line":11,"updated":"2024-12-19 00:50:15.000000000","message":"I think we can ditch the UpgradeImpact, as it was impossible to have a functional `forever`-mode updater like that.\n\nOr is the concern that this will break operators that *only* run in `once` mode?","commit_id":"ccbbd24feb57426db8d2ca2534ff8687ab201cf9"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b7e202a8410ba20e0d152030d85a018ab6781b0c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously, it was possible for updater_workers to be a negative integer or zero. This change enforces that updater_workers should be a positive integer."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"UpgradeImpact: Any configurations relying on non-positive values will require updates to ensure compatibility."},{"line_number":12,"context_line":"Change-Id: Ie40194b406aeedcf8c38a3c273ab768e2b643a5d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"18d9f199_b472f4f5","line":11,"in_reply_to":"2118e15c_2fa674f5","updated":"2024-12-19 17:04:56.000000000","message":"I don\u0027t see calling this out as really hurting anything; but it does seem like with a config like this you\u0027d have only been able to run in once mode.","commit_id":"ccbbd24feb57426db8d2ca2534ff8687ab201cf9"},{"author":{"_account_id":37271,"name":"Chinemerem Chigbo","display_name":"Chinemerem","email":"cchigbo@nvidia.com","username":"chinemerem"},"change_message_id":"93e175eb081715f0dfec8090f46251337c90a577","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously, it was possible for updater_workers to be a negative integer or zero. This change enforces that updater_workers should be a positive integer."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"UpgradeImpact: Any configurations relying on non-positive values will require updates to ensure compatibility."},{"line_number":12,"context_line":"Change-Id: Ie40194b406aeedcf8c38a3c273ab768e2b643a5d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"2118e15c_2fa674f5","line":11,"in_reply_to":"6d74e766_96f0b10e","updated":"2024-12-19 03:28:47.000000000","message":"Right, I added the UpgradeImpact due to this comment from Clay:\nhttps://review.opendev.org/c/openstack/swift/+/937267/comment/d1b51607_d3e8fc0e/","commit_id":"ccbbd24feb57426db8d2ca2534ff8687ab201cf9"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1a8844e9b1b83b75bba5bfcadaa427c31f356508","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6bc70050_5541903e","updated":"2024-12-19 00:50:15.000000000","message":"Should definitely make for a more-obvious error message 👍","commit_id":"ccbbd24feb57426db8d2ca2534ff8687ab201cf9"}],"swift/obj/updater.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1a8844e9b1b83b75bba5bfcadaa427c31f356508","unresolved":true,"context_lines":[{"line_number":501,"context_line":"                    self.logger.warning(\u0027Skipping: %s\u0027, err)"},{"line_number":502,"context_line":"                    continue"},{"line_number":503,"context_line":"                while len(pids) \u003e\u003d self.updater_workers:"},{"line_number":504,"context_line":"                    pids.remove(os.wait()[0])"},{"line_number":505,"context_line":"                pid \u003d os.fork()"},{"line_number":506,"context_line":"                if pid:"},{"line_number":507,"context_line":"                    pids.append(pid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"e1dab468_a2188ede","line":504,"updated":"2024-12-19 00:50:15.000000000","message":"If we got here with `self.updater_workers \u003c\u003d 0`, we ought to get a\n\n```ChildProcessError: [Errno 10] No child processes```","commit_id":"ccbbd24feb57426db8d2ca2534ff8687ab201cf9"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f32c53c496f4a7faa8d99af1e79ba484689f5e3c","unresolved":false,"context_lines":[{"line_number":501,"context_line":"                    self.logger.warning(\u0027Skipping: %s\u0027, err)"},{"line_number":502,"context_line":"                    continue"},{"line_number":503,"context_line":"                while len(pids) \u003e\u003d self.updater_workers:"},{"line_number":504,"context_line":"                    pids.remove(os.wait()[0])"},{"line_number":505,"context_line":"                pid \u003d os.fork()"},{"line_number":506,"context_line":"                if pid:"},{"line_number":507,"context_line":"                    pids.append(pid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"77925255_ddd0687d","line":504,"in_reply_to":"c20173af_2e8502b9","updated":"2024-12-19 17:09:28.000000000","message":"No -- I mainly meant it as evidence that we don\u0027t need the `UpgradeImpact`. If I update my config:\n```\nvagrant@saio:~$ head -n 3 /etc/swift/object-server/replication-daemons.conf-template \n[object-updater]\nupdater_workers \u003d -1\ninterval\u003d1\n```\nThen the updater *can\u0027t function* in forever mode:\n```\nvagrant@saio:~$ swift-object-updater /etc/swift/object-server/1.conf.d/ -v 2\u003e\u00261 | sed -e \u0027s/#012/\\n/g\u0027\nobject-updater-6010: Starting 6617\nobject-updater-6010: Begin object update sweep\nobject-updater-6010: UNCAUGHT EXCEPTION\nTraceback (most recent call last):\n  File \"/usr/local/bin/swift-object-updater\", line 10, in \u003cmodule\u003e\n    sys.exit(main())\n             ^^^^^^\n  File \"/vagrant/swift/swift/obj/updater.py\", line 927, in main\n    run_daemon(ObjectUpdater, conf_file, **options)\n  File \"/vagrant/swift/swift/common/daemon.py\", line 331, in run_daemon\n    DaemonStrategy(d, logger).run(once\u003donce, **kwargs)\n  File \"/vagrant/swift/swift/common/daemon.py\", line 158, in run\n    self._run(once\u003donce, **kwargs)\n  File \"/vagrant/swift/swift/common/daemon.py\", line 230, in _run\n    return self._run_inline(once, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/vagrant/swift/swift/common/daemon.py\", line 152, in _run_inline\n    self.daemon.run(once\u003donce, **kwargs)\n  File \"/vagrant/swift/swift/common/daemon.py\", line 66, in run\n    self.run_forever(**kwargs)\n  File \"/vagrant/swift/swift/obj/updater.py\", line 503, in run_forever\n    pids.remove(os.wait()[0])\n                ^^^^^^^^^\nChildProcessError: [Errno 10] No child processes\n```","commit_id":"ccbbd24feb57426db8d2ca2534ff8687ab201cf9"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b7e202a8410ba20e0d152030d85a018ab6781b0c","unresolved":false,"context_lines":[{"line_number":501,"context_line":"                    self.logger.warning(\u0027Skipping: %s\u0027, err)"},{"line_number":502,"context_line":"                    continue"},{"line_number":503,"context_line":"                while len(pids) \u003e\u003d self.updater_workers:"},{"line_number":504,"context_line":"                    pids.remove(os.wait()[0])"},{"line_number":505,"context_line":"                pid \u003d os.fork()"},{"line_number":506,"context_line":"                if pid:"},{"line_number":507,"context_line":"                    pids.append(pid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"0254d44b_1fcfb9cb","line":504,"in_reply_to":"c20173af_2e8502b9","updated":"2024-12-19 17:04:56.000000000","message":"oic, we haven\u0027t forked yet\n\n```\n\u003e\u003e\u003e os.wait()\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nChildProcessError: [Errno 10] No child processes\n```\n\nso this is just fixing an invalid config to blow up sooner.","commit_id":"ccbbd24feb57426db8d2ca2534ff8687ab201cf9"},{"author":{"_account_id":37271,"name":"Chinemerem Chigbo","display_name":"Chinemerem","email":"cchigbo@nvidia.com","username":"chinemerem"},"change_message_id":"93e175eb081715f0dfec8090f46251337c90a577","unresolved":false,"context_lines":[{"line_number":501,"context_line":"                    self.logger.warning(\u0027Skipping: %s\u0027, err)"},{"line_number":502,"context_line":"                    continue"},{"line_number":503,"context_line":"                while len(pids) \u003e\u003d self.updater_workers:"},{"line_number":504,"context_line":"                    pids.remove(os.wait()[0])"},{"line_number":505,"context_line":"                pid \u003d os.fork()"},{"line_number":506,"context_line":"                if pid:"},{"line_number":507,"context_line":"                    pids.append(pid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c20173af_2e8502b9","line":504,"in_reply_to":"e1dab468_a2188ede","updated":"2024-12-19 03:28:47.000000000","message":"Right. Let me know if you would like me to try, except this error.","commit_id":"ccbbd24feb57426db8d2ca2534ff8687ab201cf9"}]}
