)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a26d4d988d3f73f80902e44569f718c743b3f614","unresolved":true,"context_lines":[{"line_number":10,"context_line":"It is designed to manipulate Consul, serving as a service broker for the HTTP driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"HTTP driver has been proposed as a new oslo.messaging driver for RPC communication."},{"line_number":13,"context_line":"It communicates RPC client and server directly over HTTP without a messaging queue."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: https://opendev.org/openstack/oslo-specs/src/branch/master/specs/bobcat/http-driver.rst"},{"line_number":16,"context_line":"Change-Id: Id84adda53744ef55fc171d35b372d178f38ce068"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"79210573_e4e61af3","line":13,"updated":"2024-03-12 01:55:38.000000000","message":"please wrap lines by 72 characters.","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6ee05c6261df8fd8871a627c3cb2b81f54741f09","unresolved":false,"context_lines":[{"line_number":10,"context_line":"It is designed to manipulate Consul, serving as a service broker for the HTTP driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"HTTP driver has been proposed as a new oslo.messaging driver for RPC communication."},{"line_number":13,"context_line":"It communicates RPC client and server directly over HTTP without a messaging queue."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: https://opendev.org/openstack/oslo-specs/src/branch/master/specs/bobcat/http-driver.rst"},{"line_number":16,"context_line":"Change-Id: Id84adda53744ef55fc171d35b372d178f38ce068"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"8e65777c_17523dca","line":13,"in_reply_to":"79210573_e4e61af3","updated":"2024-03-15 05:21:09.000000000","message":"Done","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a26d4d988d3f73f80902e44569f718c743b3f614","unresolved":true,"context_lines":[{"line_number":12,"context_line":"HTTP driver has been proposed as a new oslo.messaging driver for RPC communication."},{"line_number":13,"context_line":"It communicates RPC client and server directly over HTTP without a messaging queue."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: https://opendev.org/openstack/oslo-specs/src/branch/master/specs/bobcat/http-driver.rst"},{"line_number":16,"context_line":"Change-Id: Id84adda53744ef55fc171d35b372d178f38ce068"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"4c4b4392_ae1b1344","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":99},"updated":"2024-03-12 01:55:38.000000000","message":"This does not bring the actual driver implementation, right ? Then please use partially-implements instead of implements.\n\nAlso it would be better if you can create a blue print in [1]. In addition we are moving towards the D dev cycle, it\u0027d be nice if you can resubmit the spec to D.\n\n[1] https://blueprints.launchpad.net/oslo.messaging","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6ee05c6261df8fd8871a627c3cb2b81f54741f09","unresolved":true,"context_lines":[{"line_number":12,"context_line":"HTTP driver has been proposed as a new oslo.messaging driver for RPC communication."},{"line_number":13,"context_line":"It communicates RPC client and server directly over HTTP without a messaging queue."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: https://opendev.org/openstack/oslo-specs/src/branch/master/specs/bobcat/http-driver.rst"},{"line_number":16,"context_line":"Change-Id: Id84adda53744ef55fc171d35b372d178f38ce068"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9c275619_8056970b","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":99},"in_reply_to":"4c4b4392_ae1b1344","updated":"2024-03-15 05:21:09.000000000","message":"Thank you so much for the detailed review! I have modified the commit message as suggested. Please let me know if it looks better now.\n\nAlso, I\u0027ve created a blueprint [1] but the link in the comment doesn\u0027t seem to work, please let me know if I should change it to the full URL instead. \n\"\"\"\nPartially-implements: blueprint oslo-http-driver\n\"\"\"\n\n[1] https://blueprints.launchpad.net/oslo.messaging/+spec/oslo-http-driver\n\nMeanwhile I will finish addressing the rest of comments as soon as i can.","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"e8202ef2593be8da1fc18d3ecaf6bfb3db1fc15c","unresolved":false,"context_lines":[{"line_number":12,"context_line":"HTTP driver has been proposed as a new oslo.messaging driver for RPC communication."},{"line_number":13,"context_line":"It communicates RPC client and server directly over HTTP without a messaging queue."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: https://opendev.org/openstack/oslo-specs/src/branch/master/specs/bobcat/http-driver.rst"},{"line_number":16,"context_line":"Change-Id: Id84adda53744ef55fc171d35b372d178f38ce068"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"496c185f_2ebc0801","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":99},"in_reply_to":"778c99ec_6153a6aa","updated":"2024-11-11 05:51:37.000000000","message":"Moved it into the E cycle.","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"1fe0966891d4edc6171fe5b7fbc4ef300ac732c4","unresolved":true,"context_lines":[{"line_number":12,"context_line":"HTTP driver has been proposed as a new oslo.messaging driver for RPC communication."},{"line_number":13,"context_line":"It communicates RPC client and server directly over HTTP without a messaging queue."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: https://opendev.org/openstack/oslo-specs/src/branch/master/specs/bobcat/http-driver.rst"},{"line_number":16,"context_line":"Change-Id: Id84adda53744ef55fc171d35b372d178f38ce068"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"778c99ec_6153a6aa","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":99},"in_reply_to":"9c275619_8056970b","updated":"2024-03-22 09:51:12.000000000","message":"I just submitted a patch for moving the specs to D. Please help me review:\nhttps://review.opendev.org/c/openstack/oslo-specs/+/913958","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a26d4d988d3f73f80902e44569f718c743b3f614","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0514b198_c8a4d330","updated":"2024-03-12 01:55:38.000000000","message":"Thanks for submitting this !\n\nI still have to spend some more time to review the logics, but I\u0027m leaving my initial comments","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"36cb98a6_bc76e551","in_reply_to":"0514b198_c8a4d330","updated":"2024-03-22 09:21:59.000000000","message":"Thank you!","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0fc45593a8265b79ee45769c57d7c3aa5d1bce1e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"dd4819ec_515166e6","updated":"2024-03-15 05:56:05.000000000","message":"-1 because some of my comments are not yet addressed.\n\nAlso note that you may have to add the library to global requirements.","commit_id":"6dcf3a9d0cdd8e6c6e9c1797137373ea2e13a00d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa1e499da4890a347b5ad262525159d6b19241e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a2ef7edd_f126d69f","updated":"2024-03-15 08:23:40.000000000","message":"Thank so much for the review! \nI have been trying to address all the comments, which might take some time.","commit_id":"f878bae9d54f121dc40ffad4c17fe203bb6ace76"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"aab8d18a_760d2181","updated":"2024-03-22 09:21:59.000000000","message":"Thanks so much for your help and patience.\nI\u0027ve just submitted a new version with most of the comments addressed.\nPlease review again and let me know if any questions or concerns.","commit_id":"c13bedb9f5b6724afcf3f7e4a6bcd646244283a6"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"23118ff459ba9baa6f2656c20e0c7706ea581f74","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":13,"id":"1012dc89_d6ab3bb3","updated":"2024-11-11 09:38:08.000000000","message":"recheck","commit_id":"fe64ba0bd5833fd859292673779ac90c09692d81"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"2616c9757420d95d3d7bae01c22e123ab9172878","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"d6f75c36_f0422cf8","in_reply_to":"1012dc89_d6ab3bb3","updated":"2024-11-11 09:39:51.000000000","message":"Done","commit_id":"fe64ba0bd5833fd859292673779ac90c09692d81"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8d4e1ea8bc2a17ec143f4d475713baf4245b6d37","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"6b5b4b1b_de521766","updated":"2025-06-03 06:10:52.000000000","message":"will go through the other patches before I promote my vote.","commit_id":"40ec233e64f69b1354b4b9b31401f461b365a2ef"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4b560503b98494cac2e7773c7e2f3f21bd17d8f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"5e202663_9b70099f","updated":"2025-09-27 10:13:28.000000000","message":"I\u0027ll reviewing this from mostly scratch so I might have overlooked discussions we had in the past ...","commit_id":"44db5e7a62a8621d7c0da0fb265ed8873114dd37"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"51196a5ce7483766a58f75af8a292b7b3b4c406e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"98b3cb50_f674dce5","updated":"2026-01-19 15:30:18.000000000","message":"The change looks almost good but I eventually noticed one thing we likely have to fix (sorry for late notice ...)","commit_id":"3ed02c36cfa5a5fe4db165f1f26dab25cefce924"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"860463ba8e7a981d7feb290eca1488d4540daa42","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"e91a2f2b_d4488217","in_reply_to":"98b3cb50_f674dce5","updated":"2026-01-20 07:53:40.000000000","message":"No worries at all and thank you so much for the detailed review. please let me know if anything else needed to be fixed.","commit_id":"3ed02c36cfa5a5fe4db165f1f26dab25cefce924"}],"doc/requirements.txt":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8de794a11ae4ccee404da7e9c53243e27f9e7484","unresolved":true,"context_lines":[{"line_number":7,"context_line":"confluent-kafka\u003e\u003d0.11.6 # Apache-2.0"},{"line_number":8,"context_line":"pyngus\u003e\u003d2.2.0 # Apache-2.0"},{"line_number":9,"context_line":"tenacity\u003e\u003d3.2.1 # Apache-2.0"},{"line_number":10,"context_line":"python-consul2\u003e\u003d0.1.5 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"8c861c0a_7f3272bf","line":10,"updated":"2024-11-25 21:55:33.000000000","message":"https://opendev.org/openstack/requirements/src/branch/master/global-requirements.txt#L497\n\nThe requirements project indicates this is unsupported upstream and we should not use it anymore. Is that information out of date?","commit_id":"a31647e5ef2c1425b7b5b590037c36546650b90a"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"de8ae48a34672622852b7799ac9261718176aaa1","unresolved":true,"context_lines":[{"line_number":7,"context_line":"confluent-kafka\u003e\u003d0.11.6 # Apache-2.0"},{"line_number":8,"context_line":"pyngus\u003e\u003d2.2.0 # Apache-2.0"},{"line_number":9,"context_line":"tenacity\u003e\u003d3.2.1 # Apache-2.0"},{"line_number":10,"context_line":"python-consul2\u003e\u003d0.1.5 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"c3d3d885_d58c250e","line":10,"in_reply_to":"8c861c0a_7f3272bf","updated":"2024-11-29 07:36:23.000000000","message":"Here is the information:\nhttps://review.opendev.org/c/openstack/requirements/+/917828\n\nIIUC we do have the plan to replace this in the future.\nFor now, our priority is to upstream a functional version of the HTTP driver.","commit_id":"a31647e5ef2c1425b7b5b590037c36546650b90a"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"627e1ef80dadfdda675a675cee25f4ccedba1471","unresolved":false,"context_lines":[{"line_number":7,"context_line":"confluent-kafka\u003e\u003d0.11.6 # Apache-2.0"},{"line_number":8,"context_line":"pyngus\u003e\u003d2.2.0 # Apache-2.0"},{"line_number":9,"context_line":"tenacity\u003e\u003d3.2.1 # Apache-2.0"},{"line_number":10,"context_line":"python-consul2\u003e\u003d0.1.5 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"250ab2ba_99aa273e","line":10,"in_reply_to":"c3d3d885_d58c250e","updated":"2024-12-02 10:42:54.000000000","message":"Done","commit_id":"a31647e5ef2c1425b7b5b590037c36546650b90a"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"30fff69625b9c775fcf6502a581da305623331e3","unresolved":true,"context_lines":[{"line_number":7,"context_line":"confluent-kafka\u003e\u003d0.11.6 # Apache-2.0"},{"line_number":8,"context_line":"pyngus\u003e\u003d2.2.0 # Apache-2.0"},{"line_number":9,"context_line":"tenacity\u003e\u003d3.2.1 # Apache-2.0"},{"line_number":10,"context_line":"python-consul2\u003e\u003d0.1.5 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"f72fedb1_5348db8c","line":10,"in_reply_to":"c3d3d885_d58c250e","updated":"2024-12-02 09:41:11.000000000","message":"I\u0027m afraid the above comment is not really answering the concern raised.\n\nIt\u0027s true that the current status of python-consul2 is not good (and that\u0027s why I did add that comment in requirements). However this feature was initially brought to the community a few years ago, after actual usage in production environment in LY, and we\u0027ve heard large interest from some companies/people in trying this feature. So I prefer merging the working feature first, asap, and then discuss the migration plan.\n\nside note: We may get rid of not only python-consul2 but also consul itself given the recent situation of Hashicorp and their products.\n\nIf no one works on that migration for multiple cycles and then we follow usual deprecation/removal flow to kick this out.","commit_id":"a31647e5ef2c1425b7b5b590037c36546650b90a"}],"oslo_messaging/_drivers/http_driver/consul_operator.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a26d4d988d3f73f80902e44569f718c743b3f614","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Consul options."},{"line_number":28,"context_line":"consul_opts \u003d ["},{"line_number":29,"context_line":"    cfg.IntOpt(\u0027port\u0027,"},{"line_number":30,"context_line":"               default\u003d8500,"},{"line_number":31,"context_line":"               help\u003d\u0027Port where the Consul service is running\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"c45b6133_7a7d6915","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":11},"updated":"2024-03-12 01:55:38.000000000","message":"please make sure these are added to config entry point so that oslo-config-generator can pick these up.","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Consul options."},{"line_number":28,"context_line":"consul_opts \u003d ["},{"line_number":29,"context_line":"    cfg.IntOpt(\u0027port\u0027,"},{"line_number":30,"context_line":"               default\u003d8500,"},{"line_number":31,"context_line":"               help\u003d\u0027Port where the Consul service is running\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"2b1af939_a4352c86","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":11},"in_reply_to":"c45b6133_7a7d6915","updated":"2024-03-22 09:21:59.000000000","message":"Done","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a26d4d988d3f73f80902e44569f718c743b3f614","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Consul options."},{"line_number":28,"context_line":"consul_opts \u003d ["},{"line_number":29,"context_line":"    cfg.IntOpt(\u0027port\u0027,"},{"line_number":30,"context_line":"               default\u003d8500,"},{"line_number":31,"context_line":"               help\u003d\u0027Port where the Consul service is running\u0027),"},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027host\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"08df7048_90acbaa0","line":29,"range":{"start_line":29,"start_character":8,"end_line":29,"end_character":14},"updated":"2024-03-12 01:55:38.000000000","message":"Use PortOpt","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Consul options."},{"line_number":28,"context_line":"consul_opts \u003d ["},{"line_number":29,"context_line":"    cfg.IntOpt(\u0027port\u0027,"},{"line_number":30,"context_line":"               default\u003d8500,"},{"line_number":31,"context_line":"               help\u003d\u0027Port where the Consul service is running\u0027),"},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027host\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"d58924e3_b863d728","line":29,"range":{"start_line":29,"start_character":8,"end_line":29,"end_character":14},"in_reply_to":"08df7048_90acbaa0","updated":"2024-03-22 09:21:59.000000000","message":"Done","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a26d4d988d3f73f80902e44569f718c743b3f614","unresolved":true,"context_lines":[{"line_number":32,"context_line":"    cfg.StrOpt(\u0027host\u0027,"},{"line_number":33,"context_line":"               default\u003d\"127.0.0.1\","},{"line_number":34,"context_line":"               help\u003d\u0027Host where the Consul service is running\u0027),"},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027timeout\u0027,"},{"line_number":36,"context_line":"               default\u003d\"50ms\","},{"line_number":37,"context_line":"               help\u003d\u0027Timeout for access Consul API.\u0027),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027cache_max_age\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"c79ccebd_94c87c53","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":14},"updated":"2024-03-12 01:55:38.000000000","message":"I\u0027d recommend using IntOpt and treat it as mill-seconds.","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    cfg.StrOpt(\u0027host\u0027,"},{"line_number":33,"context_line":"               default\u003d\"127.0.0.1\","},{"line_number":34,"context_line":"               help\u003d\u0027Host where the Consul service is running\u0027),"},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027timeout\u0027,"},{"line_number":36,"context_line":"               default\u003d\"50ms\","},{"line_number":37,"context_line":"               help\u003d\u0027Timeout for access Consul API.\u0027),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027cache_max_age\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7c6a2a13_5bcb587c","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":14},"in_reply_to":"c79ccebd_94c87c53","updated":"2024-03-22 09:21:59.000000000","message":"Done","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a26d4d988d3f73f80902e44569f718c743b3f614","unresolved":true,"context_lines":[{"line_number":39,"context_line":"               default\u003d0,"},{"line_number":40,"context_line":"               help\u003d\u0027Max age for the Consul local in memory cache \u0027"},{"line_number":41,"context_line":"                    \u0027(in seconds). Never use cache if max age is 0.\u0027),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027check_interval\u0027,"},{"line_number":43,"context_line":"               default\u003d\"60s\","},{"line_number":44,"context_line":"               help\u003d\u0027Interval for performing a health check.\u0027),"},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027check_timeout\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"2abb80fe_bb9217f2","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":14},"updated":"2024-03-12 01:55:38.000000000","message":"ditto. Use IntOpt and treat it as seconds.","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[{"line_number":39,"context_line":"               default\u003d0,"},{"line_number":40,"context_line":"               help\u003d\u0027Max age for the Consul local in memory cache \u0027"},{"line_number":41,"context_line":"                    \u0027(in seconds). Never use cache if max age is 0.\u0027),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027check_interval\u0027,"},{"line_number":43,"context_line":"               default\u003d\"60s\","},{"line_number":44,"context_line":"               help\u003d\u0027Interval for performing a health check.\u0027),"},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027check_timeout\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"68c6d014_6302d851","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":14},"in_reply_to":"2abb80fe_bb9217f2","updated":"2024-03-22 09:21:59.000000000","message":"Done","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a26d4d988d3f73f80902e44569f718c743b3f614","unresolved":true,"context_lines":[{"line_number":42,"context_line":"    cfg.StrOpt(\u0027check_interval\u0027,"},{"line_number":43,"context_line":"               default\u003d\"60s\","},{"line_number":44,"context_line":"               help\u003d\u0027Interval for performing a health check.\u0027),"},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027check_timeout\u0027,"},{"line_number":46,"context_line":"               default\u003d\"10s\","},{"line_number":47,"context_line":"               help\u003d\u0027Timeout for a health check to be critical state\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027check_deregister\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5b145a0a_81aa41e6","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":14},"updated":"2024-03-12 01:55:38.000000000","message":"ditto","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    cfg.StrOpt(\u0027check_interval\u0027,"},{"line_number":43,"context_line":"               default\u003d\"60s\","},{"line_number":44,"context_line":"               help\u003d\u0027Interval for performing a health check.\u0027),"},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027check_timeout\u0027,"},{"line_number":46,"context_line":"               default\u003d\"10s\","},{"line_number":47,"context_line":"               help\u003d\u0027Timeout for a health check to be critical state\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027check_deregister\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"b6db3021_42b7d0be","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":14},"in_reply_to":"5b145a0a_81aa41e6","updated":"2024-03-22 09:21:59.000000000","message":"Done","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a26d4d988d3f73f80902e44569f718c743b3f614","unresolved":true,"context_lines":[{"line_number":45,"context_line":"    cfg.StrOpt(\u0027check_timeout\u0027,"},{"line_number":46,"context_line":"               default\u003d\"10s\","},{"line_number":47,"context_line":"               help\u003d\u0027Timeout for a health check to be critical state\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027check_deregister\u0027,"},{"line_number":49,"context_line":"               default\u003d\"600s\","},{"line_number":50,"context_line":"               help\u003d\u0027Specifies that checks associated with a service should \u0027"},{"line_number":51,"context_line":"                    \u0027deregister after being the critical state for this \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"6e1ecef1_ff1a00e7","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":14},"updated":"2024-03-12 01:55:38.000000000","message":"ditto.\n\nAlso, I guess check_deregister_interval would be a better name.","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    cfg.StrOpt(\u0027check_timeout\u0027,"},{"line_number":46,"context_line":"               default\u003d\"10s\","},{"line_number":47,"context_line":"               help\u003d\u0027Timeout for a health check to be critical state\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027check_deregister\u0027,"},{"line_number":49,"context_line":"               default\u003d\"600s\","},{"line_number":50,"context_line":"               help\u003d\u0027Specifies that checks associated with a service should \u0027"},{"line_number":51,"context_line":"                    \u0027deregister after being the critical state for this \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"b883bb16_c432e391","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":14},"in_reply_to":"2354d091_40b730bd","updated":"2024-03-22 09:21:59.000000000","message":"Done","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"91bb1732388368ba8ba3d666e6d3bb53185ccecc","unresolved":true,"context_lines":[{"line_number":45,"context_line":"    cfg.StrOpt(\u0027check_timeout\u0027,"},{"line_number":46,"context_line":"               default\u003d\"10s\","},{"line_number":47,"context_line":"               help\u003d\u0027Timeout for a health check to be critical state\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027check_deregister\u0027,"},{"line_number":49,"context_line":"               default\u003d\"600s\","},{"line_number":50,"context_line":"               help\u003d\u0027Specifies that checks associated with a service should \u0027"},{"line_number":51,"context_line":"                    \u0027deregister after being the critical state for this \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"2354d091_40b730bd","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":14},"in_reply_to":"6e1ecef1_ff1a00e7","updated":"2024-03-13 09:54:31.000000000","message":"Maybe check_deregister_after would be better","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a26d4d988d3f73f80902e44569f718c743b3f614","unresolved":true,"context_lines":[{"line_number":50,"context_line":"               help\u003d\u0027Specifies that checks associated with a service should \u0027"},{"line_number":51,"context_line":"                    \u0027deregister after being the critical state for this \u0027"},{"line_number":52,"context_line":"                    \u0027configured time.\u0027),"},{"line_number":53,"context_line":"    cfg.StrOpt(\u0027token\u0027, default\u003dos.environ.get(\u0027CONSUL_HTTP_TOKEN\u0027, None),"},{"line_number":54,"context_line":"               help\u003d\u0027A Token for consul API call. Default is None\u0027),"},{"line_number":55,"context_line":"]"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"903a45d2_0f130b5f","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":14},"updated":"2024-03-12 01:55:38.000000000","message":"this should have secret\u003dTrue.","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[{"line_number":50,"context_line":"               help\u003d\u0027Specifies that checks associated with a service should \u0027"},{"line_number":51,"context_line":"                    \u0027deregister after being the critical state for this \u0027"},{"line_number":52,"context_line":"                    \u0027configured time.\u0027),"},{"line_number":53,"context_line":"    cfg.StrOpt(\u0027token\u0027, default\u003dos.environ.get(\u0027CONSUL_HTTP_TOKEN\u0027, None),"},{"line_number":54,"context_line":"               help\u003d\u0027A Token for consul API call. Default is None\u0027),"},{"line_number":55,"context_line":"]"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ac66a251_7857449e","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":14},"in_reply_to":"903a45d2_0f130b5f","updated":"2024-03-22 09:21:59.000000000","message":"Done","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a26d4d988d3f73f80902e44569f718c743b3f614","unresolved":true,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"def register_consul_opts(conf):"},{"line_number":59,"context_line":"    consul_opt_group \u003d cfg.OptGroup(name\u003d\u0027consul\u0027,"},{"line_number":60,"context_line":"                                    title\u003d\u0027Consul options\u0027)"},{"line_number":61,"context_line":"    conf.register_group(consul_opt_group)"},{"line_number":62,"context_line":"    conf.register_opts(consul_opts, group\u003dconsul_opt_group)"}],"source_content_type":"text/x-python","patch_set":1,"id":"26466733_5ebeb06c","line":59,"range":{"start_line":59,"start_character":42,"end_line":59,"end_character":48},"updated":"2024-03-12 01:55:38.000000000","message":"please consider following the existing naming (oslo_messaging_\u003cfoo\u003e). Probably oslo_messaging_service_broker_consul (though this does not sound very good. I\u0027ll reconsider it later)","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":true,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"def register_consul_opts(conf):"},{"line_number":59,"context_line":"    consul_opt_group \u003d cfg.OptGroup(name\u003d\u0027consul\u0027,"},{"line_number":60,"context_line":"                                    title\u003d\u0027Consul options\u0027)"},{"line_number":61,"context_line":"    conf.register_group(consul_opt_group)"},{"line_number":62,"context_line":"    conf.register_opts(consul_opts, group\u003dconsul_opt_group)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9983e234_6642b038","line":59,"range":{"start_line":59,"start_character":42,"end_line":59,"end_character":48},"in_reply_to":"26466733_5ebeb06c","updated":"2024-03-22 09:21:59.000000000","message":"I put it \"oslo_messaging_service_broker_consul\" for now. maybe \"oslo_messaging_http_consul\" could be an alternative?","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"e8202ef2593be8da1fc18d3ecaf6bfb3db1fc15c","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"def register_consul_opts(conf):"},{"line_number":59,"context_line":"    consul_opt_group \u003d cfg.OptGroup(name\u003d\u0027consul\u0027,"},{"line_number":60,"context_line":"                                    title\u003d\u0027Consul options\u0027)"},{"line_number":61,"context_line":"    conf.register_group(consul_opt_group)"},{"line_number":62,"context_line":"    conf.register_opts(consul_opts, group\u003dconsul_opt_group)"}],"source_content_type":"text/x-python","patch_set":1,"id":"39b1c3bb_84d59929","line":59,"range":{"start_line":59,"start_character":42,"end_line":59,"end_character":48},"in_reply_to":"9983e234_6642b038","updated":"2024-11-11 05:51:37.000000000","message":"I\u0027ve changed it to `oslo_messaging_http_consul` for now.","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"91bb1732388368ba8ba3d666e6d3bb53185ccecc","unresolved":true,"context_lines":[{"line_number":102,"context_line":"        self.last_requested \u003d None"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def register_service(self, name, service_id, address, port, tags,"},{"line_number":105,"context_line":"                         proxy_conf, enable_ssl\u003dFalse):"},{"line_number":106,"context_line":"        reverse_proxy_info \u003d {"},{"line_number":107,"context_line":"            \u0027reverse_proxy_name\u0027: proxy_conf.reverse_proxy_name,"},{"line_number":108,"context_line":"            \u0027reverse_proxy_endpoint\u0027: proxy_conf.reverse_proxy_endpoint"}],"source_content_type":"text/x-python","patch_set":2,"id":"194ab178_b77c4320","line":105,"range":{"start_line":105,"start_character":25,"end_line":105,"end_character":35},"updated":"2024-03-13 09:54:31.000000000","message":"It\u0027s not clear how this is given. I probably have to check how this is actually used in http driver.","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":true,"context_lines":[{"line_number":102,"context_line":"        self.last_requested \u003d None"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def register_service(self, name, service_id, address, port, tags,"},{"line_number":105,"context_line":"                         proxy_conf, enable_ssl\u003dFalse):"},{"line_number":106,"context_line":"        reverse_proxy_info \u003d {"},{"line_number":107,"context_line":"            \u0027reverse_proxy_name\u0027: proxy_conf.reverse_proxy_name,"},{"line_number":108,"context_line":"            \u0027reverse_proxy_endpoint\u0027: proxy_conf.reverse_proxy_endpoint"}],"source_content_type":"text/x-python","patch_set":2,"id":"e55682da_49750091","line":105,"range":{"start_line":105,"start_character":25,"end_line":105,"end_character":35},"in_reply_to":"194ab178_b77c4320","updated":"2024-03-22 09:21:59.000000000","message":"This was the object holding proxy and reverse_proxy\u0027s info. \nTo make it simple, I changed it to a str of reverse_proxy_endpoint, which is the only thing needed here.","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"e8202ef2593be8da1fc18d3ecaf6bfb3db1fc15c","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.last_requested \u003d None"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def register_service(self, name, service_id, address, port, tags,"},{"line_number":105,"context_line":"                         proxy_conf, enable_ssl\u003dFalse):"},{"line_number":106,"context_line":"        reverse_proxy_info \u003d {"},{"line_number":107,"context_line":"            \u0027reverse_proxy_name\u0027: proxy_conf.reverse_proxy_name,"},{"line_number":108,"context_line":"            \u0027reverse_proxy_endpoint\u0027: proxy_conf.reverse_proxy_endpoint"}],"source_content_type":"text/x-python","patch_set":2,"id":"d1df0e09_a2fca482","line":105,"range":{"start_line":105,"start_character":25,"end_line":105,"end_character":35},"in_reply_to":"e55682da_49750091","updated":"2024-11-11 05:51:37.000000000","message":"Done","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"91bb1732388368ba8ba3d666e6d3bb53185ccecc","unresolved":true,"context_lines":[{"line_number":108,"context_line":"            \u0027reverse_proxy_endpoint\u0027: proxy_conf.reverse_proxy_endpoint"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":"        # Step 1: register the service."},{"line_number":111,"context_line":"        # Register returns True/False/Exception"},{"line_number":112,"context_line":"        # https://github.com/cablehead/python-consul/blob/"},{"line_number":113,"context_line":"        # 53eb41c4760b983aec878ef73e72c11e0af501bb/consul/base.py#L171-L196"},{"line_number":114,"context_line":"        ret \u003d self.consul.agent.service.register("}],"source_content_type":"text/x-python","patch_set":2,"id":"27b21a71_a7e12247","line":111,"range":{"start_line":111,"start_character":38,"end_line":111,"end_character":47},"updated":"2024-03-13 09:54:31.000000000","message":"are we sure register \"returns\" an exception ? then we should handle it. If it raises an exception then we should replace it by an appropriate ServiceBroker exception. (like ConsulRegistrationException )","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":true,"context_lines":[{"line_number":108,"context_line":"            \u0027reverse_proxy_endpoint\u0027: proxy_conf.reverse_proxy_endpoint"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":"        # Step 1: register the service."},{"line_number":111,"context_line":"        # Register returns True/False/Exception"},{"line_number":112,"context_line":"        # https://github.com/cablehead/python-consul/blob/"},{"line_number":113,"context_line":"        # 53eb41c4760b983aec878ef73e72c11e0af501bb/consul/base.py#L171-L196"},{"line_number":114,"context_line":"        ret \u003d self.consul.agent.service.register("}],"source_content_type":"text/x-python","patch_set":2,"id":"abe7a91c_72e65f98","line":111,"range":{"start_line":111,"start_character":38,"end_line":111,"end_character":47},"in_reply_to":"27b21a71_a7e12247","updated":"2024-03-22 09:21:59.000000000","message":"Sorry for the confusion. As suggested, i uses exceptions for identifying errors instead of \"returns\"","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"e8202ef2593be8da1fc18d3ecaf6bfb3db1fc15c","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            \u0027reverse_proxy_endpoint\u0027: proxy_conf.reverse_proxy_endpoint"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":"        # Step 1: register the service."},{"line_number":111,"context_line":"        # Register returns True/False/Exception"},{"line_number":112,"context_line":"        # https://github.com/cablehead/python-consul/blob/"},{"line_number":113,"context_line":"        # 53eb41c4760b983aec878ef73e72c11e0af501bb/consul/base.py#L171-L196"},{"line_number":114,"context_line":"        ret \u003d self.consul.agent.service.register("}],"source_content_type":"text/x-python","patch_set":2,"id":"3e10effd_6e0bd68c","line":111,"range":{"start_line":111,"start_character":38,"end_line":111,"end_character":47},"in_reply_to":"abe7a91c_72e65f98","updated":"2024-11-11 05:51:37.000000000","message":"Done","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"91bb1732388368ba8ba3d666e6d3bb53185ccecc","unresolved":true,"context_lines":[{"line_number":120,"context_line":"            token\u003dself.consul_token,"},{"line_number":121,"context_line":"            meta\u003dreverse_proxy_info)"},{"line_number":122,"context_line":"        if not ret:"},{"line_number":123,"context_line":"            return False"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        # Step 2: create a http check for this service."},{"line_number":126,"context_line":"        header \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"2a720264_52fb11f4","line":123,"range":{"start_line":123,"start_character":19,"end_line":123,"end_character":24},"updated":"2024-03-13 09:54:31.000000000","message":"Let\u0027s raise an exception on failure, instead of returning true/false.","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            token\u003dself.consul_token,"},{"line_number":121,"context_line":"            meta\u003dreverse_proxy_info)"},{"line_number":122,"context_line":"        if not ret:"},{"line_number":123,"context_line":"            return False"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        # Step 2: create a http check for this service."},{"line_number":126,"context_line":"        header \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3df0ec8a_e18292f4","line":123,"range":{"start_line":123,"start_character":19,"end_line":123,"end_character":24},"in_reply_to":"2a720264_52fb11f4","updated":"2024-03-22 09:21:59.000000000","message":"Done","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"91bb1732388368ba8ba3d666e6d3bb53185ccecc","unresolved":true,"context_lines":[{"line_number":147,"context_line":"        http_check \u003d consul.Check.http(url, self.check_interval,"},{"line_number":148,"context_line":"                                       self.check_timeout,"},{"line_number":149,"context_line":"                                       self.check_deregister, header,"},{"line_number":150,"context_line":"                                       tls_skip_verify\u003dTrue)"},{"line_number":151,"context_line":"        LOG.debug(\"Check config done. url\u003d%s, header\u003d%s\", url, header)"},{"line_number":152,"context_line":"        # Initial state of a health check to \"passing\"."},{"line_number":153,"context_line":"        http_check[\"status\"] \u003d \"passing\""}],"source_content_type":"text/x-python","patch_set":2,"id":"5347e2fe_28cb0384","line":150,"range":{"start_line":150,"start_character":39,"end_line":150,"end_character":54},"updated":"2024-03-13 09:54:31.000000000","message":"Is this required in all cases ? IMO disabling tls verification is generally discouraged and we have to make it optional, at least.","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        http_check \u003d consul.Check.http(url, self.check_interval,"},{"line_number":148,"context_line":"                                       self.check_timeout,"},{"line_number":149,"context_line":"                                       self.check_deregister, header,"},{"line_number":150,"context_line":"                                       tls_skip_verify\u003dTrue)"},{"line_number":151,"context_line":"        LOG.debug(\"Check config done. url\u003d%s, header\u003d%s\", url, header)"},{"line_number":152,"context_line":"        # Initial state of a health check to \"passing\"."},{"line_number":153,"context_line":"        http_check[\"status\"] \u003d \"passing\""}],"source_content_type":"text/x-python","patch_set":2,"id":"b78aef4d_c0a5a703","line":150,"range":{"start_line":150,"start_character":39,"end_line":150,"end_character":54},"in_reply_to":"5347e2fe_28cb0384","updated":"2024-03-22 09:21:59.000000000","message":"Done","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"91bb1732388368ba8ba3d666e6d3bb53185ccecc","unresolved":true,"context_lines":[{"line_number":160,"context_line":"    def deregister_service(self, service_id):"},{"line_number":161,"context_line":"        try:"},{"line_number":162,"context_line":"            ret \u003d self.consul.agent.service.deregister(service_id)"},{"line_number":163,"context_line":"        except consul.ConsulException as e:"},{"line_number":164,"context_line":"            msg \u003d (\"The service(%s) has already been removed and ignores this \""},{"line_number":165,"context_line":"                   \"exception: %s.\" % (service_id, e))"},{"line_number":166,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"d82bf6f3_a0ca9b4a","line":163,"range":{"start_line":163,"start_character":22,"end_line":163,"end_character":37},"updated":"2024-03-13 09:54:31.000000000","message":"This is too vague and can hide other errors such as server errors. Can\u0027t we use here more specific exception like NotFound ?","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    def deregister_service(self, service_id):"},{"line_number":161,"context_line":"        try:"},{"line_number":162,"context_line":"            ret \u003d self.consul.agent.service.deregister(service_id)"},{"line_number":163,"context_line":"        except consul.ConsulException as e:"},{"line_number":164,"context_line":"            msg \u003d (\"The service(%s) has already been removed and ignores this \""},{"line_number":165,"context_line":"                   \"exception: %s.\" % (service_id, e))"},{"line_number":166,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"35d8e129_c6e262f6","line":163,"range":{"start_line":163,"start_character":22,"end_line":163,"end_character":37},"in_reply_to":"d82bf6f3_a0ca9b4a","updated":"2024-03-22 09:21:59.000000000","message":"Done","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"91bb1732388368ba8ba3d666e6d3bb53185ccecc","unresolved":true,"context_lines":[{"line_number":169,"context_line":"                   \"exception: %s\" % (service_id, e))"},{"line_number":170,"context_line":"            LOG.warning(msg)"},{"line_number":171,"context_line":"        else:"},{"line_number":172,"context_line":"            LOG.debug(\"Consul deregister returned %s\", ret)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def _get_cached_service_list(self, consul_svc, server\u003dNone):"},{"line_number":175,"context_line":"        result \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"ddbb9176_bdf4b2ba","line":172,"range":{"start_line":172,"start_character":51,"end_line":172,"end_character":52},"updated":"2024-03-13 09:54:31.000000000","message":"what is the benefit of showing the return value. Is there a case where deregister returns False ? If then should we treat it as a warning ?","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"bf0a8f157ba03803944467499794d3bf185e1614","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                   \"exception: %s\" % (service_id, e))"},{"line_number":170,"context_line":"            LOG.warning(msg)"},{"line_number":171,"context_line":"        else:"},{"line_number":172,"context_line":"            LOG.debug(\"Consul deregister returned %s\", ret)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def _get_cached_service_list(self, consul_svc, server\u003dNone):"},{"line_number":175,"context_line":"        result \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"af8688a9_cb369781","line":172,"range":{"start_line":172,"start_character":51,"end_line":172,"end_character":52},"in_reply_to":"ddbb9176_bdf4b2ba","updated":"2024-03-22 09:28:27.000000000","message":"Done","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"91bb1732388368ba8ba3d666e6d3bb53185ccecc","unresolved":true,"context_lines":[{"line_number":188,"context_line":"        return result"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def _update_cache(self, consul_svc, server, new_service_list):"},{"line_number":191,"context_line":"        \"\"\"Update the cache for the given service `consul_svc` running on"},{"line_number":192,"context_line":"        the `server` with `new_service_list` returned from Consul. If `server`"},{"line_number":193,"context_line":"        is None, update the cache for all the service entries of"},{"line_number":194,"context_line":"        the `consul_svc`."}],"source_content_type":"text/x-python","patch_set":2,"id":"47011d80_abec8a5b","line":191,"updated":"2024-03-13 09:54:31.000000000","message":"let\u0027s follow the usual documentation format. Put one line title, one blank line and then put detailed description.","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        return result"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def _update_cache(self, consul_svc, server, new_service_list):"},{"line_number":191,"context_line":"        \"\"\"Update the cache for the given service `consul_svc` running on"},{"line_number":192,"context_line":"        the `server` with `new_service_list` returned from Consul. If `server`"},{"line_number":193,"context_line":"        is None, update the cache for all the service entries of"},{"line_number":194,"context_line":"        the `consul_svc`."}],"source_content_type":"text/x-python","patch_set":2,"id":"97825aea_3f903358","line":191,"in_reply_to":"47011d80_abec8a5b","updated":"2024-03-22 09:21:59.000000000","message":"Done","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"91bb1732388368ba8ba3d666e6d3bb53185ccecc","unresolved":true,"context_lines":[{"line_number":224,"context_line":"        if consul_svc not in self.cached_services:"},{"line_number":225,"context_line":"            self.cached_services[consul_svc] \u003d {}"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        if server:"},{"line_number":228,"context_line":"            # If server is specified, there should be only one entry in"},{"line_number":229,"context_line":"            # new_service_list. Use index 0 to get the element."},{"line_number":230,"context_line":"            self.cached_services[consul_svc][server] \u003d new_service_list[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5c7ead58_93cb77aa","line":227,"range":{"start_line":227,"start_character":11,"end_line":227,"end_character":17},"updated":"2024-03-13 09:54:31.000000000","message":"if server is optional then please make this optional argument.\n\nI wonder if we really need server argument though. Can\u0027t we use the same logic evne when updating cache for a single server ?","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        if consul_svc not in self.cached_services:"},{"line_number":225,"context_line":"            self.cached_services[consul_svc] \u003d {}"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        if server:"},{"line_number":228,"context_line":"            # If server is specified, there should be only one entry in"},{"line_number":229,"context_line":"            # new_service_list. Use index 0 to get the element."},{"line_number":230,"context_line":"            self.cached_services[consul_svc][server] \u003d new_service_list[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"2c725a93_72c43423","line":227,"range":{"start_line":227,"start_character":11,"end_line":227,"end_character":17},"in_reply_to":"5c7ead58_93cb77aa","updated":"2024-03-22 09:21:59.000000000","message":"Done","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"91bb1732388368ba8ba3d666e6d3bb53185ccecc","unresolved":true,"context_lines":[{"line_number":233,"context_line":"                hostname \u003d entry[\u0027Tags\u0027][0]"},{"line_number":234,"context_line":"                self.cached_services[consul_svc][hostname] \u003d entry"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def _is_cache_expired(self, now):"},{"line_number":237,"context_line":"        if self.last_requested is None:"},{"line_number":238,"context_line":"            return True"},{"line_number":239,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"c07341fa_18453e2d","line":236,"range":{"start_line":236,"start_character":8,"end_line":236,"end_character":25},"updated":"2024-03-13 09:54:31.000000000","message":"we probably need lock mechanism ?","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"e8202ef2593be8da1fc18d3ecaf6bfb3db1fc15c","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                hostname \u003d entry[\u0027Tags\u0027][0]"},{"line_number":234,"context_line":"                self.cached_services[consul_svc][hostname] \u003d entry"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def _is_cache_expired(self, now):"},{"line_number":237,"context_line":"        if self.last_requested is None:"},{"line_number":238,"context_line":"            return True"},{"line_number":239,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"a4d59b7f_fd2d0030","line":236,"range":{"start_line":236,"start_character":8,"end_line":236,"end_character":25},"in_reply_to":"af4eaada_d4502c42","updated":"2024-11-11 05:51:37.000000000","message":"Done","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":true,"context_lines":[{"line_number":233,"context_line":"                hostname \u003d entry[\u0027Tags\u0027][0]"},{"line_number":234,"context_line":"                self.cached_services[consul_svc][hostname] \u003d entry"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def _is_cache_expired(self, now):"},{"line_number":237,"context_line":"        if self.last_requested is None:"},{"line_number":238,"context_line":"            return True"},{"line_number":239,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"af4eaada_d4502c42","line":236,"range":{"start_line":236,"start_character":8,"end_line":236,"end_character":25},"in_reply_to":"c07341fa_18453e2d","updated":"2024-03-22 09:21:59.000000000","message":"Ah you\u0027re right, just added the lock for this method","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"91bb1732388368ba8ba3d666e6d3bb53185ccecc","unresolved":true,"context_lines":[{"line_number":296,"context_line":"                # Since we already know there is no cache for this consul_svc"},{"line_number":297,"context_line":"                # if ConsulAccessException happens, there is no need to try"},{"line_number":298,"context_line":"                # covering using cache again."},{"line_number":299,"context_line":"                result \u003d self._get_service_list("},{"line_number":300,"context_line":"                    consul_svc, server)"},{"line_number":301,"context_line":"                self._update_cache(consul_svc, server, result)"},{"line_number":302,"context_line":"                self.last_requested \u003d now"}],"source_content_type":"text/x-python","patch_set":2,"id":"160f0505_f4b5f4c8","line":299,"updated":"2024-03-13 09:54:31.000000000","message":"This logic currently ignores cross_dc which looks wrong.","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":true,"context_lines":[{"line_number":296,"context_line":"                # Since we already know there is no cache for this consul_svc"},{"line_number":297,"context_line":"                # if ConsulAccessException happens, there is no need to try"},{"line_number":298,"context_line":"                # covering using cache again."},{"line_number":299,"context_line":"                result \u003d self._get_service_list("},{"line_number":300,"context_line":"                    consul_svc, server)"},{"line_number":301,"context_line":"                self._update_cache(consul_svc, server, result)"},{"line_number":302,"context_line":"                self.last_requested \u003d now"}],"source_content_type":"text/x-python","patch_set":2,"id":"a1af38eb_d58ae4d1","line":299,"in_reply_to":"160f0505_f4b5f4c8","updated":"2024-03-22 09:21:59.000000000","message":"Let me double check again","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"de314bbcd53ae6f11667e5532d67b78f1c945b1a","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                # Since we already know there is no cache for this consul_svc"},{"line_number":297,"context_line":"                # if ConsulAccessException happens, there is no need to try"},{"line_number":298,"context_line":"                # covering using cache again."},{"line_number":299,"context_line":"                result \u003d self._get_service_list("},{"line_number":300,"context_line":"                    consul_svc, server)"},{"line_number":301,"context_line":"                self._update_cache(consul_svc, server, result)"},{"line_number":302,"context_line":"                self.last_requested \u003d now"}],"source_content_type":"text/x-python","patch_set":2,"id":"1add90b5_5760a658","line":299,"in_reply_to":"3c3089bb_c901c57a","updated":"2024-11-11 06:05:32.000000000","message":"Actually `_get_service_list` implicitly checks other DCs if no result from the local DC is found. \n```\n        if len(service_list) \u003d\u003d 0:\n            # Since we failed to get the service list from the local DC,\n            # try getting service list from other DCs.\n```","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fe787fa0809bc676c2be11d7c10b87db5e12186e","unresolved":true,"context_lines":[{"line_number":296,"context_line":"                # Since we already know there is no cache for this consul_svc"},{"line_number":297,"context_line":"                # if ConsulAccessException happens, there is no need to try"},{"line_number":298,"context_line":"                # covering using cache again."},{"line_number":299,"context_line":"                result \u003d self._get_service_list("},{"line_number":300,"context_line":"                    consul_svc, server)"},{"line_number":301,"context_line":"                self._update_cache(consul_svc, server, result)"},{"line_number":302,"context_line":"                self.last_requested \u003d now"}],"source_content_type":"text/x-python","patch_set":2,"id":"3c3089bb_c901c57a","line":299,"in_reply_to":"a1af38eb_d58ae4d1","updated":"2024-11-11 06:02:12.000000000","message":"Actually `_get_service_list` will check other DCs if the \n```\n        if len(service_list) \u003d\u003d 0:\n            # Since we failed to get the service list from the local DC,\n            # try getting service list from other DCs.\n```\nactually","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"91bb1732388368ba8ba3d666e6d3bb53185ccecc","unresolved":true,"context_lines":[{"line_number":338,"context_line":"            other_dcs \u003d [] if other_dcs is None else other_dcs"},{"line_number":339,"context_line":"            # Make sure all DCs have a count."},{"line_number":340,"context_line":"            for dc in other_dcs:"},{"line_number":341,"context_line":"                if dc not in self.dc_access_counter:"},{"line_number":342,"context_line":"                    self.dc_access_counter[dc] \u003d 0"},{"line_number":343,"context_line":"            # Sort the DCs based on how many times each is accessed."},{"line_number":344,"context_line":"            other_dcs \u003d sorted(other_dcs, key\u003dlambda x:"}],"source_content_type":"text/x-python","patch_set":2,"id":"6d2f619c_c4eb70c4","line":341,"range":{"start_line":341,"start_character":34,"end_line":341,"end_character":51},"updated":"2024-03-13 09:54:31.000000000","message":"does this need to be thread safe ? (like by adding lock mechanism)","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":true,"context_lines":[{"line_number":338,"context_line":"            other_dcs \u003d [] if other_dcs is None else other_dcs"},{"line_number":339,"context_line":"            # Make sure all DCs have a count."},{"line_number":340,"context_line":"            for dc in other_dcs:"},{"line_number":341,"context_line":"                if dc not in self.dc_access_counter:"},{"line_number":342,"context_line":"                    self.dc_access_counter[dc] \u003d 0"},{"line_number":343,"context_line":"            # Sort the DCs based on how many times each is accessed."},{"line_number":344,"context_line":"            other_dcs \u003d sorted(other_dcs, key\u003dlambda x:"}],"source_content_type":"text/x-python","patch_set":2,"id":"edafe10f_d9fe7b24","line":341,"range":{"start_line":341,"start_character":34,"end_line":341,"end_character":51},"in_reply_to":"6d2f619c_c4eb70c4","updated":"2024-03-22 09:21:59.000000000","message":"Done","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"e8202ef2593be8da1fc18d3ecaf6bfb3db1fc15c","unresolved":false,"context_lines":[{"line_number":338,"context_line":"            other_dcs \u003d [] if other_dcs is None else other_dcs"},{"line_number":339,"context_line":"            # Make sure all DCs have a count."},{"line_number":340,"context_line":"            for dc in other_dcs:"},{"line_number":341,"context_line":"                if dc not in self.dc_access_counter:"},{"line_number":342,"context_line":"                    self.dc_access_counter[dc] \u003d 0"},{"line_number":343,"context_line":"            # Sort the DCs based on how many times each is accessed."},{"line_number":344,"context_line":"            other_dcs \u003d sorted(other_dcs, key\u003dlambda x:"}],"source_content_type":"text/x-python","patch_set":2,"id":"b2659842_21835908","line":341,"range":{"start_line":341,"start_character":34,"end_line":341,"end_character":51},"in_reply_to":"edafe10f_d9fe7b24","updated":"2024-11-11 05:51:37.000000000","message":"Done","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"91bb1732388368ba8ba3d666e6d3bb53185ccecc","unresolved":true,"context_lines":[{"line_number":397,"context_line":"                \u0027port\u0027: self.port, \u0027reason\u0027: str(err)}"},{"line_number":398,"context_line":"            raise ConsulAccessException(err_msg)"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    def _increment_dc_access_count(self, dc):"},{"line_number":401,"context_line":"        if dc in self.dc_access_counter:"},{"line_number":402,"context_line":"            self.dc_access_counter[dc] +\u003d 1"},{"line_number":403,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7891d1cc_65fd5c60","line":400,"range":{"start_line":400,"start_character":8,"end_line":400,"end_character":34},"updated":"2024-03-13 09:54:31.000000000","message":"This may allows us to implement fine-grained load balancer but I have a few concerns.\n\n* This may need appropriate locking\n* Counter never decreases so we should consider overflow.\n\nI wonder if just randomizing DCs at L344 can be a better solution.","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":true,"context_lines":[{"line_number":397,"context_line":"                \u0027port\u0027: self.port, \u0027reason\u0027: str(err)}"},{"line_number":398,"context_line":"            raise ConsulAccessException(err_msg)"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    def _increment_dc_access_count(self, dc):"},{"line_number":401,"context_line":"        if dc in self.dc_access_counter:"},{"line_number":402,"context_line":"            self.dc_access_counter[dc] +\u003d 1"},{"line_number":403,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a399a66_28c0e734","line":400,"range":{"start_line":400,"start_character":8,"end_line":400,"end_character":34},"in_reply_to":"7891d1cc_65fd5c60","updated":"2024-03-22 09:21:59.000000000","message":"Sounds good. I totally agree. \nrandomizing DCs might be a better and simpler solution, and therefore I abandoned this approach.","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"e8202ef2593be8da1fc18d3ecaf6bfb3db1fc15c","unresolved":false,"context_lines":[{"line_number":397,"context_line":"                \u0027port\u0027: self.port, \u0027reason\u0027: str(err)}"},{"line_number":398,"context_line":"            raise ConsulAccessException(err_msg)"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    def _increment_dc_access_count(self, dc):"},{"line_number":401,"context_line":"        if dc in self.dc_access_counter:"},{"line_number":402,"context_line":"            self.dc_access_counter[dc] +\u003d 1"},{"line_number":403,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"f353efc1_86735f4d","line":400,"range":{"start_line":400,"start_character":8,"end_line":400,"end_character":34},"in_reply_to":"9a399a66_28c0e734","updated":"2024-11-11 05:51:37.000000000","message":"Done","commit_id":"763ceeaca5c9060afbca88e3c35f8a5501a562ff"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8228d3bd42e6185737dd041e4262aa0bf8d3393c","unresolved":true,"context_lines":[{"line_number":57,"context_line":"               secret\u003dTrue,"},{"line_number":58,"context_line":"               default\u003dos.environ.get(\u0027CONSUL_HTTP_TOKEN\u0027, None),"},{"line_number":59,"context_line":"               help\u003d\u0027A Token for consul API call. Default is None.\u0027),"},{"line_number":60,"context_line":"    cfg.BoolOpt(\u0027tls_skip_verify\u0027,"},{"line_number":61,"context_line":"                help\u003d\u0027Skip TLS certificate verification when performing a HTTP\u0027"},{"line_number":62,"context_line":"                     \u0027 check for a service.\u0027),"},{"line_number":63,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":16,"id":"0579a4df_f829b52f","line":60,"range":{"start_line":60,"start_character":17,"end_line":60,"end_character":32},"updated":"2024-11-23 06:03:22.000000000","message":"Should this default to False ?","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"a30e21dbb4470e89273f660b96616c6b9b74ab79","unresolved":false,"context_lines":[{"line_number":57,"context_line":"               secret\u003dTrue,"},{"line_number":58,"context_line":"               default\u003dos.environ.get(\u0027CONSUL_HTTP_TOKEN\u0027, None),"},{"line_number":59,"context_line":"               help\u003d\u0027A Token for consul API call. Default is None.\u0027),"},{"line_number":60,"context_line":"    cfg.BoolOpt(\u0027tls_skip_verify\u0027,"},{"line_number":61,"context_line":"                help\u003d\u0027Skip TLS certificate verification when performing a HTTP\u0027"},{"line_number":62,"context_line":"                     \u0027 check for a service.\u0027),"},{"line_number":63,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":16,"id":"b150e2b0_84e99ab8","line":60,"range":{"start_line":60,"start_character":17,"end_line":60,"end_character":32},"in_reply_to":"0579a4df_f829b52f","updated":"2024-11-25 08:54:03.000000000","message":"Done","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8228d3bd42e6185737dd041e4262aa0bf8d3393c","unresolved":true,"context_lines":[{"line_number":170,"context_line":"            LOG.info(\"Registered %(service_id)s for %(name)s on Consul\" %"},{"line_number":171,"context_line":"                     {\u0027service_id\u0027: service_id, \u0027name\u0027: name})"},{"line_number":172,"context_line":"        else:"},{"line_number":173,"context_line":"            LOG.warning(\"Service register API returned False without raising\""},{"line_number":174,"context_line":"                        \"exceptions: name\u003d%(name)s, \""},{"line_number":175,"context_line":"                        \"service_id\u003d%(service_id)s. There might be some \""},{"line_number":176,"context_line":"                        \"unexpected behaviors\" %"},{"line_number":177,"context_line":"                        {\u0027name\u0027: name, \u0027service_id\u0027: service_id})"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def _register_http_check(self, service_id, address, port,"},{"line_number":180,"context_line":"                             enable_ssl, reverse_proxy_endpoint):"}],"source_content_type":"text/x-python","patch_set":16,"id":"ccded2d2_b78787fc","line":177,"range":{"start_line":173,"start_character":0,"end_line":177,"end_character":65},"updated":"2024-11-23 06:03:22.000000000","message":"Looking at the code in py-consul, I see False is returned when HTTP request to consul failed (non-2xx response is returned) so I believe this should be treated as an error, not a warning.","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"a30e21dbb4470e89273f660b96616c6b9b74ab79","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            LOG.info(\"Registered %(service_id)s for %(name)s on Consul\" %"},{"line_number":171,"context_line":"                     {\u0027service_id\u0027: service_id, \u0027name\u0027: name})"},{"line_number":172,"context_line":"        else:"},{"line_number":173,"context_line":"            LOG.warning(\"Service register API returned False without raising\""},{"line_number":174,"context_line":"                        \"exceptions: name\u003d%(name)s, \""},{"line_number":175,"context_line":"                        \"service_id\u003d%(service_id)s. There might be some \""},{"line_number":176,"context_line":"                        \"unexpected behaviors\" %"},{"line_number":177,"context_line":"                        {\u0027name\u0027: name, \u0027service_id\u0027: service_id})"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def _register_http_check(self, service_id, address, port,"},{"line_number":180,"context_line":"                             enable_ssl, reverse_proxy_endpoint):"}],"source_content_type":"text/x-python","patch_set":16,"id":"d07d673d_e89da71a","line":177,"range":{"start_line":173,"start_character":0,"end_line":177,"end_character":65},"in_reply_to":"ccded2d2_b78787fc","updated":"2024-11-25 08:54:03.000000000","message":"Done","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8228d3bd42e6185737dd041e4262aa0bf8d3393c","unresolved":true,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def _register_http_check(self, service_id, address, port,"},{"line_number":180,"context_line":"                             enable_ssl, reverse_proxy_endpoint):"},{"line_number":181,"context_line":"        header \u003d {}"},{"line_number":182,"context_line":"        if reverse_proxy_endpoint:"},{"line_number":183,"context_line":"            # Send the healthcheck request to reverse proxy if applicable."},{"line_number":184,"context_line":"            if not reverse_proxy_endpoint.endswith(\u0027/\u0027):"}],"source_content_type":"text/x-python","patch_set":16,"id":"f1acef52_d8adec7e","line":181,"range":{"start_line":181,"start_character":8,"end_line":181,"end_character":14},"updated":"2024-11-23 06:03:22.000000000","message":"headers","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"a30e21dbb4470e89273f660b96616c6b9b74ab79","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def _register_http_check(self, service_id, address, port,"},{"line_number":180,"context_line":"                             enable_ssl, reverse_proxy_endpoint):"},{"line_number":181,"context_line":"        header \u003d {}"},{"line_number":182,"context_line":"        if reverse_proxy_endpoint:"},{"line_number":183,"context_line":"            # Send the healthcheck request to reverse proxy if applicable."},{"line_number":184,"context_line":"            if not reverse_proxy_endpoint.endswith(\u0027/\u0027):"}],"source_content_type":"text/x-python","patch_set":16,"id":"b3a59312_1c5a99be","line":181,"range":{"start_line":181,"start_character":8,"end_line":181,"end_character":14},"in_reply_to":"f1acef52_d8adec7e","updated":"2024-11-25 08:54:03.000000000","message":"Done","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8228d3bd42e6185737dd041e4262aa0bf8d3393c","unresolved":true,"context_lines":[{"line_number":188,"context_line":"            header[\u0027x-rpchost\u0027] \u003d [address]"},{"line_number":189,"context_line":"            header[\u0027x-rpchost-port\u0027] \u003d [str(port)]"},{"line_number":190,"context_line":"        else:"},{"line_number":191,"context_line":"            # send it directly to the endpoint otherwise."},{"line_number":192,"context_line":"            if enable_ssl:"},{"line_number":193,"context_line":"                url_format \u003d \u0027https://{host:s}:{port:d}/healthcheck\u0027"},{"line_number":194,"context_line":"            else:"},{"line_number":195,"context_line":"                url_format \u003d \u0027http://{host:s}:{port:d}/healthcheck\u0027"},{"line_number":196,"context_line":"            url \u003d url_format.format(host\u003daddress, port\u003dport)"},{"line_number":197,"context_line":"        http_check \u003d consul.Check.http(url,"},{"line_number":198,"context_line":"                                       str(self.check_interval) + \u0027s\u0027,"},{"line_number":199,"context_line":"                                       str(self.check_timeout) + \u0027s\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"f224660a_124f0345","line":196,"range":{"start_line":191,"start_character":0,"end_line":196,"end_character":60},"updated":"2024-11-23 06:03:22.000000000","message":"You can further simplify this\n\n```\nproto \u003d \u0027https\u0027 if enable_ssl else \u0027http\u0027\nurl \u003d f\u0027{proto:s}://{host:s}:{port:d}/healthcheck\u0027\n```","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"a30e21dbb4470e89273f660b96616c6b9b74ab79","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            header[\u0027x-rpchost\u0027] \u003d [address]"},{"line_number":189,"context_line":"            header[\u0027x-rpchost-port\u0027] \u003d [str(port)]"},{"line_number":190,"context_line":"        else:"},{"line_number":191,"context_line":"            # send it directly to the endpoint otherwise."},{"line_number":192,"context_line":"            if enable_ssl:"},{"line_number":193,"context_line":"                url_format \u003d \u0027https://{host:s}:{port:d}/healthcheck\u0027"},{"line_number":194,"context_line":"            else:"},{"line_number":195,"context_line":"                url_format \u003d \u0027http://{host:s}:{port:d}/healthcheck\u0027"},{"line_number":196,"context_line":"            url \u003d url_format.format(host\u003daddress, port\u003dport)"},{"line_number":197,"context_line":"        http_check \u003d consul.Check.http(url,"},{"line_number":198,"context_line":"                                       str(self.check_interval) + \u0027s\u0027,"},{"line_number":199,"context_line":"                                       str(self.check_timeout) + \u0027s\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"7ed0c441_ea403461","line":196,"range":{"start_line":191,"start_character":0,"end_line":196,"end_character":60},"in_reply_to":"f224660a_124f0345","updated":"2024-11-25 08:54:03.000000000","message":"Done","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8228d3bd42e6185737dd041e4262aa0bf8d3393c","unresolved":true,"context_lines":[{"line_number":221,"context_line":"        if is_registered:"},{"line_number":222,"context_line":"            LOG.info(\"Registered health check for %(service_id)s on Consul\" %"},{"line_number":223,"context_line":"                     {\u0027service_id\u0027: service_id})"},{"line_number":224,"context_line":"        else:"},{"line_number":225,"context_line":"            LOG.warning(\"Check register API returned False without raising\""},{"line_number":226,"context_line":"                        \"exceptions: name\u003d%(name)s, \""},{"line_number":227,"context_line":"                        \"service_id\u003d%(service_id)s. There might be some \""},{"line_number":228,"context_line":"                        \"unexpected behaviors\" %"},{"line_number":229,"context_line":"                        {\u0027name\u0027: check_name, \u0027service_id\u0027: service_id})"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def deregister_service(self, service_id):"},{"line_number":232,"context_line":"        \"\"\"Deregister a service from Consul.\"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"fab1d6d2_d7a2a486","line":229,"range":{"start_line":224,"start_character":0,"end_line":229,"end_character":71},"updated":"2024-11-23 06:03:22.000000000","message":"Ditto. This should be an error.","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"a30e21dbb4470e89273f660b96616c6b9b74ab79","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        if is_registered:"},{"line_number":222,"context_line":"            LOG.info(\"Registered health check for %(service_id)s on Consul\" %"},{"line_number":223,"context_line":"                     {\u0027service_id\u0027: service_id})"},{"line_number":224,"context_line":"        else:"},{"line_number":225,"context_line":"            LOG.warning(\"Check register API returned False without raising\""},{"line_number":226,"context_line":"                        \"exceptions: name\u003d%(name)s, \""},{"line_number":227,"context_line":"                        \"service_id\u003d%(service_id)s. There might be some \""},{"line_number":228,"context_line":"                        \"unexpected behaviors\" %"},{"line_number":229,"context_line":"                        {\u0027name\u0027: check_name, \u0027service_id\u0027: service_id})"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def deregister_service(self, service_id):"},{"line_number":232,"context_line":"        \"\"\"Deregister a service from Consul.\"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"48624560_aef0af39","line":229,"range":{"start_line":224,"start_character":0,"end_line":229,"end_character":71},"in_reply_to":"fab1d6d2_d7a2a486","updated":"2024-11-25 08:54:03.000000000","message":"Done","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8228d3bd42e6185737dd041e4262aa0bf8d3393c","unresolved":true,"context_lines":[{"line_number":228,"context_line":"                        \"unexpected behaviors\" %"},{"line_number":229,"context_line":"                        {\u0027name\u0027: check_name, \u0027service_id\u0027: service_id})"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def deregister_service(self, service_id):"},{"line_number":232,"context_line":"        \"\"\"Deregister a service from Consul.\"\"\""},{"line_number":233,"context_line":"        try:"},{"line_number":234,"context_line":"            self.consul.agent.service.deregister(service_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"b5365c74_a0122662","line":231,"range":{"start_line":231,"start_character":8,"end_line":231,"end_character":26},"updated":"2024-11-23 06:03:22.000000000","message":"I know the naming comes from py-consul but I think unregister is a more common naming.","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"a30e21dbb4470e89273f660b96616c6b9b74ab79","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                        \"unexpected behaviors\" %"},{"line_number":229,"context_line":"                        {\u0027name\u0027: check_name, \u0027service_id\u0027: service_id})"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def deregister_service(self, service_id):"},{"line_number":232,"context_line":"        \"\"\"Deregister a service from Consul.\"\"\""},{"line_number":233,"context_line":"        try:"},{"line_number":234,"context_line":"            self.consul.agent.service.deregister(service_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"2cf3aa7d_6c0eb99d","line":231,"range":{"start_line":231,"start_character":8,"end_line":231,"end_character":26},"in_reply_to":"b5365c74_a0122662","updated":"2024-11-25 08:54:03.000000000","message":"\u003e I know the naming comes from py-consul but I think unregister is a more common naming.\n\nDone. I see \"unregister\" was used in the Oslo context, therefore let me change it to \"unregister\" here.","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8228d3bd42e6185737dd041e4262aa0bf8d3393c","unresolved":true,"context_lines":[{"line_number":231,"context_line":"    def deregister_service(self, service_id):"},{"line_number":232,"context_line":"        \"\"\"Deregister a service from Consul.\"\"\""},{"line_number":233,"context_line":"        try:"},{"line_number":234,"context_line":"            self.consul.agent.service.deregister(service_id)"},{"line_number":235,"context_line":"        except consul.NotFound as e:"},{"line_number":236,"context_line":"            msg \u003d (\"Service(%s) has already been removed and ignores this \""},{"line_number":237,"context_line":"                   \"exception: %s.\" % (service_id, e))"}],"source_content_type":"text/x-python","patch_set":16,"id":"bb8cf5d5_d6eaa1e6","line":234,"range":{"start_line":234,"start_character":38,"end_line":234,"end_character":48},"updated":"2024-11-23 06:03:22.000000000","message":"deregister returns True/False according to HTTP response code so the return value should be checked.\n\nAlso, can we remove the record from the cache ?","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"a30e21dbb4470e89273f660b96616c6b9b74ab79","unresolved":true,"context_lines":[{"line_number":231,"context_line":"    def deregister_service(self, service_id):"},{"line_number":232,"context_line":"        \"\"\"Deregister a service from Consul.\"\"\""},{"line_number":233,"context_line":"        try:"},{"line_number":234,"context_line":"            self.consul.agent.service.deregister(service_id)"},{"line_number":235,"context_line":"        except consul.NotFound as e:"},{"line_number":236,"context_line":"            msg \u003d (\"Service(%s) has already been removed and ignores this \""},{"line_number":237,"context_line":"                   \"exception: %s.\" % (service_id, e))"}],"source_content_type":"text/x-python","patch_set":16,"id":"dfcee25c_b1df5c96","line":234,"range":{"start_line":234,"start_character":38,"end_line":234,"end_character":48},"in_reply_to":"bb8cf5d5_d6eaa1e6","updated":"2024-11-25 08:54:03.000000000","message":"thanks for pointing it out. I just added the check for the return value.\n\n\u003e Also, can we remove the record from the cache?\n\nActually, the \"cache\" is used on the rpc client side to send rpc calls to rpc servers of other services. A client is unlikely to call its RPC server within the same OpenStack process.\n\nBut let me consider this.","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"627e1ef80dadfdda675a675cee25f4ccedba1471","unresolved":false,"context_lines":[{"line_number":231,"context_line":"    def deregister_service(self, service_id):"},{"line_number":232,"context_line":"        \"\"\"Deregister a service from Consul.\"\"\""},{"line_number":233,"context_line":"        try:"},{"line_number":234,"context_line":"            self.consul.agent.service.deregister(service_id)"},{"line_number":235,"context_line":"        except consul.NotFound as e:"},{"line_number":236,"context_line":"            msg \u003d (\"Service(%s) has already been removed and ignores this \""},{"line_number":237,"context_line":"                   \"exception: %s.\" % (service_id, e))"}],"source_content_type":"text/x-python","patch_set":16,"id":"98c318d9_8d242416","line":234,"range":{"start_line":234,"start_character":38,"end_line":234,"end_character":48},"in_reply_to":"dfcee25c_b1df5c96","updated":"2024-12-02 10:42:54.000000000","message":"Since the client can update the cache the next time when fetching from the consul, I think it is less crucial so I will leave it as-is for now and improve it later.\nplease let me know if it is ok.","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8228d3bd42e6185737dd041e4262aa0bf8d3393c","unresolved":true,"context_lines":[{"line_number":256,"context_line":"                result \u003d list(self.cached_services[consul_svc].values())"},{"line_number":257,"context_line":"        return result"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def _update_cache(self, consul_svc, new_service_list):"},{"line_number":260,"context_line":"        \"\"\"Update the cache for the given service."},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        Updates the cache for all the service entries of"}],"source_content_type":"text/x-python","patch_set":16,"id":"8e2ebdad_f617b45e","line":259,"range":{"start_line":259,"start_character":8,"end_line":259,"end_character":21},"updated":"2024-11-23 06:03:22.000000000","message":"This should also delete the service which no longer exists in new_service_list from the cache.","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"a30e21dbb4470e89273f660b96616c6b9b74ab79","unresolved":true,"context_lines":[{"line_number":256,"context_line":"                result \u003d list(self.cached_services[consul_svc].values())"},{"line_number":257,"context_line":"        return result"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def _update_cache(self, consul_svc, new_service_list):"},{"line_number":260,"context_line":"        \"\"\"Update the cache for the given service."},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        Updates the cache for all the service entries of"}],"source_content_type":"text/x-python","patch_set":16,"id":"e00418d3_d4c5478f","line":259,"range":{"start_line":259,"start_character":8,"end_line":259,"end_character":21},"in_reply_to":"8e2ebdad_f617b45e","updated":"2024-11-25 08:54:03.000000000","message":"Thanks for pointing it out! let me re-consider the entire caching strategy.","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"627e1ef80dadfdda675a675cee25f4ccedba1471","unresolved":false,"context_lines":[{"line_number":256,"context_line":"                result \u003d list(self.cached_services[consul_svc].values())"},{"line_number":257,"context_line":"        return result"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def _update_cache(self, consul_svc, new_service_list):"},{"line_number":260,"context_line":"        \"\"\"Update the cache for the given service."},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        Updates the cache for all the service entries of"}],"source_content_type":"text/x-python","patch_set":16,"id":"1c5db2a4_22d6d4af","line":259,"range":{"start_line":259,"start_character":8,"end_line":259,"end_character":21},"in_reply_to":"e00418d3_d4c5478f","updated":"2024-12-02 10:42:54.000000000","message":"The new algorithm works like below:\n```\nStart\n  |\n  v\n\nIs the server specified?\n  |\n  +--\u003e No\n  |     |\n  |     v\n  |   Clear cached_services[consul_svc]\n  |     |\n  |     v\n  |   Update the cache for all servers.\n  |\n  +--\u003e Yes\n        |\n        v\nIs new_service_list empty?\n        |\n        +--\u003e Yes\n        |     |\n        |     v\n        |   Clear cached_services[consul_svc][server]\n        |\n        +--\u003e No\n              |\n              v\n           Update the cache for the specified server\n```","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8228d3bd42e6185737dd041e4262aa0bf8d3393c","unresolved":true,"context_lines":[{"line_number":321,"context_line":"                    result \u003d self._get_service_list_across_dc("},{"line_number":322,"context_line":"                        consul_svc, server)"},{"line_number":323,"context_line":"                else:"},{"line_number":324,"context_line":"                    result \u003d self._get_service_list("},{"line_number":325,"context_line":"                        consul_svc, server)"},{"line_number":326,"context_line":"                if len(result) \u003d\u003d 0:"},{"line_number":327,"context_line":"                    # If no result returned from Consul, we give a try with the"}],"source_content_type":"text/x-python","patch_set":16,"id":"f9aeeef2_a00ef985","line":324,"range":{"start_line":324,"start_character":34,"end_line":324,"end_character":51},"updated":"2024-11-23 06:03:22.000000000","message":"So this internally falls back to the other dc, right ? I believe that is an unexpected behavior when cross_dc is explicitly passed.","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"627e1ef80dadfdda675a675cee25f4ccedba1471","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                    result \u003d self._get_service_list_across_dc("},{"line_number":322,"context_line":"                        consul_svc, server)"},{"line_number":323,"context_line":"                else:"},{"line_number":324,"context_line":"                    result \u003d self._get_service_list("},{"line_number":325,"context_line":"                        consul_svc, server)"},{"line_number":326,"context_line":"                if len(result) \u003d\u003d 0:"},{"line_number":327,"context_line":"                    # If no result returned from Consul, we give a try with the"}],"source_content_type":"text/x-python","patch_set":16,"id":"b3e3d8b0_84e4794d","line":324,"range":{"start_line":324,"start_character":34,"end_line":324,"end_character":51},"in_reply_to":"8f386f64_36f7b10a","updated":"2024-12-02 10:42:54.000000000","message":"Done","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"f575ccb713a78e2ed69cb82a2225778dbb4f1772","unresolved":true,"context_lines":[{"line_number":321,"context_line":"                    result \u003d self._get_service_list_across_dc("},{"line_number":322,"context_line":"                        consul_svc, server)"},{"line_number":323,"context_line":"                else:"},{"line_number":324,"context_line":"                    result \u003d self._get_service_list("},{"line_number":325,"context_line":"                        consul_svc, server)"},{"line_number":326,"context_line":"                if len(result) \u003d\u003d 0:"},{"line_number":327,"context_line":"                    # If no result returned from Consul, we give a try with the"}],"source_content_type":"text/x-python","patch_set":16,"id":"8f386f64_36f7b10a","line":324,"range":{"start_line":324,"start_character":34,"end_line":324,"end_character":51},"in_reply_to":"f9aeeef2_a00ef985","updated":"2024-11-29 08:37:12.000000000","message":"You are right. it falls back to other DCs internally as a backup and violates the semantics of `cross_dc` if it is explicitly passed.\n\nI plan to completely remove this flag since there are hardly any scenarios where it\u0027s needed.","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8228d3bd42e6185737dd041e4262aa0bf8d3393c","unresolved":true,"context_lines":[{"line_number":358,"context_line":"                # Cache miss, then try fetching from consul."},{"line_number":359,"context_line":"                # Since we already know there is no cache for this consul_svc"},{"line_number":360,"context_line":"                # if ConsulAPIException happens, there is no need to try"},{"line_number":361,"context_line":"                # covering using cache again."},{"line_number":362,"context_line":"                result \u003d self._get_service_list("},{"line_number":363,"context_line":"                    consul_svc, server)"},{"line_number":364,"context_line":"                self._update_cache(consul_svc, result)"},{"line_number":365,"context_line":"                self.last_requested \u003d now"},{"line_number":366,"context_line":"            else:"},{"line_number":367,"context_line":"                # Use cache."}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa637f0_109d2e5f","line":364,"range":{"start_line":361,"start_character":45,"end_line":364,"end_character":54},"updated":"2024-11-23 06:03:22.000000000","message":"Why isn\u0027t this be consistent with the logic for must_fetch_from_consul\u003dTrue ?","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"f575ccb713a78e2ed69cb82a2225778dbb4f1772","unresolved":true,"context_lines":[{"line_number":358,"context_line":"                # Cache miss, then try fetching from consul."},{"line_number":359,"context_line":"                # Since we already know there is no cache for this consul_svc"},{"line_number":360,"context_line":"                # if ConsulAPIException happens, there is no need to try"},{"line_number":361,"context_line":"                # covering using cache again."},{"line_number":362,"context_line":"                result \u003d self._get_service_list("},{"line_number":363,"context_line":"                    consul_svc, server)"},{"line_number":364,"context_line":"                self._update_cache(consul_svc, result)"},{"line_number":365,"context_line":"                self.last_requested \u003d now"},{"line_number":366,"context_line":"            else:"},{"line_number":367,"context_line":"                # Use cache."}],"source_content_type":"text/x-python","patch_set":16,"id":"49ec5c59_681defb2","line":364,"range":{"start_line":361,"start_character":45,"end_line":364,"end_character":54},"in_reply_to":"3fa637f0_109d2e5f","updated":"2024-11-29 08:37:12.000000000","message":"This is a fallback to avoid no cache found. But I agree that the logic and naming here is a little confusing. I am refactoring it and going to submit a new version.","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"627e1ef80dadfdda675a675cee25f4ccedba1471","unresolved":false,"context_lines":[{"line_number":358,"context_line":"                # Cache miss, then try fetching from consul."},{"line_number":359,"context_line":"                # Since we already know there is no cache for this consul_svc"},{"line_number":360,"context_line":"                # if ConsulAPIException happens, there is no need to try"},{"line_number":361,"context_line":"                # covering using cache again."},{"line_number":362,"context_line":"                result \u003d self._get_service_list("},{"line_number":363,"context_line":"                    consul_svc, server)"},{"line_number":364,"context_line":"                self._update_cache(consul_svc, result)"},{"line_number":365,"context_line":"                self.last_requested \u003d now"},{"line_number":366,"context_line":"            else:"},{"line_number":367,"context_line":"                # Use cache."}],"source_content_type":"text/x-python","patch_set":16,"id":"7a9260e3_f2961eb6","line":364,"range":{"start_line":361,"start_character":45,"end_line":364,"end_character":54},"in_reply_to":"49ec5c59_681defb2","updated":"2024-12-02 10:42:54.000000000","message":"I\u0027ve revised the caching mechanism. The logic works as below.\nPlease let me know if any other questions or concerns.\n\n```\nStart\n  |\n  v\nForce Revalidate OR Cache Expired?\n  |\n  +-------------------+\n  |                   |\n Yes                 No\n  |                   |\n  v                   v\nFetch from Consul   Use Cached Services\n  |                   |\n  v                   v\nSuccess?           Return Cached Services\n  |\n  +-------------------+\n  |                   |\n Yes                 No\n  |                   |\n  v                   v\nUpdate Cache       ConsulAPIException?\n  |                   |\n  v                   v\nReturn Result     Force Revalidate?\n                      |\n                      +-------------------+\n                      |                   |\n                     Yes                 No\n                      |                   |\n                      v                   v\n                Raise Exception    Use Cached Services\n                                        |\n                                        v\n                             Cached Services Available?\n                                        |\n                                        +-------------------+\n                                        |                   |\n                                       Yes                 No\n                                        |                   |\n                                        v                   v\n                                Return Cached         Raise Exception\n                                Services\n```","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8228d3bd42e6185737dd041e4262aa0bf8d3393c","unresolved":true,"context_lines":[{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        if reverse_proxy_endpoint:"},{"line_number":470,"context_line":"            host \u003d reverse_proxy_endpoint"},{"line_number":471,"context_line":"        else:"},{"line_number":472,"context_line":"            if enable_ssl:"},{"line_number":473,"context_line":"                host \u003d \u0027https://{}:{}\u0027.format(service_entry[\u0027Address\u0027],"},{"line_number":474,"context_line":"                                              service_entry[\u0027Port\u0027])"},{"line_number":475,"context_line":"            else:"},{"line_number":476,"context_line":"                host \u003d \u0027http://{}:{}\u0027.format(service_entry[\u0027Address\u0027],"},{"line_number":477,"context_line":"                                             service_entry[\u0027Port\u0027])"},{"line_number":478,"context_line":"        return service_broker.Service(host, reverse_proxy_endpoint,"},{"line_number":479,"context_line":"                                      rpchost, rpchost_port)"},{"line_number":480,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"555d3385_2a89263b","line":477,"range":{"start_line":471,"start_character":13,"end_line":477,"end_character":67},"updated":"2024-11-23 06:03:22.000000000","message":"Ditto. Defining \u0027proto\u0027 var can simplify this further.","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"a30e21dbb4470e89273f660b96616c6b9b74ab79","unresolved":false,"context_lines":[{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        if reverse_proxy_endpoint:"},{"line_number":470,"context_line":"            host \u003d reverse_proxy_endpoint"},{"line_number":471,"context_line":"        else:"},{"line_number":472,"context_line":"            if enable_ssl:"},{"line_number":473,"context_line":"                host \u003d \u0027https://{}:{}\u0027.format(service_entry[\u0027Address\u0027],"},{"line_number":474,"context_line":"                                              service_entry[\u0027Port\u0027])"},{"line_number":475,"context_line":"            else:"},{"line_number":476,"context_line":"                host \u003d \u0027http://{}:{}\u0027.format(service_entry[\u0027Address\u0027],"},{"line_number":477,"context_line":"                                             service_entry[\u0027Port\u0027])"},{"line_number":478,"context_line":"        return service_broker.Service(host, reverse_proxy_endpoint,"},{"line_number":479,"context_line":"                                      rpchost, rpchost_port)"},{"line_number":480,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"710303a1_d958deea","line":477,"range":{"start_line":471,"start_character":13,"end_line":477,"end_character":67},"in_reply_to":"555d3385_2a89263b","updated":"2024-11-25 08:54:03.000000000","message":"Done","commit_id":"8480a283131843bddc07489c06b16f4d5cb565c0"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8d4e1ea8bc2a17ec143f4d475713baf4245b6d37","unresolved":true,"context_lines":[{"line_number":146,"context_line":"            service_id, address, port, enable_ssl, reverse_proxy_endpoint)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def _register_consul_service(self, name, service_id, address, port, tags,"},{"line_number":149,"context_line":"                                 enable_ssl, reverse_proxy_endpoint):"},{"line_number":150,"context_line":"        metadata \u003d {"},{"line_number":151,"context_line":"            \u0027enable_ssl\u0027: str(enable_ssl),"},{"line_number":152,"context_line":"            \u0027reverse_proxy_endpoint\u0027: reverse_proxy_endpoint"}],"source_content_type":"text/x-python","patch_set":28,"id":"15d636e5_5f34cc99","line":149,"range":{"start_line":149,"start_character":33,"end_line":149,"end_character":67},"updated":"2025-06-03 06:10:52.000000000","message":"(This can be done in a follow-up) but can we keep the consistent argument order between register_service and _register_consul_service ?","commit_id":"40ec233e64f69b1354b4b9b31401f461b365a2ef"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"7a4364e18e16ebd4c19728c61a6ce6299a938913","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            service_id, address, port, enable_ssl, reverse_proxy_endpoint)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def _register_consul_service(self, name, service_id, address, port, tags,"},{"line_number":149,"context_line":"                                 enable_ssl, reverse_proxy_endpoint):"},{"line_number":150,"context_line":"        metadata \u003d {"},{"line_number":151,"context_line":"            \u0027enable_ssl\u0027: str(enable_ssl),"},{"line_number":152,"context_line":"            \u0027reverse_proxy_endpoint\u0027: reverse_proxy_endpoint"}],"source_content_type":"text/x-python","patch_set":28,"id":"6b3df1cf_44830f25","line":149,"range":{"start_line":149,"start_character":33,"end_line":149,"end_character":67},"in_reply_to":"15d636e5_5f34cc99","updated":"2025-07-29 09:14:59.000000000","message":"Sorry for my late reply and thanks for pointing it out!\nI\u0027ve fixed the inconsistency in the argument order. Please help check again.","commit_id":"40ec233e64f69b1354b4b9b31401f461b365a2ef"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8d4e1ea8bc2a17ec143f4d475713baf4245b6d37","unresolved":true,"context_lines":[{"line_number":236,"context_line":"        except Exception as e:"},{"line_number":237,"context_line":"            msg \u003d (\"Failed to unregister %s and ignores the following \""},{"line_number":238,"context_line":"                   \"exception: %s\" % (service_id, e))"},{"line_number":239,"context_line":"            LOG.warning(msg)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        if is_unregistered:"},{"line_number":242,"context_line":"            LOG.info(\"Unregistered %s from Consul\" % service_id)"}],"source_content_type":"text/x-python","patch_set":28,"id":"0fba88cf_f6275b47","line":239,"range":{"start_line":239,"start_character":12,"end_line":239,"end_character":28},"updated":"2025-06-03 06:10:52.000000000","message":"I wonder if we should return here, to avoid the subsequent warning stating the method returned False.","commit_id":"40ec233e64f69b1354b4b9b31401f461b365a2ef"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"7a4364e18e16ebd4c19728c61a6ce6299a938913","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        except Exception as e:"},{"line_number":237,"context_line":"            msg \u003d (\"Failed to unregister %s and ignores the following \""},{"line_number":238,"context_line":"                   \"exception: %s\" % (service_id, e))"},{"line_number":239,"context_line":"            LOG.warning(msg)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        if is_unregistered:"},{"line_number":242,"context_line":"            LOG.info(\"Unregistered %s from Consul\" % service_id)"}],"source_content_type":"text/x-python","patch_set":28,"id":"877f6775_5f6eac23","line":239,"range":{"start_line":239,"start_character":12,"end_line":239,"end_character":28},"in_reply_to":"0fba88cf_f6275b47","updated":"2025-07-29 09:14:59.000000000","message":"Thanks! That makes sense to me. I\u0027ve added return here and used \"error\" instead of \"warning\" for logging.","commit_id":"40ec233e64f69b1354b4b9b31401f461b365a2ef"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4b560503b98494cac2e7773c7e2f3f21bd17d8f4","unresolved":true,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        if is_registered:"},{"line_number":125,"context_line":"            LOG.info(\"Registered %(service_id)s for %(name)s on Consul\" %"},{"line_number":126,"context_line":"                     {\u0027service_id\u0027: service_id, \u0027name\u0027: name})"},{"line_number":127,"context_line":"        else:"},{"line_number":128,"context_line":"            LOG.error(\"Service register API returned False: name\u003d%(name)s, \""},{"line_number":129,"context_line":"                      \"service_id\u003d%(service_id)s. There might be some \""},{"line_number":130,"context_line":"                      \"unexpected behaviors\" %"},{"line_number":131,"context_line":"                      {\u0027name\u0027: name, \u0027service_id\u0027: service_id})"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def _register_http_check(self, service_id, address, port,"},{"line_number":134,"context_line":"                             reverse_proxy_endpoint, enable_ssl):"}],"source_content_type":"text/x-python","patch_set":31,"id":"29ff6578_32186342","line":131,"range":{"start_line":126,"start_character":62,"end_line":131,"end_character":63},"updated":"2025-09-27 10:13:28.000000000","message":"I\u0027m not still fully convinced that this handling is safe. Do we know when the register methods returns false ? If we expect something wrong then this should be a hard failure.","commit_id":"44db5e7a62a8621d7c0da0fb265ed8873114dd37"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"e846757386e299912481ebf49172f7da56a93df6","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        if is_registered:"},{"line_number":125,"context_line":"            LOG.info(\"Registered %(service_id)s for %(name)s on Consul\" %"},{"line_number":126,"context_line":"                     {\u0027service_id\u0027: service_id, \u0027name\u0027: name})"},{"line_number":127,"context_line":"        else:"},{"line_number":128,"context_line":"            LOG.error(\"Service register API returned False: name\u003d%(name)s, \""},{"line_number":129,"context_line":"                      \"service_id\u003d%(service_id)s. There might be some \""},{"line_number":130,"context_line":"                      \"unexpected behaviors\" %"},{"line_number":131,"context_line":"                      {\u0027name\u0027: name, \u0027service_id\u0027: service_id})"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def _register_http_check(self, service_id, address, port,"},{"line_number":134,"context_line":"                             reverse_proxy_endpoint, enable_ssl):"}],"source_content_type":"text/x-python","patch_set":31,"id":"8d618732_779b7a5f","line":131,"range":{"start_line":126,"start_character":62,"end_line":131,"end_character":63},"in_reply_to":"29ff6578_32186342","updated":"2025-12-26 08:56:09.000000000","message":"In the Consul library code:\n```\n    @classmethod\n    def bool(klass):\n        # returns True on successful response\n        def cb(response):\n            CB._status(response)\n            return response.code \u003d\u003d 200\n\n        return cb\n```\nso it returns False for any non-200 responses. However, it doesn\u0027t give any reaons why non-200 is returned. \n\nAnd i agree with your idea that this should be a hard failure, so i fixed it.","commit_id":"44db5e7a62a8621d7c0da0fb265ed8873114dd37"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4b560503b98494cac2e7773c7e2f3f21bd17d8f4","unresolved":true,"context_lines":[{"line_number":250,"context_line":"        :type new_service_list: dict"},{"line_number":251,"context_line":"        :param server: The server name. e.g. hostname1."},{"line_number":252,"context_line":"        :type server: str or None"},{"line_number":253,"context_line":"        \"\"\""},{"line_number":254,"context_line":"        if consul_svc not in self.cached_services:"},{"line_number":255,"context_line":"            self.cached_services[consul_svc] \u003d {}"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if server is None:"},{"line_number":258,"context_line":"            # if server is not specified, reset the cache for all servers."}],"source_content_type":"text/x-python","patch_set":31,"id":"8f7ccd7a_6e9bc001","line":255,"range":{"start_line":253,"start_character":11,"end_line":255,"end_character":49},"updated":"2025-09-27 10:13:28.000000000","message":"Maybe you can use `self.cached_services.set_default(consul_svc, {})`","commit_id":"44db5e7a62a8621d7c0da0fb265ed8873114dd37"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"e846757386e299912481ebf49172f7da56a93df6","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        :type new_service_list: dict"},{"line_number":251,"context_line":"        :param server: The server name. e.g. hostname1."},{"line_number":252,"context_line":"        :type server: str or None"},{"line_number":253,"context_line":"        \"\"\""},{"line_number":254,"context_line":"        if consul_svc not in self.cached_services:"},{"line_number":255,"context_line":"            self.cached_services[consul_svc] \u003d {}"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if server is None:"},{"line_number":258,"context_line":"            # if server is not specified, reset the cache for all servers."}],"source_content_type":"text/x-python","patch_set":31,"id":"37ac1f7c_5998690a","line":255,"range":{"start_line":253,"start_character":11,"end_line":255,"end_character":49},"in_reply_to":"8f7ccd7a_6e9bc001","updated":"2025-12-26 08:56:09.000000000","message":"fixed. thanks","commit_id":"44db5e7a62a8621d7c0da0fb265ed8873114dd37"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4b560503b98494cac2e7773c7e2f3f21bd17d8f4","unresolved":true,"context_lines":[{"line_number":306,"context_line":"                LOG.error(\"Force revalidate is set, raise the exception\")"},{"line_number":307,"context_line":"                raise"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"            # Otherwise try fetching the service list from the local cache."},{"line_number":310,"context_line":"            result \u003d self._get_cached_services("},{"line_number":311,"context_line":"                consul_svc, server)"},{"line_number":312,"context_line":"            LOG.info(\"Unable to access to Consul, try using \""},{"line_number":313,"context_line":"                     \"the cached service list\")"},{"line_number":314,"context_line":"            if len(result) \u003d\u003d 0:"},{"line_number":315,"context_line":"                # If there is no cached service list, raise"},{"line_number":316,"context_line":"                # ConsulAPIException again for the caller to handle."},{"line_number":317,"context_line":"                LOG.error(\"No cached service list found for %s\", consul_svc)"},{"line_number":318,"context_line":"                raise"},{"line_number":319,"context_line":"        return result"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def get_services(self, consul_svc, server,"}],"source_content_type":"text/x-python","patch_set":31,"id":"33ae2c13_3b9ae901","line":318,"range":{"start_line":309,"start_character":0,"end_line":318,"end_character":21},"updated":"2025-09-27 10:13:28.000000000","message":"IMO this fallback should be removed, or at least configurable, to avoid silent fallback which ignores cache age.","commit_id":"44db5e7a62a8621d7c0da0fb265ed8873114dd37"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"e846757386e299912481ebf49172f7da56a93df6","unresolved":false,"context_lines":[{"line_number":306,"context_line":"                LOG.error(\"Force revalidate is set, raise the exception\")"},{"line_number":307,"context_line":"                raise"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"            # Otherwise try fetching the service list from the local cache."},{"line_number":310,"context_line":"            result \u003d self._get_cached_services("},{"line_number":311,"context_line":"                consul_svc, server)"},{"line_number":312,"context_line":"            LOG.info(\"Unable to access to Consul, try using \""},{"line_number":313,"context_line":"                     \"the cached service list\")"},{"line_number":314,"context_line":"            if len(result) \u003d\u003d 0:"},{"line_number":315,"context_line":"                # If there is no cached service list, raise"},{"line_number":316,"context_line":"                # ConsulAPIException again for the caller to handle."},{"line_number":317,"context_line":"                LOG.error(\"No cached service list found for %s\", consul_svc)"},{"line_number":318,"context_line":"                raise"},{"line_number":319,"context_line":"        return result"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def get_services(self, consul_svc, server,"}],"source_content_type":"text/x-python","patch_set":31,"id":"99764bb4_f250568f","line":318,"range":{"start_line":309,"start_character":0,"end_line":318,"end_character":21},"in_reply_to":"33ae2c13_3b9ae901","updated":"2025-12-26 08:56:09.000000000","message":"That’s a nice point. For simplicity, I’ll remove this part for now to avoid a silent fallback.\nIn the future, I’ll add a proper fallback mechanism with configure options.","commit_id":"44db5e7a62a8621d7c0da0fb265ed8873114dd37"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4b560503b98494cac2e7773c7e2f3f21bd17d8f4","unresolved":true,"context_lines":[{"line_number":344,"context_line":"            random.shuffle(other_dcs)"},{"line_number":345,"context_line":"            last_exception \u003d None"},{"line_number":346,"context_line":"            for dc in other_dcs:"},{"line_number":347,"context_line":"                LOG.debug(\"Trying to get service list from other DC: %s\", dc)"},{"line_number":348,"context_line":"                try:"},{"line_number":349,"context_line":"                    service_list \u003d self._fetch_services_by_dc(consul_svc,"},{"line_number":350,"context_line":"                                                              dc, server)"}],"source_content_type":"text/x-python","patch_set":31,"id":"8e6e9878_02ddbfba","line":347,"range":{"start_line":347,"start_character":59,"end_line":347,"end_character":64},"updated":"2025-09-27 10:13:28.000000000","message":"another","commit_id":"44db5e7a62a8621d7c0da0fb265ed8873114dd37"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"e846757386e299912481ebf49172f7da56a93df6","unresolved":false,"context_lines":[{"line_number":344,"context_line":"            random.shuffle(other_dcs)"},{"line_number":345,"context_line":"            last_exception \u003d None"},{"line_number":346,"context_line":"            for dc in other_dcs:"},{"line_number":347,"context_line":"                LOG.debug(\"Trying to get service list from other DC: %s\", dc)"},{"line_number":348,"context_line":"                try:"},{"line_number":349,"context_line":"                    service_list \u003d self._fetch_services_by_dc(consul_svc,"},{"line_number":350,"context_line":"                                                              dc, server)"}],"source_content_type":"text/x-python","patch_set":31,"id":"12e96ffa_589802e1","line":347,"range":{"start_line":347,"start_character":59,"end_line":347,"end_character":64},"in_reply_to":"8e6e9878_02ddbfba","updated":"2025-12-26 08:56:09.000000000","message":"fixed","commit_id":"44db5e7a62a8621d7c0da0fb265ed8873114dd37"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4b560503b98494cac2e7773c7e2f3f21bd17d8f4","unresolved":true,"context_lines":[{"line_number":365,"context_line":"        # respect the result from Consul."},{"line_number":366,"context_line":"        return []"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    def _fetch_services_across_dc(self, consul_svc, server):"},{"line_number":369,"context_line":"        \"\"\"Get all the services across all datacenters."},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":31,"id":"3719a561_8270bc9a","line":368,"range":{"start_line":368,"start_character":8,"end_line":368,"end_character":33},"updated":"2025-09-27 10:13:28.000000000","message":"Where is this used ?","commit_id":"44db5e7a62a8621d7c0da0fb265ed8873114dd37"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"e846757386e299912481ebf49172f7da56a93df6","unresolved":true,"context_lines":[{"line_number":365,"context_line":"        # respect the result from Consul."},{"line_number":366,"context_line":"        return []"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    def _fetch_services_across_dc(self, consul_svc, server):"},{"line_number":369,"context_line":"        \"\"\"Get all the services across all datacenters."},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":31,"id":"f7291109_55841789","line":368,"range":{"start_line":368,"start_character":8,"end_line":368,"end_character":33},"in_reply_to":"3719a561_8270bc9a","updated":"2025-12-26 08:56:09.000000000","message":"This is never used yet. I kept it here as it could be handy in the future. If confusing, I can remove it for now.","commit_id":"44db5e7a62a8621d7c0da0fb265ed8873114dd37"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"25342430e0ec25b3c66b0693c7a26ac2b4f1f687","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        # respect the result from Consul."},{"line_number":366,"context_line":"        return []"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    def _fetch_services_across_dc(self, consul_svc, server):"},{"line_number":369,"context_line":"        \"\"\"Get all the services across all datacenters."},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":31,"id":"3cb06c05_8abc7ca8","line":368,"range":{"start_line":368,"start_character":8,"end_line":368,"end_character":33},"in_reply_to":"9e437458_3bd63da4","updated":"2026-01-06 08:50:06.000000000","message":"Thank you for the suggestions! i removed this from the current patch.\n\nI also noticed that this function is actually used in the later patch in the chain that supports “fanout” [1]. So, I added it back there with proper tests covered.\n\n[1] https://review.opendev.org/c/openstack/oslo.messaging/+/938536/21/oslo_messaging/_drivers/http_driver/consul_operator.py#357","commit_id":"44db5e7a62a8621d7c0da0fb265ed8873114dd37"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5a4902a64cc7374c6972f8a2f700baa95fb7d5bd","unresolved":true,"context_lines":[{"line_number":365,"context_line":"        # respect the result from Consul."},{"line_number":366,"context_line":"        return []"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    def _fetch_services_across_dc(self, consul_svc, server):"},{"line_number":369,"context_line":"        \"\"\"Get all the services across all datacenters."},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":31,"id":"9e437458_3bd63da4","line":368,"range":{"start_line":368,"start_character":8,"end_line":368,"end_character":33},"in_reply_to":"f7291109_55841789","updated":"2026-01-05 14:31:48.000000000","message":"If this is unused and untested, then please remove it. This is private and may not be used by anything.","commit_id":"44db5e7a62a8621d7c0da0fb265ed8873114dd37"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"51196a5ce7483766a58f75af8a292b7b3b4c406e","unresolved":true,"context_lines":[{"line_number":145,"context_line":"        else:"},{"line_number":146,"context_line":"            # send it directly to the endpoint otherwise."},{"line_number":147,"context_line":"            proto \u003d \u0027https\u0027 if enable_ssl else \u0027http\u0027"},{"line_number":148,"context_line":"            url \u003d f\u0027{proto:s}://{address:s}:{port:d}/healthcheck\u0027"},{"line_number":149,"context_line":"        http_check \u003d consul.Check.http(url,"},{"line_number":150,"context_line":"                                       str(self.check_interval) + \u0027s\u0027,"},{"line_number":151,"context_line":"                                       str(self.check_timeout) + \u0027s\u0027,"}],"source_content_type":"text/x-python","patch_set":37,"id":"b0599911_775f1eea","line":148,"range":{"start_line":148,"start_character":33,"end_line":148,"end_character":40},"updated":"2026-01-19 15:30:18.000000000","message":"I guess we should quote address if it is an IPv6 address ? If so then please use oslo_utils.netutils.escape_ipv6 .","commit_id":"3ed02c36cfa5a5fe4db165f1f26dab25cefce924"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"860463ba8e7a981d7feb290eca1488d4540daa42","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        else:"},{"line_number":146,"context_line":"            # send it directly to the endpoint otherwise."},{"line_number":147,"context_line":"            proto \u003d \u0027https\u0027 if enable_ssl else \u0027http\u0027"},{"line_number":148,"context_line":"            url \u003d f\u0027{proto:s}://{address:s}:{port:d}/healthcheck\u0027"},{"line_number":149,"context_line":"        http_check \u003d consul.Check.http(url,"},{"line_number":150,"context_line":"                                       str(self.check_interval) + \u0027s\u0027,"},{"line_number":151,"context_line":"                                       str(self.check_timeout) + \u0027s\u0027,"}],"source_content_type":"text/x-python","patch_set":37,"id":"150d250f_c28a4e21","line":148,"range":{"start_line":148,"start_character":33,"end_line":148,"end_character":40},"in_reply_to":"b0599911_775f1eea","updated":"2026-01-20 07:53:40.000000000","message":"Good catch! I completely overlooked IPv6 addresses. I’ve fixed it now.","commit_id":"3ed02c36cfa5a5fe4db165f1f26dab25cefce924"}],"requirements.txt":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a26d4d988d3f73f80902e44569f718c743b3f614","unresolved":true,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# metrics"},{"line_number":30,"context_line":"oslo.metrics\u003e\u003d0.2.1 # Apache-2.0"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# http driver"},{"line_number":33,"context_line":"python-consul2\u003c\u003d0.1.5 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":1,"id":"f1d8800d_d2ea7845","line":31,"updated":"2024-03-12 01:55:38.000000000","message":"please make this optional dependency (listed in setup.cfg).","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"43c0b7fc73ace80d2552208dfd71ff6c861dee11","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# metrics"},{"line_number":30,"context_line":"oslo.metrics\u003e\u003d0.2.1 # Apache-2.0"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# http driver"},{"line_number":33,"context_line":"python-consul2\u003c\u003d0.1.5 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":1,"id":"ee1c5155_e00abbf3","line":31,"in_reply_to":"f1d8800d_d2ea7845","updated":"2024-03-22 09:21:59.000000000","message":"Done","commit_id":"d369c78e774ed13e18413ca0e99345cb9e9ff5bb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a223ddd28f74b9416401e766e3aa92fcaf0f6938","unresolved":true,"context_lines":[{"line_number":32,"context_line":"oslo.metrics\u003e\u003d0.2.1 # Apache-2.0"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# http driver"},{"line_number":35,"context_line":"python-consul2\u003e\u003d0.1.5 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":14,"id":"05bb9cf5_a63d8392","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":34},"updated":"2024-11-12 12:50:15.000000000","message":"This should be removed from requirements, so that it is treated as an optional dependency.","commit_id":"b453991c852d8816f18668883c57bd08fdcd2cf5"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"9cb67b76a031725dbd6b58c0212fffaf561ae6c0","unresolved":false,"context_lines":[{"line_number":32,"context_line":"oslo.metrics\u003e\u003d0.2.1 # Apache-2.0"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# http driver"},{"line_number":35,"context_line":"python-consul2\u003e\u003d0.1.5 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":14,"id":"d7a38205_abaf28ad","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":34},"in_reply_to":"05bb9cf5_a63d8392","updated":"2024-11-13 03:06:53.000000000","message":"Thanks for pointing it out. I just removed it as suggested.","commit_id":"b453991c852d8816f18668883c57bd08fdcd2cf5"}],"setup.cfg":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6806026efe0e38334811611dc0a3f6358f0ec200","unresolved":true,"context_lines":[{"line_number":31,"context_line":"kafka \u003d"},{"line_number":32,"context_line":"    confluent-kafka\u003e\u003d1.3.0 # Apache-2.0"},{"line_number":33,"context_line":"http \u003d"},{"line_number":34,"context_line":"    python-consul2\u003c\u003d0.1.5 # Apache-2.0"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"[files]"},{"line_number":37,"context_line":"packages \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":4,"id":"ca519bb9_4ec9c9e8","line":34,"range":{"start_line":34,"start_character":4,"end_line":34,"end_character":18},"updated":"2024-03-15 11:18:20.000000000","message":"So I\u0027m now aware that even python-consul2[1] is inactive now. A new fork[2] was created but even that one is not updated for a while, either...\n\n[1] https://github.com/poppyred/python-consul2\n[2] https://github.com/criteo-forks/py-consul","commit_id":"f878bae9d54f121dc40ffad4c17fe203bb6ace76"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"e8202ef2593be8da1fc18d3ecaf6bfb3db1fc15c","unresolved":false,"context_lines":[{"line_number":31,"context_line":"kafka \u003d"},{"line_number":32,"context_line":"    confluent-kafka\u003e\u003d1.3.0 # Apache-2.0"},{"line_number":33,"context_line":"http \u003d"},{"line_number":34,"context_line":"    python-consul2\u003c\u003d0.1.5 # Apache-2.0"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"[files]"},{"line_number":37,"context_line":"packages \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":4,"id":"eae14f1d_28e9455d","line":34,"range":{"start_line":34,"start_character":4,"end_line":34,"end_character":18},"in_reply_to":"afb57821_d742f461","updated":"2024-11-11 05:51:37.000000000","message":"I see python-consul2 has been added to the global requirements. \nhttps://review.opendev.org/c/openstack/requirements/+/917828","commit_id":"f878bae9d54f121dc40ffad4c17fe203bb6ace76"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"bf0a8f157ba03803944467499794d3bf185e1614","unresolved":true,"context_lines":[{"line_number":31,"context_line":"kafka \u003d"},{"line_number":32,"context_line":"    confluent-kafka\u003e\u003d1.3.0 # Apache-2.0"},{"line_number":33,"context_line":"http \u003d"},{"line_number":34,"context_line":"    python-consul2\u003c\u003d0.1.5 # Apache-2.0"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"[files]"},{"line_number":37,"context_line":"packages \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":4,"id":"f566bf48_6c6298ee","line":34,"range":{"start_line":34,"start_character":4,"end_line":34,"end_character":18},"in_reply_to":"ca519bb9_4ec9c9e8","updated":"2024-03-22 09:28:27.000000000","message":"Ah I see. neither of these two repos is really active.\nI wonder if there is any concern if we use these libraries..","commit_id":"f878bae9d54f121dc40ffad4c17fe203bb6ace76"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"55562fbcf4a453a6568c0813c6eecbce699fd53a","unresolved":true,"context_lines":[{"line_number":31,"context_line":"kafka \u003d"},{"line_number":32,"context_line":"    confluent-kafka\u003e\u003d1.3.0 # Apache-2.0"},{"line_number":33,"context_line":"http \u003d"},{"line_number":34,"context_line":"    python-consul2\u003c\u003d0.1.5 # Apache-2.0"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"[files]"},{"line_number":37,"context_line":"packages \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":4,"id":"afb57821_d742f461","line":34,"range":{"start_line":34,"start_character":4,"end_line":34,"end_character":18},"in_reply_to":"f566bf48_6c6298ee","updated":"2024-03-26 01:14:18.000000000","message":"I found this library is listed on the consul\u0027s official site[1].\n- python-consul2 - Python client for the Consul HTTP API (currently maintained)\n\nIf it looks good, I will add it to global requirements. \n[1]https://developer.hashicorp.com/consul/api-docs/libraries-and-sdks","commit_id":"f878bae9d54f121dc40ffad4c17fe203bb6ace76"}],"test-requirements.txt":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"40335ada045c9d8c96ab265185aacc9fde5a8d75","unresolved":true,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"# for test_impl_kafka"},{"line_number":13,"context_line":"confluent-kafka\u003e\u003d1.3.0 # Apache-2.0"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# for test_impl_http"},{"line_number":16,"context_line":"python-consul2\u003e\u003d0.1.5 # Apache-2.0"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# when we can require tox\u003e\u003d 1.4, this can go into tox.ini:"},{"line_number":19,"context_line":"#  [testenv:cover]"}],"source_content_type":"text/plain","patch_set":9,"id":"e7c8b137_bf34c66d","line":16,"range":{"start_line":14,"start_character":0,"end_line":16,"end_character":34},"updated":"2024-07-05 06:29:13.000000000","message":"This should should be added to requirements.txt, because the real code import consul:\nhttps://review.opendev.org/c/openstack/oslo.messaging/+/912499/9/oslo_messaging/_drivers/http_driver/consul_operator.py@15","commit_id":"d06ac93054d0d850e544f9f600915e26b072227d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"e8202ef2593be8da1fc18d3ecaf6bfb3db1fc15c","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"# for test_impl_kafka"},{"line_number":13,"context_line":"confluent-kafka\u003e\u003d1.3.0 # Apache-2.0"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# for test_impl_http"},{"line_number":16,"context_line":"python-consul2\u003e\u003d0.1.5 # Apache-2.0"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# when we can require tox\u003e\u003d 1.4, this can go into tox.ini:"},{"line_number":19,"context_line":"#  [testenv:cover]"}],"source_content_type":"text/plain","patch_set":9,"id":"cd90bbde_06ce3c3e","line":16,"range":{"start_line":14,"start_character":0,"end_line":16,"end_character":34},"in_reply_to":"e7c8b137_bf34c66d","updated":"2024-11-11 05:51:37.000000000","message":"thank you for pointing it out. I just added it,","commit_id":"d06ac93054d0d850e544f9f600915e26b072227d"}]}
