{"version":"2.1.293","anchor":"orchestrator-spawn-hint-poll-loop-now-tracks-in-flight-hooks","canonical_anchor":"orchestrator-spawn-hint-poll-loop-now-tracks-in-flight-hooks","heading":"Runner orchestrators now pace polling and wait for running hooks before exiting","tier":"notice","area":"Self-Hosted Runners","scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.293\/e\/orchestrator-spawn-hint-poll-loop-now-tracks-in-flight-hooks","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.293","markdown":"### Runner orchestrators now pace polling and wait for running hooks before exiting\n\nThe loop that checks for new sessions to start now limits requests to free capacity, spaces out polls and waits for running hooks before exiting\n\n**What**\n\nA runner orchestrator is a process that keeps checking a server for hints to start sessions, and runs a hook for each one. A hook is a command run automatically at a set point. Its checking loop changed in these ways:\n\n- Running hooks: it now keeps track of hooks that are still running\n\n- Request size: each check asks only for as many hints as it has free room for\n\n- Pacing: checks now keep a minimum gap and add a random delay to the wait between them\n\n- Rejection: when the server refuses a check, it waits for running hooks to end and then exits, instead of exiting at once\n\n- Errors: a hook that fails to start is logged and not retried\n\nIn this build the loop still waits for every hook to finish in each round, because the path that would let hooks run in the background cannot be reached.\n\n**Why**\n\nThis is groundwork for how runner orchestrators share out work and shut down. For now, the visible change is gentler polling and a cleaner exit when the server refuses.\n\n- Area: Self-Hosted Runners\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 3\/5\n- Scope: org\n- Heads-up: no"}