Skip to content

Bug: engine-toggle-permanent-config-fault-logs-every-poll #948

Description

@drmoisan
  • Work Mode: minor-audit

Summary

When the engine configuration load faults permanently, AsyncLazy caches the fault, so every cache-miss getPressed poll re-primes and logs the same error again. A stale marker used to suppress repeats intermittently. Once #944 removes the stale marker, every poll that reaches StartPrimeIfNeeded logs.

Environment

  • OS/version: Windows 11 (Outlook VSTO add-in)
  • Python version: n/a (C#, .NET Framework 4.8)
  • Command/flags used: n/a
  • Data source or fixture: TaskMaster/Ribbon/EngineToggleStateCoordinator.cs, and the configuration AsyncLazy with ResetConfigAsyncLazy

Steps to Reproduce

  1. Cause the engine configuration load to fault persistently.
  2. Let the ribbon repeatedly invalidate or poll the engine toggle getPressed.
  3. Observe the log file (TaskMaster\bin\Debug\logs\debug_<date>.log).

Expected Behavior

A permanent configuration fault is logged once, or at a bounded rate, and recovery is either explicit or backed off.

Actual Behavior

After #944, one error is logged per cache-miss poll, without bound.

Logs / Screenshots

Impact / Severity

  • Blocker
  • High
  • Medium
  • Low

Source

From: docs/features/potential/2026-09-30-engine-toggle-permanent-config-fault-logs-every-poll.md

Activity

  1. drmoisan commented on Sep 30, 2026

    @drmoisan
    OwnerAuthor

    Restoring sections dropped by the promotion tooling.

    Suspected Cause / Notes

    The configuration fault is cached in AsyncLazy, and the coordinator has no back-off or reset policy, so each cache-miss getPressed poll re-primes and logs again. A stale marker intermittently suppressed the repeats until #944 removed it. This is a retry-policy decision, not a correctness defect in #944. Source: #944 spec, Rollout and Follow-up item 2.

    Proposed Fix / Validation Ideas

    • Decide on a policy: back off re-primes after a fault, log only on a state change, or call ResetConfigAsyncLazy to recover.
    • Deterministic test: under a fake TimeProvider, N polls against a cached fault produce a bounded number of log entries.
    • Sequence this after Bug: engine-toggle-prime-marker-registration-races-removal #944 merges.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions