Script worker start failures log an Error with a stack trace on every backoff retry #788
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found during the lmxopcua#780 docker-dev live drill (2026-11-10). The drill made the worker unlaunchable (its dll renamed) for about 3 minutes.
WorkerShardlogsScriptWorker[n] failed to start; scripts on it report runner unavailable until it doesat Error, with the fullInvalidOperationExceptionstack trace, on every retry. There are three shards (0, 1, iso), and the retries cap at a 30 s backoff, so the noise never stops while the condition lasts: 28 Error+stack entries in the first two minutes on one node.The crash-loop circuit already logs one Error when it opens (
Script runner circuit OPEN: …) and one Information line when it closes. That pair is the operator signal.Proposal. Log the first failed start of a down period at Error with the exception. Log later retries at Warning with no stack (or Debug), with a failure count. When the shard starts again, log one line covering the outage (
started after N failed attempts over T). Pin it with a log-capture test inSupervisionTests.Fixed on
master@8582ce91(WorkerShard.StartCoreAsync). What one down period of a shard now logs:failed to start; … (retrying with backoff).still failing to start: {Attempts} failed attempt(s) over {Outage}; last error: {Error}. This is rate-limited to one per 60 s per shard; the other retries log at Debug.started, pid N, after {Attempts} failed start attempt(s) over {Outage}.Test.
A_shard_that_cannot_start_logs_one_error_then_concise_rate_limited_retries_then_its_recovery(theory) uses a launch that fails 3 times and then starts a real worker:Mutation check. Logging every failure at Error with the exception turns both cases red. Closing.