)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9958171f2b5d0fc2308dcd257a6b8b3166d02a88","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3fa01553_633baeab","updated":"2023-09-27 18:33:12.000000000","message":"Some minor things inline. I like the spec on the whole. The way the problems are described at the beginning leads the reader to the solution which is nice.\n\nOne thing I do wonder about is if we need to add more warning signs around using these features? Maybe something to consider after the spec is implemented, but the complexity described in this document is a good indication for why this is complicated and humans have a hard time with complexity. I worry that we\u0027ll continue to find edge cases where people are surprised. This refactor does seem like a good place to tackle those problems from though.","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"83036e805644acd79caa0c78ade5f8e2b16ca74f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"105d599b_644abcc2","updated":"2023-09-27 18:39:10.000000000","message":"Something that just occurred to me and consider this brainstorming and not an endorsement:\n\nOne feature that some other CI systems support is the idea of batching changes automatically to conserve resources. This has the downsides of losing bisect-ability, but may be useful to some users. I think this spec\u0027s treatment of queue items potentially makes that possible with a new pipeline manager. One that collects events and acts on them on some time period creating a zuul specific bundele not represented in the code review system. I don\u0027t think we need to solve that here or ever if the need doesn\u0027t arise but it is cool that I think this spec makes that much easier to implement.","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"6e9ee92ff51e73693a3689f33101b0d7f222c95d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"224f4a8b_8ed5c1f1","updated":"2023-10-13 12:58:20.000000000","message":"Thank you for the write up, it\u0027s very insightful!","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"}],"doc/source/developer/specs/circular-dependencies-refactor.rst":[{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"7c6d4ca9b19ca90c66fe452971c324900d94c045","unresolved":true,"context_lines":[{"line_number":214,"context_line":"queue items.  That is, if a job for item A provides something that a"},{"line_number":215,"context_line":"job for item B requires, even if A and B are in a dependency cycle,"},{"line_number":216,"context_line":"they will be linked since they are in different queue items (though"},{"line_number":217,"context_line":"this may only work for dependency cycle items ahead of an item in the"},{"line_number":218,"context_line":"queue, not behind, thus illustrating another example of the"},{"line_number":219,"context_line":"complexities motivating this change)."},{"line_number":220,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"45d144cc_bfc3f687","line":217,"updated":"2023-09-21 12:42:48.000000000","message":"Since this doesn\u0027t seem to properly work with the current implementation I\u0027m wondering if we could simplify this to only support provides/requires between different queue items (basically the way it currently is).\n\nIn the context of a single item you can use dependencies to provide data to other jobs which should also work in the case of circular dependencies. So for circular dependencies this would open up another possibility to pass data around which I think could be confusing.","commit_id":"00cf388291ec0847d11d005ab6069e5a368a2276"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"71098a968308802b4cb72a0c0163ddd7957c469a","unresolved":false,"context_lines":[{"line_number":214,"context_line":"queue items.  That is, if a job for item A provides something that a"},{"line_number":215,"context_line":"job for item B requires, even if A and B are in a dependency cycle,"},{"line_number":216,"context_line":"they will be linked since they are in different queue items (though"},{"line_number":217,"context_line":"this may only work for dependency cycle items ahead of an item in the"},{"line_number":218,"context_line":"queue, not behind, thus illustrating another example of the"},{"line_number":219,"context_line":"complexities motivating this change)."},{"line_number":220,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"03a6b07d_d27e877c","line":217,"in_reply_to":"45d144cc_bfc3f687","updated":"2023-09-21 14:08:12.000000000","message":"I\u0027m open to that -- here\u0027s my understanding of the current situation (but I have not experimentally verified this):\n\n* Provides/requires for cycles should currently work between items if they are ahead\n* The above may not be true in the case that some jobs are deduplicated (because the build in an item\n  may actually be in an item ahead)\n* Provides requires for cycles may not work for items behind\n\nSo, I guess the probability that provides/requires works as expected in a cycle is proportional to how close it is to the rear of the queue.\n\nI think that\u0027s a pretty good argument for saying we may as well do as you describe -- it keeps the current definitions and at least makes the behavior consistent.  Then as described below, we can consider changing it.","commit_id":"00cf388291ec0847d11d005ab6069e5a368a2276"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"7c6d4ca9b19ca90c66fe452971c324900d94c045","unresolved":true,"context_lines":[{"line_number":219,"context_line":"complexities motivating this change)."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"With this change, we should attempt to maintain the status quo by"},{"line_number":222,"context_line":"searching for builds with can provide requirements not only in items"},{"line_number":223,"context_line":"ahead, but also in the current item; except when considering the"},{"line_number":224,"context_line":"current item, we should exclude any builds which are run for the"},{"line_number":225,"context_line":"change that specifies the requirement.  In other words, we will"}],"source_content_type":"text/x-rst","patch_set":1,"id":"84a8bd43_1e9e403e","line":222,"range":{"start_line":222,"start_character":21,"end_line":222,"end_character":25},"updated":"2023-09-21 12:42:48.000000000","message":"typo: which","commit_id":"00cf388291ec0847d11d005ab6069e5a368a2276"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"71098a968308802b4cb72a0c0163ddd7957c469a","unresolved":false,"context_lines":[{"line_number":219,"context_line":"complexities motivating this change)."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"With this change, we should attempt to maintain the status quo by"},{"line_number":222,"context_line":"searching for builds with can provide requirements not only in items"},{"line_number":223,"context_line":"ahead, but also in the current item; except when considering the"},{"line_number":224,"context_line":"current item, we should exclude any builds which are run for the"},{"line_number":225,"context_line":"change that specifies the requirement.  In other words, we will"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e715d6d1_b69a4124","line":222,"in_reply_to":"84a8bd43_1e9e403e","updated":"2023-09-21 14:08:12.000000000","message":"Fixed.","commit_id":"00cf388291ec0847d11d005ab6069e5a368a2276"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"7c6d4ca9b19ca90c66fe452971c324900d94c045","unresolved":true,"context_lines":[{"line_number":245,"context_line":"#. For each change on the item:"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"   #. Freeze each job for that change"},{"line_number":248,"context_line":"   #. Determine if the job can be deduplicated; if not add it to the graph"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"#. Once all jobs are frozen, analyze dependencies between jobs"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"0a7d54a4_36676eba","line":248,"updated":"2023-09-21 12:42:48.000000000","message":"I think at this point we cannot determine if a job can be deduplicated as that might depend on the return data of parent jobs.","commit_id":"00cf388291ec0847d11d005ab6069e5a368a2276"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"71098a968308802b4cb72a0c0163ddd7957c469a","unresolved":false,"context_lines":[{"line_number":245,"context_line":"#. For each change on the item:"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"   #. Freeze each job for that change"},{"line_number":248,"context_line":"   #. Determine if the job can be deduplicated; if not add it to the graph"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"#. Once all jobs are frozen, analyze dependencies between jobs"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"c98bb847_3526e6ef","line":248,"in_reply_to":"0a7d54a4_36676eba","updated":"2023-09-21 14:08:12.000000000","message":"Good point.  However, in general, we are also determining which jobs are parents at the job graph freezing stage, so we should be able to determine if two builds are going to have the same parent(s).  That changes the order of operations here -- maybe we need to make the full job graph, analyze parents, then deduplicate.","commit_id":"00cf388291ec0847d11d005ab6069e5a368a2276"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"7c6d4ca9b19ca90c66fe452971c324900d94c045","unresolved":true,"context_lines":[{"line_number":354,"context_line":""},{"line_number":355,"context_line":"* Update items to support multiple changes.  This is likely to be a"},{"line_number":356,"context_line":"  large change where we simultaneously update anything where we can\u0027t"},{"line_number":357,"context_line":"  support both systems ahead of time."}],"source_content_type":"text/x-rst","patch_set":1,"id":"1bdef493_be113091","line":357,"updated":"2023-09-21 12:42:48.000000000","message":"How To Draw an Owl ;)","commit_id":"00cf388291ec0847d11d005ab6069e5a368a2276"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"71098a968308802b4cb72a0c0163ddd7957c469a","unresolved":false,"context_lines":[{"line_number":354,"context_line":""},{"line_number":355,"context_line":"* Update items to support multiple changes.  This is likely to be a"},{"line_number":356,"context_line":"  large change where we simultaneously update anything where we can\u0027t"},{"line_number":357,"context_line":"  support both systems ahead of time."}],"source_content_type":"text/x-rst","patch_set":1,"id":"8fd15660_fb3fd5d1","line":357,"in_reply_to":"1bdef493_be113091","updated":"2023-09-21 14:08:12.000000000","message":"Indeed.  :)  Hopefully we can subdivide this further, but I don\u0027t quite see how right now.  We might be able to have a series of more-easily-reviewable changes that we squash together at the end at least.","commit_id":"00cf388291ec0847d11d005ab6069e5a368a2276"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9958171f2b5d0fc2308dcd257a6b8b3166d02a88","unresolved":true,"context_lines":[{"line_number":205,"context_line":"changes that were attached to the queue item).  Builds are also linked"},{"line_number":206,"context_line":"to a single ref in order to indicate the change context that was used"},{"line_number":207,"context_line":"for the build.  The combinations of (job_name, ref_id) in a buildset"},{"line_number":208,"context_line":"are unique."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Provides/Requires"},{"line_number":211,"context_line":"~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ff45a278_c8f60289","line":208,"updated":"2023-09-27 18:33:12.000000000","message":"Any idea what the cost of a migration for potentially hundreds of thousands/millions new zuul_buildset_ref and zuul_ref records is? The tables shouldn\u0027t be huge and we aren\u0027t converting data within existing tables (just adding columns and row content to existing tables) so this is probably fine?","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f904fc3e81b8e7e2cb77f771b1c63cd4d91049a9","unresolved":false,"context_lines":[{"line_number":205,"context_line":"changes that were attached to the queue item).  Builds are also linked"},{"line_number":206,"context_line":"to a single ref in order to indicate the change context that was used"},{"line_number":207,"context_line":"for the build.  The combinations of (job_name, ref_id) in a buildset"},{"line_number":208,"context_line":"are unique."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Provides/Requires"},{"line_number":211,"context_line":"~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1870d280_f5176290","line":208,"in_reply_to":"f9012c02_c07e7d69","updated":"2023-10-02 16:20:53.000000000","message":"Ack","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"379015fdab53e283dda82558ed299b0ec1883c1e","unresolved":true,"context_lines":[{"line_number":205,"context_line":"changes that were attached to the queue item).  Builds are also linked"},{"line_number":206,"context_line":"to a single ref in order to indicate the change context that was used"},{"line_number":207,"context_line":"for the build.  The combinations of (job_name, ref_id) in a buildset"},{"line_number":208,"context_line":"are unique."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Provides/Requires"},{"line_number":211,"context_line":"~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f9012c02_c07e7d69","line":208,"in_reply_to":"ff45a278_c8f60289","updated":"2023-09-29 06:52:51.000000000","message":"Not yet, but we can probably get some numbers as we do the work.  My guess is it may take many minutes but not hours.  We\u0027ve done similar-sized upgrades before.","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9958171f2b5d0fc2308dcd257a6b8b3166d02a88","unresolved":true,"context_lines":[{"line_number":236,"context_line":"and after the dependency cycle refactor would be a good time to"},{"line_number":237,"context_line":"clarify it.  But in order to minimize behavioral changes during the"},{"line_number":238,"context_line":"dependency refactor, we should evaluate and make that change"},{"line_number":239,"context_line":"separately in the future, if desired."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Job Graph"},{"line_number":242,"context_line":"~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"18fc3b5a_70beda7f","line":239,"updated":"2023-09-27 18:33:12.000000000","message":"I like this potential future as we could reduce the double accounting between provides/requires and job order within a buildset.","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"379015fdab53e283dda82558ed299b0ec1883c1e","unresolved":false,"context_lines":[{"line_number":236,"context_line":"and after the dependency cycle refactor would be a good time to"},{"line_number":237,"context_line":"clarify it.  But in order to minimize behavioral changes during the"},{"line_number":238,"context_line":"dependency refactor, we should evaluate and make that change"},{"line_number":239,"context_line":"separately in the future, if desired."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Job Graph"},{"line_number":242,"context_line":"~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"78253c17_8235c723","line":239,"in_reply_to":"18fc3b5a_70beda7f","updated":"2023-09-29 06:52:51.000000000","message":"Me too.","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9958171f2b5d0fc2308dcd257a6b8b3166d02a88","unresolved":true,"context_lines":[{"line_number":251,"context_line":"   #. Add it to the graph"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"#. Once all jobs are frozen, establish dependencies between jobs"},{"line_number":254,"context_line":"#. Deduplicate jobs in the graph"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"   #. If a to-be-deduplicated job depends on a non-deduplicated job,"},{"line_number":257,"context_line":"      it will treat each (job, ref) instance as a parent."}],"source_content_type":"text/x-rst","patch_set":2,"id":"d6eb54a4_0c977d3b","line":254,"updated":"2023-09-27 18:33:12.000000000","message":"Small nit: I think this algorithm can be sped up slightly if we handle the special case where num changes on on the item \u003d\u003d 1. We don\u0027t need to run this step.","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"379015fdab53e283dda82558ed299b0ec1883c1e","unresolved":false,"context_lines":[{"line_number":251,"context_line":"   #. Add it to the graph"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"#. Once all jobs are frozen, establish dependencies between jobs"},{"line_number":254,"context_line":"#. Deduplicate jobs in the graph"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"   #. If a to-be-deduplicated job depends on a non-deduplicated job,"},{"line_number":257,"context_line":"      it will treat each (job, ref) instance as a parent."}],"source_content_type":"text/x-rst","patch_set":2,"id":"759b5e12_7194788d","line":254,"in_reply_to":"d6eb54a4_0c977d3b","updated":"2023-09-29 06:52:51.000000000","message":"True.","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9958171f2b5d0fc2308dcd257a6b8b3166d02a88","unresolved":true,"context_lines":[{"line_number":268,"context_line":"We can perform some prep work to update internal data storage to"},{"line_number":269,"context_line":"support the new system, but it may not be practical to actually"},{"line_number":270,"context_line":"support both behaviors in code (to do so may require carrying two"},{"line_number":271,"context_line":"copies of the model and pipeline manager codebases).  If this proves"},{"line_number":272,"context_line":"impractical, as expected, then we won\u0027t be able to have a seamless"},{"line_number":273,"context_line":"online upgrade, however, we can still have a zero-downtime upgrade"},{"line_number":274,"context_line":"with a minimum of user-visible impact."}],"source_content_type":"text/x-rst","patch_set":2,"id":"d88191be_53c4aa01","line":271,"updated":"2023-09-27 18:33:12.000000000","message":"We will need to carry enough of both models in order to convert existing queue items from one to the other though. Though that is likely to be much simpler than having two largely separate pipeline processing behaviors.","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"379015fdab53e283dda82558ed299b0ec1883c1e","unresolved":false,"context_lines":[{"line_number":268,"context_line":"We can perform some prep work to update internal data storage to"},{"line_number":269,"context_line":"support the new system, but it may not be practical to actually"},{"line_number":270,"context_line":"support both behaviors in code (to do so may require carrying two"},{"line_number":271,"context_line":"copies of the model and pipeline manager codebases).  If this proves"},{"line_number":272,"context_line":"impractical, as expected, then we won\u0027t be able to have a seamless"},{"line_number":273,"context_line":"online upgrade, however, we can still have a zero-downtime upgrade"},{"line_number":274,"context_line":"with a minimum of user-visible impact."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fe4345c_a24f325a","line":271,"in_reply_to":"d88191be_53c4aa01","updated":"2023-09-29 06:52:51.000000000","message":"Yep.","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9958171f2b5d0fc2308dcd257a6b8b3166d02a88","unresolved":true,"context_lines":[{"line_number":306,"context_line":"simply be added to the item.  If it is already in the pipeline behind"},{"line_number":307,"context_line":"the current item, it will appear to move up in the pipeline.  The"},{"line_number":308,"context_line":"reverse case will not happen because we will process each dependency"},{"line_number":309,"context_line":"cycle the first time it appears in a pipeline."},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"As we process each item, we should check whether it is already"},{"line_number":312,"context_line":"enqueued ahead (because it was added to an item ahead due to the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"85f1f72b_3992835b","line":309,"updated":"2023-09-27 18:33:12.000000000","message":"We would restart running jobs for all of the changes in the cycle ahead of the new change right? That might be worth calling out?","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"379015fdab53e283dda82558ed299b0ec1883c1e","unresolved":true,"context_lines":[{"line_number":306,"context_line":"simply be added to the item.  If it is already in the pipeline behind"},{"line_number":307,"context_line":"the current item, it will appear to move up in the pipeline.  The"},{"line_number":308,"context_line":"reverse case will not happen because we will process each dependency"},{"line_number":309,"context_line":"cycle the first time it appears in a pipeline."},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"As we process each item, we should check whether it is already"},{"line_number":312,"context_line":"enqueued ahead (because it was added to an item ahead due to the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"0f7e526f_2b64aadd","line":309,"in_reply_to":"85f1f72b_3992835b","updated":"2023-09-29 06:52:51.000000000","message":"Yes (though to be clear, they aren\u0027t ahead of the new change, they\u0027re all part of the same item at this point).","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9958171f2b5d0fc2308dcd257a6b8b3166d02a88","unresolved":true,"context_lines":[{"line_number":330,"context_line":"* Change the frozen job data storage in ZK from being identified by"},{"line_number":331,"context_line":"  name to UUID.  This allows us to handle multiple frozen jobs in a"},{"line_number":332,"context_line":"  buildset with the same name.  This can be done as an early"},{"line_number":333,"context_line":"  standalone change."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"* Make job dependency resolution happen at job graph freeze time."},{"line_number":336,"context_line":"  This lets us point to specific frozen jobs and we don\u0027t need to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"974b3e60_784eb9c2","line":333,"updated":"2023-09-27 18:33:12.000000000","message":"Any concern this makes the db less navigable/debuggable? We could use something like jobname/uuid or some other more unique key if so.","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"379015fdab53e283dda82558ed299b0ec1883c1e","unresolved":true,"context_lines":[{"line_number":330,"context_line":"* Change the frozen job data storage in ZK from being identified by"},{"line_number":331,"context_line":"  name to UUID.  This allows us to handle multiple frozen jobs in a"},{"line_number":332,"context_line":"  buildset with the same name.  This can be done as an early"},{"line_number":333,"context_line":"  standalone change."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"* Make job dependency resolution happen at job graph freeze time."},{"line_number":336,"context_line":"  This lets us point to specific frozen jobs and we don\u0027t need to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"c103ef43_5a4a3599","line":333,"in_reply_to":"974b3e60_784eb9c2","updated":"2023-09-29 06:52:51.000000000","message":"UUID mapping is a pretty common pattern we use; I don\u0027t think it\u0027s going to be especially difficult to debug compared to the rest of the system.  A developer can still find the correct frozen job by name from the buildset using the mapping, and given a particular frozen job, they can still identify the name of the job.","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f904fc3e81b8e7e2cb77f771b1c63cd4d91049a9","unresolved":false,"context_lines":[{"line_number":330,"context_line":"* Change the frozen job data storage in ZK from being identified by"},{"line_number":331,"context_line":"  name to UUID.  This allows us to handle multiple frozen jobs in a"},{"line_number":332,"context_line":"  buildset with the same name.  This can be done as an early"},{"line_number":333,"context_line":"  standalone change."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"* Make job dependency resolution happen at job graph freeze time."},{"line_number":336,"context_line":"  This lets us point to specific frozen jobs and we don\u0027t need to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"c74f0a20_34b05a7e","line":333,"in_reply_to":"c103ef43_5a4a3599","updated":"2023-10-02 16:20:53.000000000","message":"Ack","commit_id":"30d579f8da4ceedfe8f454f53b362d01606f5589"}]}
