Skip to content

Bug: iteratequeueasync-deadline-closes-queue-early #446

Description

@drmoisan
  • Work Mode: full-bug

Summary

QfcHomeController.IterateQueueAsync treats an empty dequeue result as proof that the mail source is exhausted and irreversibly closes the QuickFiler UI queue. Since issue #424 introduced a first-batch deadline on the underlying dequeue, an empty result can now mean "the deadline expired" rather than "no items remain", so a slow high-confidence scan can close the queue for the rest of the session while items are still available.

Environment

  • OS/version: Windows 11 Pro 10.0.26200
  • Python version: n/a (C# / .NET Framework 4.8 VSTO add-in)
  • Command/flags used: QuickFiler launched from the TaskMaster ribbon with QfSettings.HighConfidenceModeEnabled = true
  • Data source or fixture: Live Outlook mailbox with a low proportion of items above the confidence threshold, so scoring is slow relative to the deadline

Steps to Reproduce

  1. Enable High Confidence mode with a threshold that few messages clear.
  2. Launch QuickFiler against a folder large enough that scoring a batch exceeds the first-batch deadline.
  3. File the first batch so IterateQueueAsync runs for the next batch.
  4. Observe whether further batches are ever presented.

Expected Behavior

An empty batch caused by a scan deadline should leave the queue open so later iterations can continue supplying items. The queue should be closed only when the mail source is genuinely exhausted.

Actual Behavior

The empty result routes to QfcQueue.CompleteAddingAsync, which calls BlockingCollection.CompleteAdding(). That operation is irreversible, so no further items can be enqueued for the remainder of the session even though unscanned items remain.

Logs / Screenshots

  • Attached minimal logs or screenshot
  • Snippet: none captured; the failure presents as QuickFiler ending the session early rather than as an error.

Impact / Severity

  • Blocker
  • High
  • Medium
  • Low

High: in High Confidence mode with a low-yield folder the user can be denied the remainder of their queue for the session, with no error shown and no way to recover short of relaunching QuickFiler.

Source

From: docs/features/potential/2026-08-07-iteratequeueasync-deadline-closes-queue-early.md

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