)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"10f3cb72de60ee8205eece29d519c2d4bfd3166d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5ad320f0_7cf1190b","updated":"2022-07-21 07:19:30.000000000","message":"recheck","commit_id":"9a279725f9b1a266bc3bb1e36f93a83e3405f33b"}],"zuul/cmd/client.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"60e7164a096c338ca1c4740364f52ddabc01edf6","unresolved":true,"context_lines":[{"line_number":1044,"context_line":"                tenant_name\u003dargs.tenant,"},{"line_number":1045,"context_line":"                hostname\u003d\u0027admin command\u0027,"},{"line_number":1046,"context_line":"                last_reconfigured\u003dint(time.time()),"},{"line_number":1047,"context_line":"                last_reconfigure_event_ltime\u003d-1,"},{"line_number":1048,"context_line":"                uuid\u003duuid4().hex,"},{"line_number":1049,"context_line":"                branch_cache_min_ltimes\u003d{},"},{"line_number":1050,"context_line":"                ltime\u003dps._zstat.last_modified_transaction_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3cd03644_885fe355","line":1047,"updated":"2022-07-19 23:55:50.000000000","message":"Does the default of -1 here imply that the use of -1 is a long term part of this synchronization protocol? We don\u0027t expect Zuul v7 to assume a stronger contract?","commit_id":"9a279725f9b1a266bc3bb1e36f93a83e3405f33b"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"f67e15ab79728b106509b7cf452684e76829f6c9","unresolved":true,"context_lines":[{"line_number":1044,"context_line":"                tenant_name\u003dargs.tenant,"},{"line_number":1045,"context_line":"                hostname\u003d\u0027admin command\u0027,"},{"line_number":1046,"context_line":"                last_reconfigured\u003dint(time.time()),"},{"line_number":1047,"context_line":"                last_reconfigure_event_ltime\u003d-1,"},{"line_number":1048,"context_line":"                uuid\u003duuid4().hex,"},{"line_number":1049,"context_line":"                branch_cache_min_ltimes\u003d{},"},{"line_number":1050,"context_line":"                ltime\u003dps._zstat.last_modified_transaction_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ddf06310_3feb085b","line":1047,"in_reply_to":"3cd03644_885fe355","updated":"2022-07-20 00:05:45.000000000","message":"Yes, I expect that to continue to mean \"this layout has no information about a minimum required time\".","commit_id":"9a279725f9b1a266bc3bb1e36f93a83e3405f33b"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"dad54c7182db458619d758488e9a50f08e1f6932","unresolved":false,"context_lines":[{"line_number":1044,"context_line":"                tenant_name\u003dargs.tenant,"},{"line_number":1045,"context_line":"                hostname\u003d\u0027admin command\u0027,"},{"line_number":1046,"context_line":"                last_reconfigured\u003dint(time.time()),"},{"line_number":1047,"context_line":"                last_reconfigure_event_ltime\u003d-1,"},{"line_number":1048,"context_line":"                uuid\u003duuid4().hex,"},{"line_number":1049,"context_line":"                branch_cache_min_ltimes\u003d{},"},{"line_number":1050,"context_line":"                ltime\u003dps._zstat.last_modified_transaction_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"2de7bd0f_ddb40d2c","line":1047,"in_reply_to":"ddf06310_3feb085b","updated":"2022-07-20 15:14:19.000000000","message":"Ack","commit_id":"9a279725f9b1a266bc3bb1e36f93a83e3405f33b"}],"zuul/scheduler.py":[{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"e3ed7f1fbd2c1c84dbd6b750af88d5d6048493a9","unresolved":true,"context_lines":[{"line_number":2296,"context_line":"            # out cached data for this project and perform a"},{"line_number":2297,"context_line":"            # reconfiguration."},{"line_number":2298,"context_line":"            self.trigger_events[tenant.name].last_reconfigure_event_ltime \u003d\\"},{"line_number":2299,"context_line":"                event.zuul_event_ltime"},{"line_number":2300,"context_line":"            self.reconfigureTenant(tenant, change.project, event)"},{"line_number":2301,"context_line":""},{"line_number":2302,"context_line":"        event.min_reconfigure_ltime \u003d self.trigger_events["}],"source_content_type":"text/x-python","patch_set":1,"id":"e339db36_e8f5cf47","line":2299,"updated":"2022-07-18 14:03:53.000000000","message":"Should we maybe update the `last_reconfigure_event_ltime` after we\u0027ve triggered the tenant reconfig?\n\nJust thinking about what happens when something goes wrong during sending of the trigger event. I think the trigger event processing would be stuck and needs to be fixed by a full tenant reconfiguration to create a new layout state.","commit_id":"9806ec0b135558a3a753f785703fb8cf9748a42a"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"03fa237f49703e1b88ae15f1792e36af87313cd9","unresolved":false,"context_lines":[{"line_number":2296,"context_line":"            # out cached data for this project and perform a"},{"line_number":2297,"context_line":"            # reconfiguration."},{"line_number":2298,"context_line":"            self.trigger_events[tenant.name].last_reconfigure_event_ltime \u003d\\"},{"line_number":2299,"context_line":"                event.zuul_event_ltime"},{"line_number":2300,"context_line":"            self.reconfigureTenant(tenant, change.project, event)"},{"line_number":2301,"context_line":""},{"line_number":2302,"context_line":"        event.min_reconfigure_ltime \u003d self.trigger_events["}],"source_content_type":"text/x-python","patch_set":1,"id":"abec5220_d462fa35","line":2299,"in_reply_to":"e339db36_e8f5cf47","updated":"2022-07-20 00:05:42.000000000","message":"Done","commit_id":"9806ec0b135558a3a753f785703fb8cf9748a42a"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"60e7164a096c338ca1c4740364f52ddabc01edf6","unresolved":true,"context_lines":[{"line_number":2333,"context_line":"                              \"newer than current reconfigure ltime of %s, \""},{"line_number":2334,"context_line":"                              \"aborting early\","},{"line_number":2335,"context_line":"                              event.min_reconfigure_ltime, last_ltime)"},{"line_number":2336,"context_line":"                    return"},{"line_number":2337,"context_line":"            log.debug(\"Processing trigger event %s\", event)"},{"line_number":2338,"context_line":"            try:"},{"line_number":2339,"context_line":"                if isinstance(event, SupercedeEvent):"}],"source_content_type":"text/x-python","patch_set":2,"id":"31bcee21_cb4c0ed2","line":2336,"updated":"2022-07-19 23:55:50.000000000","message":"Do we need any sort of delay here to prevent us from immedaitely trying to process the pipeline trigger queue potentially starving the reconfiguration work that will allow us to proceed?","commit_id":"9a279725f9b1a266bc3bb1e36f93a83e3405f33b"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"f67e15ab79728b106509b7cf452684e76829f6c9","unresolved":true,"context_lines":[{"line_number":2333,"context_line":"                              \"newer than current reconfigure ltime of %s, \""},{"line_number":2334,"context_line":"                              \"aborting early\","},{"line_number":2335,"context_line":"                              event.min_reconfigure_ltime, last_ltime)"},{"line_number":2336,"context_line":"                    return"},{"line_number":2337,"context_line":"            log.debug(\"Processing trigger event %s\", event)"},{"line_number":2338,"context_line":"            try:"},{"line_number":2339,"context_line":"                if isinstance(event, SupercedeEvent):"}],"source_content_type":"text/x-python","patch_set":2,"id":"d437e135_6f173785","line":2336,"in_reply_to":"31bcee21_cb4c0ed2","updated":"2022-07-20 00:05:45.000000000","message":"We will go back to the loop where we iterate over every pipeline in the tenant.  If we are the only scheduler, then we will process that pipeline up to the event time and reach this same point and return early; we\u0027ll eventually get to the point where we finish the tenant and process the tenant reconfig event.\n\nIf we\u0027re in a multi-scheduler system, then in the best case, another scheduler is sitting on that reconfig event right now and trying to get the tenant write lock.  There\u0027s a special short-circuit in the pipeline loop that will exit early if someone\u0027s waiting to reconfigure the tenant.  So we\u0027ll stop processing the rest of the tenant very quickly and let that other scheduler proceed.\n\nIf we\u0027re in a multi-scheduler system and another scheduler hasn\u0027t gotten around to that event yet, we\u0027ll behave like the first case until it does, then we\u0027ll behave like the second.\n\nThat\u0027s what I like most about this change -- it preserves the parallelism as much as possible until it really needs to stop and do the reconfiguration.","commit_id":"9a279725f9b1a266bc3bb1e36f93a83e3405f33b"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"dad54c7182db458619d758488e9a50f08e1f6932","unresolved":false,"context_lines":[{"line_number":2333,"context_line":"                              \"newer than current reconfigure ltime of %s, \""},{"line_number":2334,"context_line":"                              \"aborting early\","},{"line_number":2335,"context_line":"                              event.min_reconfigure_ltime, last_ltime)"},{"line_number":2336,"context_line":"                    return"},{"line_number":2337,"context_line":"            log.debug(\"Processing trigger event %s\", event)"},{"line_number":2338,"context_line":"            try:"},{"line_number":2339,"context_line":"                if isinstance(event, SupercedeEvent):"}],"source_content_type":"text/x-python","patch_set":2,"id":"192d293a_dc9fec04","line":2336,"in_reply_to":"d437e135_6f173785","updated":"2022-07-20 15:14:19.000000000","message":"Ack","commit_id":"9a279725f9b1a266bc3bb1e36f93a83e3405f33b"}]}
