)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"94a1f34a948df5a280ab253cbcf3fdad5bf4f164","unresolved":true,"context_lines":[{"line_number":20,"context_line":"between last heartbeat and current time is greater than provided"},{"line_number":21,"context_line":"time_threshold."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-bug: #1998906"},{"line_number":24,"context_line":"Change-Id: I0f153db7c8e12d246937dcb6fa664c09de85ccac"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"e83c7262_94db854f","line":23,"updated":"2023-09-19 09:27:32.000000000","message":"Can you add Related-Bug: #1761503","commit_id":"c027096fa2d83662c69cf2408132d17d0e28e311"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"7be07c867b55c28939cabbca04c8927e4215340d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"between last heartbeat and current time is greater than provided"},{"line_number":21,"context_line":"time_threshold."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-bug: #1998906"},{"line_number":24,"context_line":"Change-Id: I0f153db7c8e12d246937dcb6fa664c09de85ccac"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"2b07aad0_8a864b4b","line":23,"in_reply_to":"e83c7262_94db854f","updated":"2023-09-22 08:47:40.000000000","message":"Done","commit_id":"c027096fa2d83662c69cf2408132d17d0e28e311"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"f94ea78e4701f06f10809ab572b3f215fa37b726","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"15232847_400b611e","updated":"2022-12-14 19:32:22.000000000","message":"Another likely issue here is that we will still see orphaned entries under any circumstances that the service crashes, or if for any reason the database is unavailable when shutting down. Ideal would probably be to add a cleanup job that cleans up services that have been unavailable for a certain period of time. It could also be the overall pattern used instead of just deleting at shutdown (or both can be used).","commit_id":"8d0f2f72840760246844fe62bf4598139a12d4f7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"72454684701f90566f548223f6f0de9632a1d3d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"920ccbb0_246c3861","updated":"2022-12-06 20:30:11.000000000","message":"recheck neutron-tempest-plugin-designate-scenario","commit_id":"8d0f2f72840760246844fe62bf4598139a12d4f7"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"7998b5c2887ab2c3d6b8475ac529333c02f5d050","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"40388d94_cb384b62","in_reply_to":"0c22c1c5_ec382489","updated":"2022-12-31 20:01:00.000000000","message":"It would probably be nice to use the producer as it would allow us to only have a single cleanup job (by using the coordinator).","commit_id":"8d0f2f72840760246844fe62bf4598139a12d4f7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c39aa389f49f643a87b0aab7eadac72fee478eec","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0c22c1c5_ec382489","in_reply_to":"15232847_400b611e","updated":"2022-12-14 20:37:02.000000000","message":"who owns the cleanup job(e.g. api/producer/mdns/central etc) ? It can not be periodic_task/timer_callback under the same service, because that is why heartbeat do. \nOr we should introduce API to cleanup services, which does cleanup DB of stale service_status entries ?","commit_id":"8d0f2f72840760246844fe62bf4598139a12d4f7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6bedb3e5cdc074d8a3205fae9b3a444740ae3a49","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f7e1106e_e729c85f","in_reply_to":"40388d94_cb384b62","updated":"2023-01-11 20:19:03.000000000","message":"Done","commit_id":"8d0f2f72840760246844fe62bf4598139a12d4f7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"469e157a981e3b27f4407d24fb8c2939b6d29eb6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"765c65d9_129df66b","updated":"2023-02-27 10:35:31.000000000","message":"Erik/Michael/DEKehn,\nPlease merge this.","commit_id":"4fb28f13e1445053b5078b84e94ace69726c6985"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a50eff4e5aba9a5959432f4e095d5d7bc5b5d78b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"6035e67e_defca092","in_reply_to":"14f35285_a873eb71","updated":"2023-02-28 08:55:36.000000000","message":"ok","commit_id":"4fb28f13e1445053b5078b84e94ace69726c6985"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"0cfbeb9b1eec9ea8295b4d7db0fe96ad47e250ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2dc97272_d13528a4","in_reply_to":"6035e67e_defca092","updated":"2023-05-23 06:40:09.000000000","message":"Done","commit_id":"4fb28f13e1445053b5078b84e94ace69726c6985"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"263ae84bc12f4d7efdc325ec3eabf0909e3fecc8","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"14f35285_a873eb71","in_reply_to":"765c65d9_129df66b","updated":"2023-02-28 02:05:12.000000000","message":"I\u0027ll try to take a proper look in the upcoming couple of weeks. For now I dropped a comment for updating the RPC API version.","commit_id":"4fb28f13e1445053b5078b84e94ace69726c6985"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"987510ae1119e164579768c0b077dfa1382ba5ba","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"b7b14f59_335a322a","updated":"2023-03-04 03:10:37.000000000","message":"Every worker is sending a heartbeat. This means that if you have 5 processes (workers) each one of them will send a separate heartbeat. This gets pretty crazy if you have lets say 20+ processes on a single machine.","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"0cfbeb9b1eec9ea8295b4d7db0fe96ad47e250ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"eacdd543_4878e13b","in_reply_to":"75659c4f_f9e36916","updated":"2023-05-23 06:40:09.000000000","message":"Done","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"21b79504a5a8ad8c690effd4084ff5474aec7039","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"dd377d06_f7298ea7","in_reply_to":"817cabcc_9dab2ca4","updated":"2023-03-15 09:17:44.000000000","message":"yes, what is your suggestion then ?","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d9533f12610bb6df06db5bc4b9a9a33cf9cdd2d9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d6be9ea9_a84488a9","in_reply_to":"b7b14f59_335a322a","updated":"2023-03-12 09:47:11.000000000","message":"that is current architecture and this PR is not dealing with it. I am handling the scenario where service status is marked wrongly as \u0027UP\u0027 even if service is not as well as deleting stale entries thereby introducing \u0027STOPPED\u0027 state.","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"03bf27c46ab80a8f1b796f5624101e1af35d9130","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"817cabcc_9dab2ca4","in_reply_to":"d6be9ea9_a84488a9","updated":"2023-03-12 19:56:31.000000000","message":"Yep, but this was introduced with this PR, before this it was only done on the parent process.","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"039f8dddb515a57ad8f7730db72257c5850845d1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"f0c2f782_8dc55899","in_reply_to":"dd377d06_f7298ea7","updated":"2023-03-19 21:36:58.000000000","message":"You can start the heartbeat timer in the init portion of the service. This will prevent it from being started on each fork.\nhttps://github.com/openstack/senlin/blob/master/senlin/common/service.py#L45","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"fe5b01d001fc85d0554a88d135dfaf0c27b5d507","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"75659c4f_f9e36916","in_reply_to":"f0c2f782_8dc55899","updated":"2023-03-21 14:42:30.000000000","message":"I had mentioned issues with this approach earlier https://review.opendev.org/c/openstack/designate/+/866698/comments/8bac2428_6de72227","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"9071abeff4212e3ef1372e41130cf30d6f32df32","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"3acf445e_a05c5c29","updated":"2023-03-24 05:35:29.000000000","message":"recheck","commit_id":"4e976e3365d3ff5be054c6b22fa5a0b5b904e719"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"46813bb2218071e739d48b430d962fcd5638ad07","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"8aa83bce_615fbdb3","updated":"2023-03-23 11:28:29.000000000","message":"recheck","commit_id":"4e976e3365d3ff5be054c6b22fa5a0b5b904e719"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"7be07c867b55c28939cabbca04c8927e4215340d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"a2d389f2_a1e867eb","updated":"2023-09-22 08:47:40.000000000","message":"Hi,\nplease review and merge this PR.","commit_id":"c027096fa2d83662c69cf2408132d17d0e28e311"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"38a0fb95c3ae5913fd10eb1712335b52ed4b53df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"2043f279_df927053","updated":"2023-09-08 18:24:22.000000000","message":"I wonder if we can break this into two patches. One that re-implements how start/stop work on the heartbeat side, and then one for cleaning (producer). I think I need to think more about the schedule job.","commit_id":"c027096fa2d83662c69cf2408132d17d0e28e311"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6834d8be5bdd19ccb6b320fcf7d0c521baadeb53","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"3b7ad55f_a196220a","updated":"2024-02-06 15:34:15.000000000","message":"rebased on master, please merge.","commit_id":"ba25bc63282b0b0c6f3fa4424ee1ac34c8ca17b8"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"887ce672aa605e2b3b08ede7d9ad1f096fb8893c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"8288e901_8d6324a1","updated":"2025-02-27 18:00:08.000000000","message":"Hello Kiran, I would like to review your patch soon, but I am not a designate core reviewer, so I won\u0027t be able to approve it","commit_id":"cd519c19b68a19a335b82ef33293879f230a9185"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"eaf053ac72907d52d1575bb7cad7cd7fb4d7e340","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"a5d8646c_e02bbda0","updated":"2024-07-09 13:54:30.000000000","message":"Hi core-team,\nCan someone please merge this ?","commit_id":"cd519c19b68a19a335b82ef33293879f230a9185"},{"author":{"_account_id":20104,"name":"Dmitrii Galkin","display_name":"Dmitry Galkin","email":"galkindmitrii@gmail.com","username":"galkindmitrii"},"change_message_id":"f129b64d01702f34703675f2b388c09b54347340","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":18,"id":"449b0ddf_1887a9a6","updated":"2024-12-11 13:44:50.000000000","message":"Hi, can we get this patch reviewed and merged?\nThanks.","commit_id":"cd519c19b68a19a335b82ef33293879f230a9185"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"8afeb0bd2b20fffc9267f6d12afa3e9a516344f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"5f6257f5_18bbf74f","updated":"2025-03-03 15:51:47.000000000","message":"It didn\u0027t work for me:\nhttps://paste.openstack.org/show/bT3ubEWPVqmpQ1OdPGXc/\n\nI also added some minor comments","commit_id":"cd519c19b68a19a335b82ef33293879f230a9185"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"519b7d3bcf9c871470ea9221299f872846ad0f22","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"f558ad17_2b7c46c2","updated":"2025-02-27 15:18:50.000000000","message":"Omer, \nI need approval on this patch, pending from long-time.","commit_id":"cd519c19b68a19a335b82ef33293879f230a9185"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"f746060ec4274a3070db95d2d43ab678f7532155","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"55a1b5a1_a8501ed8","updated":"2024-07-09 17:09:37.000000000","message":"recheck","commit_id":"cd519c19b68a19a335b82ef33293879f230a9185"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"20ce7910112d705edb5d44d95cd1ecf8adea43a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"6067e3df_622f415b","updated":"2024-07-09 15:52:53.000000000","message":"recheck","commit_id":"cd519c19b68a19a335b82ef33293879f230a9185"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"013c5aa93f9083822316cadd2c9b5551ccb21d26","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"e075a2df_039e5432","updated":"2024-07-18 11:06:07.000000000","message":"recheck","commit_id":"cd519c19b68a19a335b82ef33293879f230a9185"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"7c5a9c1289df3e59f6aa323d5072ca0a22f123d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"df955ffa_42d3412a","in_reply_to":"8288e901_8d6324a1","updated":"2025-02-28 05:38:38.000000000","message":"Sure, I see you are PTL. So I pinged you as well.","commit_id":"cd519c19b68a19a335b82ef33293879f230a9185"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"4f77c493dfa900ebcedeed31868b20d42920998e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"3abc74d9_c51b006d","updated":"2026-04-21 15:16:46.000000000","message":"rebased on master after long-time. Can be topic for PTG and designate code-owners can get it merged ??","commit_id":"138bc1f0b6e14fd7078e0e5aa1206f857617adb4"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"e3ff272a5eecdbae6802ca3ca2d4353383e13cb2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"f4f2274f_00c548b0","updated":"2026-04-23 09:10:24.000000000","message":"Hey Kiran, I tested it back then and it didn\u0027t work for me, as appears in the pastebin I shared. I am willing to test it again if you made any changes, and sure, we can discuss this patch in today\u0027s PTG","commit_id":"d1e000913ffae4897fd736c996170153f03a76f9"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"30ffe5683190d02019265dfe4d244111817813bc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"cbce88df_0ba32e51","updated":"2026-04-27 08:50:55.000000000","message":"Thanks Kiran, I will try to prioritize reviewing and testing this patch soon","commit_id":"d1e000913ffae4897fd736c996170153f03a76f9"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"0e77ef8205db1eb0bed621dcd4f04493b6601cf3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"6f834c24_2048462d","updated":"2026-04-22 13:36:46.000000000","message":"recheck","commit_id":"d1e000913ffae4897fd736c996170153f03a76f9"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"1338db7094723b82891c54e413102f1c6695b8f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"e985e49f_068eaf10","in_reply_to":"2b474a25_578b7075","updated":"2026-04-27 08:10:00.000000000","message":"As discused in PTG, this PR is part of our downstream deployment for almost 2 years now. Its rebased and ready for review.","commit_id":"d1e000913ffae4897fd736c996170153f03a76f9"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"81b6d1ac8e290534890d8b7394325e25a07b58e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"2b474a25_578b7075","in_reply_to":"f4f2274f_00c548b0","updated":"2026-04-23 12:11:21.000000000","message":"the intention is to handle stop correctly and make sure zombie entries are removed for host where services are stopped. Can you please test again and share feedback ?","commit_id":"d1e000913ffae4897fd736c996170153f03a76f9"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"f58fdee5c74f345099a54d492606bf52524ce389","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"5dfca229_adf25722","updated":"2026-05-06 10:55:49.000000000","message":"Thanks again for working on this patch Kiran, and for your feedback in the last PTG. It has been a lot of time since you have uploaded it. I am willing to work with you on it and get it merged. I added a few comments.","commit_id":"578f1a62807e19ca2dbc219278257e0dd8b3910a"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"8d9af3972f8c1791b316155694a1d3a484474a9a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"33dba8f8_6a72b171","updated":"2026-05-06 09:26:10.000000000","message":"after the migration to pyproject.toml, this (and probably other) patches had conflicts, so I had to solve them","commit_id":"578f1a62807e19ca2dbc219278257e0dd8b3910a"}],"designate/agent/service.py":[{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"37659b84895096ebbcb7bbe9968fdc97f59aa16b","unresolved":true,"context_lines":[{"line_number":31,"context_line":"from designate.conf.agent import DEFAULT_AGENT_PORT"},{"line_number":32,"context_line":"from designate import dnsutils"},{"line_number":33,"context_line":"from designate import heartbeat_emitter"},{"line_number":34,"context_line":"from designate import service"},{"line_number":35,"context_line":"from designate import utils"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"8bac2428_6de72227","line":34,"updated":"2023-02-02 15:25:55.000000000","message":"Why not put all the start stop code in the designate/service.py base class? I see from previous comments that there is a calling difference from rpc_api, but wouldn\u0027t it save a lot of code if it was in the base class?","commit_id":"7f61af49222c30e5e65522535241caed2a39bedd"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"0cfbeb9b1eec9ea8295b4d7db0fe96ad47e250ff","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from designate.conf.agent import DEFAULT_AGENT_PORT"},{"line_number":32,"context_line":"from designate import dnsutils"},{"line_number":33,"context_line":"from designate import heartbeat_emitter"},{"line_number":34,"context_line":"from designate import service"},{"line_number":35,"context_line":"from designate import utils"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f0d659e_1576f666","line":34,"in_reply_to":"67656046_a00d9073","updated":"2023-05-23 06:40:09.000000000","message":"Done","commit_id":"7f61af49222c30e5e65522535241caed2a39bedd"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"5a98ac5a4f32f01556d844f5d44c502f1659b655","unresolved":true,"context_lines":[{"line_number":31,"context_line":"from designate.conf.agent import DEFAULT_AGENT_PORT"},{"line_number":32,"context_line":"from designate import dnsutils"},{"line_number":33,"context_line":"from designate import heartbeat_emitter"},{"line_number":34,"context_line":"from designate import service"},{"line_number":35,"context_line":"from designate import utils"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"67656046_a00d9073","line":34,"in_reply_to":"8bac2428_6de72227","updated":"2023-02-09 12:56:44.000000000","message":"Its hardly 3 lines in each service file instead of desigate/service.py. Also, this is creating failures in tox tests and it needs to change oslo_service \nloopingcall.py for fixing only one function failure. \nPlease check, https://paste.opendev.org/show/b7qDiILLoyvrFVxf2X5R/\n\nI checked other services e.g. nova, manila where service status is handled in parent service class. However designate has RPCService as child class. Few services inherit that RPCService and rest inherit service.Service directly, causing failures when heartbeat started directly inside service.Service class. So I assume current PR is good enough to be accepted.","commit_id":"7f61af49222c30e5e65522535241caed2a39bedd"}],"designate/central/rpcapi.py":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"263ae84bc12f4d7efdc325ec3eabf0909e3fecc8","unresolved":true,"context_lines":[{"line_number":425,"context_line":"        self.client.cast(context, \u0027update_service_status\u0027,"},{"line_number":426,"context_line":"                         service_status\u003dservice_status)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def delete_service_status(self, context, service_status):"},{"line_number":429,"context_line":"        self.client.cast(context, \u0027delete_service_status\u0027,"},{"line_number":430,"context_line":"                         service_status\u003dservice_status)"}],"source_content_type":"text/x-python","patch_set":6,"id":"58ca4ead_063d1119","line":428,"updated":"2023-02-28 02:05:12.000000000","message":"We need to bump the RPC API version when making changes here.","commit_id":"4fb28f13e1445053b5078b84e94ace69726c6985"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a50eff4e5aba9a5959432f4e095d5d7bc5b5d78b","unresolved":false,"context_lines":[{"line_number":425,"context_line":"        self.client.cast(context, \u0027update_service_status\u0027,"},{"line_number":426,"context_line":"                         service_status\u003dservice_status)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def delete_service_status(self, context, service_status):"},{"line_number":429,"context_line":"        self.client.cast(context, \u0027delete_service_status\u0027,"},{"line_number":430,"context_line":"                         service_status\u003dservice_status)"}],"source_content_type":"text/x-python","patch_set":6,"id":"d3dc1d6a_9fb5da9e","line":428,"in_reply_to":"58ca4ead_063d1119","updated":"2023-02-28 08:55:36.000000000","message":"Done","commit_id":"4fb28f13e1445053b5078b84e94ace69726c6985"}],"designate/central/service.py":[{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"f58fdee5c74f345099a54d492606bf52524ce389","unresolved":true,"context_lines":[{"line_number":76,"context_line":"            self.service_name, self.tg, grouping_enabled\u003dFalse"},{"line_number":77,"context_line":"        )"},{"line_number":78,"context_line":"        self.network_api \u003d network_api.get_network_api(CONF.network_api)"},{"line_number":79,"context_line":"        self.heartbeat \u003d heartbeat_emitter.get_heartbeat_emitter("},{"line_number":80,"context_line":"            self.service_name,"},{"line_number":81,"context_line":"            rpc_api\u003dself)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @property"},{"line_number":84,"context_line":"    def scheduler(self):"}],"source_content_type":"text/x-python","patch_set":22,"id":"0ee1b3c4_907f5a80","line":81,"range":{"start_line":79,"start_character":8,"end_line":81,"end_character":25},"updated":"2026-05-06 10:55:49.000000000","message":"After the eventlet removal changes, the heartbeat emitter now lives in cmd/ (e.g. cmd/central.py:41-48). This patch adds a second one inside each service class (central/service.py, worker/service.py, etc.), so every service would run two emitters — duplicate heartbeat RPCs every 10 seconds. The heartbeat needs to move into the service class for stop() to send the STOPPED status, but the one in cmd/ should be removed.\n\nI know this is an issue that \"came from the future\", when you\u0027ve implemented this patch you had no idea these changes will take place. I can take care of it if you want.","commit_id":"578f1a62807e19ca2dbc219278257e0dd8b3910a"}],"designate/common/policies/service_status.py":[{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"8afeb0bd2b20fffc9267f6d12afa3e9a516344f5","unresolved":true,"context_lines":[{"line_number":85,"context_line":"    policy.RuleDefault("},{"line_number":86,"context_line":"        name\u003d\"delete_service_status\","},{"line_number":87,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":88,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":89,"context_line":"        deprecated_rule\u003ddeprecated_delete_service_status"},{"line_number":90,"context_line":"    )"},{"line_number":91,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":18,"id":"a087c817_a9b817e0","line":88,"updated":"2025-03-03 15:51:47.000000000","message":"Do we support system scope for those policy rules? I mean, we have line 23 that mentions that we do, but I didn\u0027t find any other policy rule that was set to \"scope_types \u003d\u003d system\" in Designate or tbh any other OSP component.","commit_id":"cd519c19b68a19a335b82ef33293879f230a9185"}],"designate/heartbeat_emitter.py":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"ab9e09e2ef4eb618b0a01a48a7ab72c3449806f1","unresolved":true,"context_lines":[{"line_number":67,"context_line":"        service_status \u003d objects.ServiceStatus("},{"line_number":68,"context_line":"            service_name\u003dself._service_name,"},{"line_number":69,"context_line":"            hostname\u003dself._hostname,"},{"line_number":70,"context_line":"            status\u003d\u0027STOPPED\u0027,"},{"line_number":71,"context_line":"            stats\u003dstats,"},{"line_number":72,"context_line":"            capabilities\u003dcapabilities,"},{"line_number":73,"context_line":"            heartbeated_at\u003dtimeutils.utcnow()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9d1b1070_2232dc4b","line":70,"updated":"2023-03-04 03:28:23.000000000","message":"These statuses should all be defined as constants in designate/common/constants.py","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d9533f12610bb6df06db5bc4b9a9a33cf9cdd2d9","unresolved":true,"context_lines":[{"line_number":67,"context_line":"        service_status \u003d objects.ServiceStatus("},{"line_number":68,"context_line":"            service_name\u003dself._service_name,"},{"line_number":69,"context_line":"            hostname\u003dself._hostname,"},{"line_number":70,"context_line":"            status\u003d\u0027STOPPED\u0027,"},{"line_number":71,"context_line":"            stats\u003dstats,"},{"line_number":72,"context_line":"            capabilities\u003dcapabilities,"},{"line_number":73,"context_line":"            heartbeated_at\u003dtimeutils.utcnow()"}],"source_content_type":"text/x-python","patch_set":7,"id":"e5ffbd22_20ff8823","line":70,"in_reply_to":"9d1b1070_2232dc4b","updated":"2023-03-12 09:47:11.000000000","message":"ok, changed","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"0cfbeb9b1eec9ea8295b4d7db0fe96ad47e250ff","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        service_status \u003d objects.ServiceStatus("},{"line_number":68,"context_line":"            service_name\u003dself._service_name,"},{"line_number":69,"context_line":"            hostname\u003dself._hostname,"},{"line_number":70,"context_line":"            status\u003d\u0027STOPPED\u0027,"},{"line_number":71,"context_line":"            stats\u003dstats,"},{"line_number":72,"context_line":"            capabilities\u003dcapabilities,"},{"line_number":73,"context_line":"            heartbeated_at\u003dtimeutils.utcnow()"}],"source_content_type":"text/x-python","patch_set":7,"id":"205f08a8_e671c82c","line":70,"in_reply_to":"e5ffbd22_20ff8823","updated":"2023-05-23 06:40:09.000000000","message":"Done","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"8afeb0bd2b20fffc9267f6d12afa3e9a516344f5","unresolved":true,"context_lines":[{"line_number":99,"context_line":"        service_status \u003d objects.ServiceStatus("},{"line_number":100,"context_line":"            service_name\u003dself._service_name,"},{"line_number":101,"context_line":"            hostname\u003dself._hostname,"},{"line_number":102,"context_line":"            status\u003dconstants.SERVICE_UP,"},{"line_number":103,"context_line":"            stats\u003dstats,"},{"line_number":104,"context_line":"            capabilities\u003dcapabilities,"},{"line_number":105,"context_line":"            heartbeated_at\u003dtimeutils.utcnow()"}],"source_content_type":"text/x-python","patch_set":18,"id":"61a46a52_78eec72b","line":102,"updated":"2025-03-03 15:51:47.000000000","message":"Might be minor, but I wonder why we set it as \"up\" instead of getting the actual status?\nif it is for the scenario when we stop and then start (before the entries get deleted), we could set it as \"up\" when we re-start it, no?","commit_id":"cd519c19b68a19a335b82ef33293879f230a9185"}],"designate/mdns/service.py":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"0f61963adfbc9de958bcf0f4992013228bdcfb60","unresolved":true,"context_lines":[{"line_number":43,"context_line":"            cfg.CONF[\u0027service:mdns\u0027].tcp_backlog,"},{"line_number":44,"context_line":"            cfg.CONF[\u0027service:mdns\u0027].tcp_recv_timeout,"},{"line_number":45,"context_line":"        )"},{"line_number":46,"context_line":"        self.heartbeat \u003d heartbeat_emitter.get_heartbeat_emitter("},{"line_number":47,"context_line":"            self.service_name)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def start(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7883889e_deb48e99","line":46,"updated":"2022-12-11 06:19:22.000000000","message":"Is there a reason why we don\u0027t just put this in the Service base class?","commit_id":"8d0f2f72840760246844fe62bf4598139a12d4f7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6bedb3e5cdc074d8a3205fae9b3a444740ae3a49","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            cfg.CONF[\u0027service:mdns\u0027].tcp_backlog,"},{"line_number":44,"context_line":"            cfg.CONF[\u0027service:mdns\u0027].tcp_recv_timeout,"},{"line_number":45,"context_line":"        )"},{"line_number":46,"context_line":"        self.heartbeat \u003d heartbeat_emitter.get_heartbeat_emitter("},{"line_number":47,"context_line":"            self.service_name)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def start(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f500cb0_c92bceff","line":46,"in_reply_to":"297098b4_8a0b656d","updated":"2023-01-11 20:19:03.000000000","message":"Done","commit_id":"8d0f2f72840760246844fe62bf4598139a12d4f7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"999261ab439c87b57ee85c9e7ed9af42d6c83c1f","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            cfg.CONF[\u0027service:mdns\u0027].tcp_backlog,"},{"line_number":44,"context_line":"            cfg.CONF[\u0027service:mdns\u0027].tcp_recv_timeout,"},{"line_number":45,"context_line":"        )"},{"line_number":46,"context_line":"        self.heartbeat \u003d heartbeat_emitter.get_heartbeat_emitter("},{"line_number":47,"context_line":"            self.service_name)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def start(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9be16230_8f4bf02e","line":46,"in_reply_to":"341b42bb_a65935a5","updated":"2023-01-16 19:22:49.000000000","message":"what about rpc_api param ? Are you ok with removing it ?","commit_id":"8d0f2f72840760246844fe62bf4598139a12d4f7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"0aa769723b4b86b70d316ea6479305303fda2073","unresolved":true,"context_lines":[{"line_number":43,"context_line":"            cfg.CONF[\u0027service:mdns\u0027].tcp_backlog,"},{"line_number":44,"context_line":"            cfg.CONF[\u0027service:mdns\u0027].tcp_recv_timeout,"},{"line_number":45,"context_line":"        )"},{"line_number":46,"context_line":"        self.heartbeat \u003d heartbeat_emitter.get_heartbeat_emitter("},{"line_number":47,"context_line":"            self.service_name)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def start(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"297098b4_8a0b656d","line":46,"in_reply_to":"7883889e_deb48e99","updated":"2022-12-11 08:15:51.000000000","message":"yes, this is possible, the central service only have different calling method with rpc_api as an additional params.  Otherwise we can move it to base class.\nhttps://review.opendev.org/c/openstack/designate/+/866698/3/designate/central/service.py#77","commit_id":"8d0f2f72840760246844fe62bf4598139a12d4f7"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"a55dbd2018897d17e5de9081473945c46e703a84","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            cfg.CONF[\u0027service:mdns\u0027].tcp_backlog,"},{"line_number":44,"context_line":"            cfg.CONF[\u0027service:mdns\u0027].tcp_recv_timeout,"},{"line_number":45,"context_line":"        )"},{"line_number":46,"context_line":"        self.heartbeat \u003d heartbeat_emitter.get_heartbeat_emitter("},{"line_number":47,"context_line":"            self.service_name)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def start(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"341b42bb_a65935a5","line":46,"in_reply_to":"9f500cb0_c92bceff","updated":"2023-01-15 23:10:15.000000000","message":"This still looks like it is outstanding right?","commit_id":"8d0f2f72840760246844fe62bf4598139a12d4f7"}],"designate/producer/tasks.py":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"a55dbd2018897d17e5de9081473945c46e703a84","unresolved":true,"context_lines":[{"line_number":301,"context_line":"        # Move service status from \"UP\" to \"DOWN\""},{"line_number":302,"context_line":"        criterion \u003d {\"state\": \"UP\"}"},{"line_number":303,"context_line":"        for service_status in self._iter_service_statuses(ctxt, criterion):"},{"line_number":304,"context_line":"            if service_status.heartbeated_at:"},{"line_number":305,"context_line":"                now \u003d timeutils.utcnow(True)"},{"line_number":306,"context_line":"                heartbeated \u003d timeutils.parse_isotime("},{"line_number":307,"context_line":"                    service_status.heartbeated_at)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bb68e1f9_e1903d79","line":304,"updated":"2023-01-15 23:10:15.000000000","message":"It\u0027s nice to reverse these if statements so you don\u0027t need to indent after each if statement.","commit_id":"d80ec480599b84321208f8a599f821ff360a3ceb"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"999261ab439c87b57ee85c9e7ed9af42d6c83c1f","unresolved":false,"context_lines":[{"line_number":301,"context_line":"        # Move service status from \"UP\" to \"DOWN\""},{"line_number":302,"context_line":"        criterion \u003d {\"state\": \"UP\"}"},{"line_number":303,"context_line":"        for service_status in self._iter_service_statuses(ctxt, criterion):"},{"line_number":304,"context_line":"            if service_status.heartbeated_at:"},{"line_number":305,"context_line":"                now \u003d timeutils.utcnow(True)"},{"line_number":306,"context_line":"                heartbeated \u003d timeutils.parse_isotime("},{"line_number":307,"context_line":"                    service_status.heartbeated_at)"}],"source_content_type":"text/x-python","patch_set":4,"id":"c89aac97_fdef2e77","line":304,"in_reply_to":"bb68e1f9_e1903d79","updated":"2023-01-16 19:22:49.000000000","message":"Done","commit_id":"d80ec480599b84321208f8a599f821ff360a3ceb"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"a55dbd2018897d17e5de9081473945c46e703a84","unresolved":true,"context_lines":[{"line_number":307,"context_line":"                    service_status.heartbeated_at)"},{"line_number":308,"context_line":"                seconds \u003d timeutils.delta_seconds(heartbeated, now)"},{"line_number":309,"context_line":"                if seconds \u003e int(CONF[self.name].time_threshold):"},{"line_number":310,"context_line":"                    msg \u003d \"Service status %(id)s has %(seconds)d seconds \" \\"},{"line_number":311,"context_line":"                          \"since last heartbeat, marking \u0027DOWN\u0027\""},{"line_number":312,"context_line":"                    LOG.debug(msg, {"},{"line_number":313,"context_line":"                        \"id\": service_status.id, \"seconds\": seconds})"}],"source_content_type":"text/x-python","patch_set":4,"id":"1d3ca48c_e54b1b64","line":310,"updated":"2023-01-15 23:10:15.000000000","message":"Prefer msg \u003d (\"\") over \\","commit_id":"d80ec480599b84321208f8a599f821ff360a3ceb"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"999261ab439c87b57ee85c9e7ed9af42d6c83c1f","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                    service_status.heartbeated_at)"},{"line_number":308,"context_line":"                seconds \u003d timeutils.delta_seconds(heartbeated, now)"},{"line_number":309,"context_line":"                if seconds \u003e int(CONF[self.name].time_threshold):"},{"line_number":310,"context_line":"                    msg \u003d \"Service status %(id)s has %(seconds)d seconds \" \\"},{"line_number":311,"context_line":"                          \"since last heartbeat, marking \u0027DOWN\u0027\""},{"line_number":312,"context_line":"                    LOG.debug(msg, {"},{"line_number":313,"context_line":"                        \"id\": service_status.id, \"seconds\": seconds})"}],"source_content_type":"text/x-python","patch_set":4,"id":"452236d8_e5cf92ab","line":310,"in_reply_to":"1d3ca48c_e54b1b64","updated":"2023-01-16 19:22:49.000000000","message":"Done","commit_id":"d80ec480599b84321208f8a599f821ff360a3ceb"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"a55dbd2018897d17e5de9081473945c46e703a84","unresolved":true,"context_lines":[{"line_number":309,"context_line":"                if seconds \u003e int(CONF[self.name].time_threshold):"},{"line_number":310,"context_line":"                    msg \u003d \"Service status %(id)s has %(seconds)d seconds \" \\"},{"line_number":311,"context_line":"                          \"since last heartbeat, marking \u0027DOWN\u0027\""},{"line_number":312,"context_line":"                    LOG.debug(msg, {"},{"line_number":313,"context_line":"                        \"id\": service_status.id, \"seconds\": seconds})"},{"line_number":314,"context_line":"                    service_status.status \u003d \"DOWN\""},{"line_number":315,"context_line":"                    self.central_api.update_service_status(ctxt,"}],"source_content_type":"text/x-python","patch_set":4,"id":"60c81a59_e7cb2a81","line":312,"updated":"2023-01-15 23:10:15.000000000","message":"No reason to not just make msg part of the log line.","commit_id":"d80ec480599b84321208f8a599f821ff360a3ceb"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"999261ab439c87b57ee85c9e7ed9af42d6c83c1f","unresolved":false,"context_lines":[{"line_number":309,"context_line":"                if seconds \u003e int(CONF[self.name].time_threshold):"},{"line_number":310,"context_line":"                    msg \u003d \"Service status %(id)s has %(seconds)d seconds \" \\"},{"line_number":311,"context_line":"                          \"since last heartbeat, marking \u0027DOWN\u0027\""},{"line_number":312,"context_line":"                    LOG.debug(msg, {"},{"line_number":313,"context_line":"                        \"id\": service_status.id, \"seconds\": seconds})"},{"line_number":314,"context_line":"                    service_status.status \u003d \"DOWN\""},{"line_number":315,"context_line":"                    self.central_api.update_service_status(ctxt,"}],"source_content_type":"text/x-python","patch_set":4,"id":"464bf4d4_36e3c17d","line":312,"in_reply_to":"60c81a59_e7cb2a81","updated":"2023-01-16 19:22:49.000000000","message":"Done","commit_id":"d80ec480599b84321208f8a599f821ff360a3ceb"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"11d265532a918d9c7f200c722669c1ed624da8d5","unresolved":true,"context_lines":[{"line_number":275,"context_line":"        self.worker_api.recover_shard(ctxt, pstart, pend)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"class PeriodicCheckServiceStatusTask(PeriodicTask):"},{"line_number":279,"context_line":"    __plugin_name__ \u003d \u0027periodic_check_service_status\u0027"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5e9e7fdf_7d98f638","line":278,"updated":"2023-03-04 03:05:54.000000000","message":"This should probably be two different tasks.","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"0cfbeb9b1eec9ea8295b4d7db0fe96ad47e250ff","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        self.worker_api.recover_shard(ctxt, pstart, pend)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"class PeriodicCheckServiceStatusTask(PeriodicTask):"},{"line_number":279,"context_line":"    __plugin_name__ \u003d \u0027periodic_check_service_status\u0027"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"f36dc66a_843ac4ae","line":278,"in_reply_to":"0faee02f_83db5a14","updated":"2023-05-23 06:40:09.000000000","message":"Done","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d9533f12610bb6df06db5bc4b9a9a33cf9cdd2d9","unresolved":true,"context_lines":[{"line_number":275,"context_line":"        self.worker_api.recover_shard(ctxt, pstart, pend)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"class PeriodicCheckServiceStatusTask(PeriodicTask):"},{"line_number":279,"context_line":"    __plugin_name__ \u003d \u0027periodic_check_service_status\u0027"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"0faee02f_83db5a14","line":278,"in_reply_to":"5e9e7fdf_7d98f638","updated":"2023-03-12 09:47:11.000000000","message":"ok, updated.\nThe default interval for cleanup of stopped services changed to 48 hours.","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"11d265532a918d9c7f200c722669c1ed624da8d5","unresolved":true,"context_lines":[{"line_number":307,"context_line":"            heartbeated \u003d timeutils.parse_isotime("},{"line_number":308,"context_line":"                service_status.heartbeated_at)"},{"line_number":309,"context_line":"            seconds \u003d timeutils.delta_seconds(heartbeated, now)"},{"line_number":310,"context_line":"            if seconds \u003e int(CONF[self.name].time_threshold):"},{"line_number":311,"context_line":"                LOG.debug(\"Service status %(id)s has %(seconds)d seconds \""},{"line_number":312,"context_line":"                          \"since last heartbeat, marking \u0027DOWN\u0027\","},{"line_number":313,"context_line":"                          {\"id\": service_status.id, \"seconds\": seconds})"}],"source_content_type":"text/x-python","patch_set":7,"id":"bada08d5_d65d0e8d","line":310,"updated":"2023-03-04 03:05:54.000000000","message":"If a service is unavailable for longer than lets say 5min it should be marked as down.","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"0cfbeb9b1eec9ea8295b4d7db0fe96ad47e250ff","unresolved":false,"context_lines":[{"line_number":307,"context_line":"            heartbeated \u003d timeutils.parse_isotime("},{"line_number":308,"context_line":"                service_status.heartbeated_at)"},{"line_number":309,"context_line":"            seconds \u003d timeutils.delta_seconds(heartbeated, now)"},{"line_number":310,"context_line":"            if seconds \u003e int(CONF[self.name].time_threshold):"},{"line_number":311,"context_line":"                LOG.debug(\"Service status %(id)s has %(seconds)d seconds \""},{"line_number":312,"context_line":"                          \"since last heartbeat, marking \u0027DOWN\u0027\","},{"line_number":313,"context_line":"                          {\"id\": service_status.id, \"seconds\": seconds})"}],"source_content_type":"text/x-python","patch_set":7,"id":"30c728e0_b6ea37a1","line":310,"in_reply_to":"92151865_bb53e839","updated":"2023-05-23 06:40:09.000000000","message":"Done","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d9533f12610bb6df06db5bc4b9a9a33cf9cdd2d9","unresolved":true,"context_lines":[{"line_number":307,"context_line":"            heartbeated \u003d timeutils.parse_isotime("},{"line_number":308,"context_line":"                service_status.heartbeated_at)"},{"line_number":309,"context_line":"            seconds \u003d timeutils.delta_seconds(heartbeated, now)"},{"line_number":310,"context_line":"            if seconds \u003e int(CONF[self.name].time_threshold):"},{"line_number":311,"context_line":"                LOG.debug(\"Service status %(id)s has %(seconds)d seconds \""},{"line_number":312,"context_line":"                          \"since last heartbeat, marking \u0027DOWN\u0027\","},{"line_number":313,"context_line":"                          {\"id\": service_status.id, \"seconds\": seconds})"}],"source_content_type":"text/x-python","patch_set":7,"id":"92151865_bb53e839","line":310,"in_reply_to":"bada08d5_d65d0e8d","updated":"2023-03-12 09:47:11.000000000","message":"its marked as DOWN.","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"11d265532a918d9c7f200c722669c1ed624da8d5","unresolved":true,"context_lines":[{"line_number":315,"context_line":"                self.central_api.update_service_status(ctxt, service_status)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        # Delete \"STOPPED\" services"},{"line_number":318,"context_line":"        criterion \u003d {\"state\": \"STOPPED\"}"},{"line_number":319,"context_line":"        for service_status in self._iter_service_statuses(ctxt, criterion):"},{"line_number":320,"context_line":"            self.central_api.delete_service_status(ctxt, service_status)"}],"source_content_type":"text/x-python","patch_set":7,"id":"992af45f_cad16407","line":318,"updated":"2023-03-04 03:05:54.000000000","message":"A service down (or not updated) for maybe a week should be removed.","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d9533f12610bb6df06db5bc4b9a9a33cf9cdd2d9","unresolved":true,"context_lines":[{"line_number":315,"context_line":"                self.central_api.update_service_status(ctxt, service_status)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        # Delete \"STOPPED\" services"},{"line_number":318,"context_line":"        criterion \u003d {\"state\": \"STOPPED\"}"},{"line_number":319,"context_line":"        for service_status in self._iter_service_statuses(ctxt, criterion):"},{"line_number":320,"context_line":"            self.central_api.delete_service_status(ctxt, service_status)"}],"source_content_type":"text/x-python","patch_set":7,"id":"8c805db7_d95d718b","line":318,"in_reply_to":"88dfa05f_9261841d","updated":"2023-03-12 09:47:11.000000000","message":"Service stopped is intentionally stopped by user, the down service never goes to stopped state otherwise. \n1. start service,  - UP\n2. stop service - STOPPED\n3. start service, if its same service, it will be UP else previous service entry as STOPPED and new entry as UP\n4. Periodic function, checks for services,\n a. if UP is not heartbeated for longer than desired threshold, it will go to DOWN\n b. if STOPPED, that entry will be deleted.","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"03bf27c46ab80a8f1b796f5624101e1af35d9130","unresolved":true,"context_lines":[{"line_number":315,"context_line":"                self.central_api.update_service_status(ctxt, service_status)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        # Delete \"STOPPED\" services"},{"line_number":318,"context_line":"        criterion \u003d {\"state\": \"STOPPED\"}"},{"line_number":319,"context_line":"        for service_status in self._iter_service_statuses(ctxt, criterion):"},{"line_number":320,"context_line":"            self.central_api.delete_service_status(ctxt, service_status)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ec762044_216d0c69","line":318,"in_reply_to":"8c805db7_d95d718b","updated":"2023-03-12 19:56:31.000000000","message":"Sounds reasonable, but in your scenario when something goes down (without properly being marked as STOPPED e.g. service, rabbitmq or database crash) it will never be deleted, since the name is likely randomized in k8s.","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"859ea411e654e7b8e9be124f513a4402902989c1","unresolved":true,"context_lines":[{"line_number":315,"context_line":"                self.central_api.update_service_status(ctxt, service_status)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        # Delete \"STOPPED\" services"},{"line_number":318,"context_line":"        criterion \u003d {\"state\": \"STOPPED\"}"},{"line_number":319,"context_line":"        for service_status in self._iter_service_statuses(ctxt, criterion):"},{"line_number":320,"context_line":"            self.central_api.delete_service_status(ctxt, service_status)"}],"source_content_type":"text/x-python","patch_set":7,"id":"88dfa05f_9261841d","line":318,"in_reply_to":"992af45f_cad16407","updated":"2023-03-04 03:29:03.000000000","message":"How does a status transition from DOWN to STOPPED?","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"0cfbeb9b1eec9ea8295b4d7db0fe96ad47e250ff","unresolved":false,"context_lines":[{"line_number":315,"context_line":"                self.central_api.update_service_status(ctxt, service_status)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        # Delete \"STOPPED\" services"},{"line_number":318,"context_line":"        criterion \u003d {\"state\": \"STOPPED\"}"},{"line_number":319,"context_line":"        for service_status in self._iter_service_statuses(ctxt, criterion):"},{"line_number":320,"context_line":"            self.central_api.delete_service_status(ctxt, service_status)"}],"source_content_type":"text/x-python","patch_set":7,"id":"8c698480_6372fe78","line":318,"in_reply_to":"a918ae4c_f89ed0f6","updated":"2023-05-23 06:40:09.000000000","message":"Done","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"21b79504a5a8ad8c690effd4084ff5474aec7039","unresolved":true,"context_lines":[{"line_number":315,"context_line":"                self.central_api.update_service_status(ctxt, service_status)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        # Delete \"STOPPED\" services"},{"line_number":318,"context_line":"        criterion \u003d {\"state\": \"STOPPED\"}"},{"line_number":319,"context_line":"        for service_status in self._iter_service_statuses(ctxt, criterion):"},{"line_number":320,"context_line":"            self.central_api.delete_service_status(ctxt, service_status)"}],"source_content_type":"text/x-python","patch_set":7,"id":"a918ae4c_f89ed0f6","line":318,"in_reply_to":"ec762044_216d0c69","updated":"2023-03-15 09:17:44.000000000","message":"yes, service will then be marked as DOWN by next deployment. But there is no way to know DOWN is DOWN in current deployment or previous deployment. So this should be fine, as this is rare case, admin can cleanup db once in while.","commit_id":"2c935b03e9ad0ec1b877d6ac4bb9720a0cf830b1"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"883ae05d001e67535270de300726eb21fa8e9321","unresolved":true,"context_lines":[{"line_number":316,"context_line":"                self.central_api.update_service_status(ctxt, service_status)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"class PeriodicCleanupStoppedServiceStatusTask(PeriodicTask):"},{"line_number":320,"context_line":"    __plugin_name__ \u003d \u0027periodic_cleanup_stopped_service_status\u0027"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"d4a28d37_ba0194b7","line":319,"updated":"2023-03-23 02:21:14.000000000","message":"You need to register this in setup.cfg as well. \nhttps://github.com/openstack/designate/blob/master/setup.cfg#L116","commit_id":"d9efd01ef7d78f8f55ba1729df1a332a1575696e"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"0cfbeb9b1eec9ea8295b4d7db0fe96ad47e250ff","unresolved":false,"context_lines":[{"line_number":316,"context_line":"                self.central_api.update_service_status(ctxt, service_status)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"class PeriodicCleanupStoppedServiceStatusTask(PeriodicTask):"},{"line_number":320,"context_line":"    __plugin_name__ \u003d \u0027periodic_cleanup_stopped_service_status\u0027"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"6505d507_033ca39d","line":319,"in_reply_to":"d4a28d37_ba0194b7","updated":"2023-05-23 06:40:09.000000000","message":"Done","commit_id":"d9efd01ef7d78f8f55ba1729df1a332a1575696e"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"f58fdee5c74f345099a54d492606bf52524ce389","unresolved":true,"context_lines":[{"line_number":340,"context_line":"        self.worker_api.recover_shard(ctxt, pstart, pend)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"class PeriodicCheckServiceStatusTask(PeriodicTask):"},{"line_number":344,"context_line":"    __plugin_name__ \u003d \u0027periodic_check_service_status\u0027"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":22,"id":"645418d8_a926c6bb","line":343,"range":{"start_line":343,"start_character":6,"end_line":343,"end_character":36},"updated":"2026-05-06 10:55:49.000000000","message":"Can we have some testing coverage for the new functionality? e.g. PeriodicCheckServiceStatusTask, PeriodicCleanupStoppedServiceStatusTask, delete_service_status","commit_id":"578f1a62807e19ca2dbc219278257e0dd8b3910a"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"f58fdee5c74f345099a54d492606bf52524ce389","unresolved":true,"context_lines":[{"line_number":369,"context_line":"            if not service_status.heartbeated_at:"},{"line_number":370,"context_line":"                continue"},{"line_number":371,"context_line":"            now \u003d timeutils.utcnow(True)"},{"line_number":372,"context_line":"            heartbeated \u003d timeutils.parse_isotime("},{"line_number":373,"context_line":"                service_status.heartbeated_at)"},{"line_number":374,"context_line":"            seconds \u003d timeutils.delta_seconds(heartbeated, now)"},{"line_number":375,"context_line":"            if seconds \u003e int(CONF[self.name].time_threshold):"},{"line_number":376,"context_line":"                LOG.debug(\"Service status %(id)s has %(seconds)d seconds \""}],"source_content_type":"text/x-python","patch_set":22,"id":"facf846e_3af4d29c","line":373,"range":{"start_line":372,"start_character":12,"end_line":373,"end_character":46},"updated":"2026-05-06 10:55:49.000000000","message":"I got\nValueError: expected string or bytes-like object, got \u0027datetime.datetime\u0027\n\nas service_status.heartbeated_at is a datetime object.\n\n\nWhat do you think about\n```\n-            now \u003d timeutils.utcnow(True)\n-            heartbeated \u003d timeutils.parse_isotime(\n-                service_status.heartbeated_at)\n-            seconds \u003d timeutils.delta_seconds(heartbeated, now)\n+            now \u003d timeutils.utcnow()\n+            seconds \u003d timeutils.delta_seconds(\n+                service_status.heartbeated_at, now)\n```","commit_id":"578f1a62807e19ca2dbc219278257e0dd8b3910a"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"f58fdee5c74f345099a54d492606bf52524ce389","unresolved":true,"context_lines":[{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        # Delete \"STOPPED\" services"},{"line_number":407,"context_line":"        criterion \u003d {\"status\": constants.SERVICE_STOPPED}"},{"line_number":408,"context_line":"        for service_status in self._iter_service_statuses(ctxt, criterion):"},{"line_number":409,"context_line":"            self.central_api.delete_service_status(ctxt, service_status)"}],"source_content_type":"text/x-python","patch_set":22,"id":"1ccba20a_1f173510","line":408,"range":{"start_line":408,"start_character":0,"end_line":408,"end_character":75},"updated":"2026-05-06 10:55:49.000000000","message":"Claude found the following:\nWhen delete_service_status (an RPC cast) deletes a STOPPED entry, _iter tries to fetch the next page using that deleted entry\u0027s ID as a marker. check_marker can\u0027t find it and raises MarkerNotFound.\n\nI\u0027d suggest wrapping the iteration in a try/except:\n```\ntry:                                                                                                                                                                                                            \n    for service_status in self._iter_service_statuses(ctxt, criterion):                                                                                                                                         \n        self.central_api.delete_service_status(ctxt, service_status)                                                                                                                                            \nexcept exceptions.MarkerNotFound:\n    pass \n```\nThe next periodic run picks up anything that was missed.","commit_id":"578f1a62807e19ca2dbc219278257e0dd8b3910a"}],"designate/storage/impl_sqlalchemy/tables.py":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"d7dcf908ab10b174ac48c68c292ccdaee716c613","unresolved":true,"context_lines":[{"line_number":42,"context_line":"ZONE_TASK_TYPES \u003d [\u0027IMPORT\u0027, \u0027EXPORT\u0027]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"SERVICE_STATES \u003d ["},{"line_number":45,"context_line":"    \"UP\", \"DOWN\", \"WARNING\", \"STOPPED\""},{"line_number":46,"context_line":"]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"metadata \u003d MetaData()"}],"source_content_type":"text/x-python","patch_set":8,"id":"c20dccd8_f381167b","line":45,"updated":"2023-03-19 22:03:26.000000000","message":"This will need to be added to the database as well using alembic.","commit_id":"36add1d78a748af671b326833d37f4954afc6294"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"fe5b01d001fc85d0554a88d135dfaf0c27b5d507","unresolved":true,"context_lines":[{"line_number":42,"context_line":"ZONE_TASK_TYPES \u003d [\u0027IMPORT\u0027, \u0027EXPORT\u0027]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"SERVICE_STATES \u003d ["},{"line_number":45,"context_line":"    \"UP\", \"DOWN\", \"WARNING\", \"STOPPED\""},{"line_number":46,"context_line":"]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"metadata \u003d MetaData()"}],"source_content_type":"text/x-python","patch_set":8,"id":"f2daf39a_6ba3df8f","line":45,"in_reply_to":"c20dccd8_f381167b","updated":"2023-03-21 14:42:30.000000000","message":"updated","commit_id":"36add1d78a748af671b326833d37f4954afc6294"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"0cfbeb9b1eec9ea8295b4d7db0fe96ad47e250ff","unresolved":false,"context_lines":[{"line_number":42,"context_line":"ZONE_TASK_TYPES \u003d [\u0027IMPORT\u0027, \u0027EXPORT\u0027]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"SERVICE_STATES \u003d ["},{"line_number":45,"context_line":"    \"UP\", \"DOWN\", \"WARNING\", \"STOPPED\""},{"line_number":46,"context_line":"]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"metadata \u003d MetaData()"}],"source_content_type":"text/x-python","patch_set":8,"id":"6984e7d9_df37f671","line":45,"in_reply_to":"f2daf39a_6ba3df8f","updated":"2023-05-23 06:40:09.000000000","message":"Done","commit_id":"36add1d78a748af671b326833d37f4954afc6294"}],"designate/tests/functional/producer/test_service.py":[{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"8afeb0bd2b20fffc9267f6d12afa3e9a516344f5","unresolved":true,"context_lines":[{"line_number":31,"context_line":"        self.producer_service.stop()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def test_validate_partition_range(self):"},{"line_number":34,"context_line":"        # self.producer_service.start()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        min_partition \u003d objects.Zone.fields[\u0027shard\u0027].min"},{"line_number":37,"context_line":"        max_partition \u003d objects.Zone.fields[\u0027shard\u0027].max"}],"source_content_type":"text/x-python","patch_set":18,"id":"bd1338d2_20d2b80c","line":34,"updated":"2025-03-03 15:51:47.000000000","message":"why do we comment this line?","commit_id":"cd519c19b68a19a335b82ef33293879f230a9185"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"4f77c493dfa900ebcedeed31868b20d42920998e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        self.producer_service.stop()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def test_validate_partition_range(self):"},{"line_number":34,"context_line":"        # self.producer_service.start()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        min_partition \u003d objects.Zone.fields[\u0027shard\u0027].min"},{"line_number":37,"context_line":"        max_partition \u003d objects.Zone.fields[\u0027shard\u0027].max"}],"source_content_type":"text/x-python","patch_set":18,"id":"fed2ba3c_907b9a9a","line":34,"in_reply_to":"bd1338d2_20d2b80c","updated":"2026-04-21 15:16:46.000000000","message":"Done. The commented-out line # self.producer_service.start() was leftover debug code and has been removed.","commit_id":"cd519c19b68a19a335b82ef33293879f230a9185"}],"releasenotes/notes/check-service-status-7e13c933003dd8aa.yaml":[{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"f58fdee5c74f345099a54d492606bf52524ce389","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add two periodic service status checks, first is change service status"},{"line_number":5,"context_line":"    from \u0027UP\u0027 to \u0027DOWN\u0027 for services which are not heartbeated for longer"},{"line_number":6,"context_line":"    than threshold value and second is delete service status entries"},{"line_number":7,"context_line":"    which are marked as \u0027STOPPED\u0027 longer than 48 hours."}],"source_content_type":"text/x-yaml","patch_set":22,"id":"7d5ce357_4185aa6b","line":7,"range":{"start_line":4,"start_character":0,"end_line":7,"end_character":55},"updated":"2026-05-06 10:55:49.000000000","message":"I think we are missing some stuff here. Here is a suggestion from Claude:\n```\n---                                                                                                                                                                                                              \nfixes:                                                                                                                                                                                                           \n  - |                                                                                                                                                                                                            \n    Services now report a STOPPED status on shutdown, fixing duplicate\n    service_status entries when a service restarts on a different host                                                                                                                                           \n    (bug 1998906).                                                                                                                                                                                               \n  - |                                                                                                                                                                                                            \n    Added two periodic producer tasks: one to mark services as DOWN                                                                                                                                              \n    when their heartbeat exceeds a configurable threshold, and another                                                                                                                                           \n    to clean up STOPPED service entries.                                                                                                                                                                         \nupgrade:                                                                                                                                                                                                         \n  - |                                                                                                                                                                                                            \n    A database migration adds STOPPED to the service_statuses enum. \n```","commit_id":"578f1a62807e19ca2dbc219278257e0dd8b3910a"}]}
