Skip to content

Bug: quickfiler-emailmovemonitor-instances-not-shared #620

Description

@drmoisan
  • Work Mode: minor-audit

Summary

UnhookItem can never release a hook that QfcDatamodel registered, because three collaborators each construct their own independent EmailMoveMonitor rather than sharing one. QuickFiler/Controllers/QfcDatamodel.cs:103, QuickFiler/Controllers/QfcQueue.cs:40 and QuickFiler/Controllers/QfcCollectionController.cs:78 each build a separate instance, so the UnhookItem call at QuickFiler/Controllers/QfcQueue.cs:76 consults a hook list that structurally cannot contain the datamodel's registrations. Any unhook routed through QfcQueue is therefore a silent no-op against datamodel-registered items, and the monitor retains those hooks for the life of the object.

Environment

  • OS/version:
  • Python version:
  • Command/flags used:
  • Data source or fixture:

Steps to Reproduce

  1. Register a mail item hook through QfcDatamodel, which uses the monitor constructed at QuickFiler/Controllers/QfcDatamodel.cs:103.
  2. Route an unhook for that same item through QfcQueue, which calls UnhookItem at QuickFiler/Controllers/QfcQueue.cs:76 against the distinct monitor constructed at QuickFiler/Controllers/QfcQueue.cs:40.
  3. Inspect the datamodel monitor's hook list and observe the hook is still present.

Expected Behavior

The unhook releases the item, whichever collaborator registered it.

Actual Behavior

The unhook is a no-op. The two monitors are separate objects with separate hook lists, so the lookup cannot match.

Logs / Screenshots

  • Attached minimal logs or screenshot
  • Snippet:

Impact / Severity

  • Medium

Correctness and lifetime issue rather than a crash. Hooks accumulate and are never released through this path.

Source

From: docs/features/potential/2026-08-26-quickfiler-emailmovemonitor-instances-not-shared.md

Activity

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