| Previous | Next |
| FILTER_E_TOO_BIG | FILTER_E_UNREACHABLE |
FILTER_E_ALREADY_OPEN
The filter instance already has an open file
FILTER_E_ALREADY_OPEN is HRESULT 0x80041736 (-2147215562 signed; 2147751734 unsigned). Its severity bit is 1, facility is 4 (FACILITY_ITF for these values), and code field is 0x1736. For FILTER_E_ALREADY_OPEN, standard HRESULT severity rules classify the value as a failure. AllStat describes the value as “A file is already open. Cannot open another one while a file is open.”
Contract boundary
FILTER_E_ALREADY_OPEN belongs to asking a stateful content-indexing filter to open another source before closing or resetting the current one. The decisive interpretation is that one filter object is being reused across overlapping document lifetimes. For FILTER_E_ALREADY_OPEN, keep the symbolic constant and method stage together in logs; its hexadecimal value alone cannot identify the owning transition or input.
For FILTER_E_ALREADY_OPEN, the IFilter contract is stateful: GetChunk selects a chunk, then GetText or GetValue consumes content according to STAT_CHUNK flags. In the FILTER_E_ALREADY_OPEN investigation, method order and filter-instance ownership are therefore part of the evidence. This context narrows the responsible component without replacing the code-specific checks below.
Ways this state occurs
- The previous close path was skipped after an exception; preserve the observation under the
FILTER_E_ALREADY_OPENcorrelation record. - Two worker threads share one handler instance; preserve the observation under the
FILTER_E_ALREADY_OPENcorrelation record. - A timeout abandons a file without releasing filter state; preserve the observation under the
FILTER_E_ALREADY_OPENcorrelation record. - Pooling returns a still-open object; preserve the observation under the
FILTER_E_ALREADY_OPENcorrelation record.
The useful hypothesis for FILTER_E_ALREADY_OPEN must explain both asking a stateful content-indexing filter to open another source before closing or resetting the current one and the documented condition. Compare the failing case with a control that preserves filter instance identity and changes only first and second document identities; this prevents unrelated environment differences from dominating the FILTER_E_ALREADY_OPEN test.
Telemetry fields
- The
FILTER_E_ALREADY_OPENinvestigation should record filter instance identity. - The
FILTER_E_ALREADY_OPENinvestigation should record first and second document identities. - The
FILTER_E_ALREADY_OPENinvestigation should record open/close call sequence. - The
FILTER_E_ALREADY_OPENinvestigation should record thread and task ownership.
For FILTER_E_ALREADY_OPEN, capture filter instance identity before releasing objects, closing handles or reconnecting. Retain the raw HRESULT with first and second document identities, component version, UTC timestamp and correlation ID. Bound the FILTER_E_ALREADY_OPEN telemetry to diagnostic metadata because document content, credentials and unrestricted query text may be sensitive.
Verification sequence
- Trace the full lifetime of the same filter instance. Associate this observation specifically with
FILTER_E_ALREADY_OPEN. - Verify cleanup runs on success, failure and cancellation. Associate this observation specifically with
FILTER_E_ALREADY_OPEN. - Remove concurrent use of non-reentrant handler objects. Associate this observation specifically with
FILTER_E_ALREADY_OPEN. - Create a fresh instance to prove the source file itself is not defective. Associate this observation specifically with
FILTER_E_ALREADY_OPEN.
Change one variable per FILTER_E_ALREADY_OPEN control run. Preserve the component version and target identity, then alter only the condition described as one filter object is being reused across overlapping document lifetimes. This isolates whether FILTER_E_ALREADY_OPEN is causal rather than merely repeatable.
Safe continuation
Close/reset the current object or discard the contaminated instance. Retrying the second open on unchanged state will fail again. For FILTER_E_ALREADY_OPEN, record whether asking a stateful content-indexing filter to open another source before closing or resetting the current one produced any content, update or state transition before returning. If completion remains unknown, the FILTER_E_ALREADY_OPEN path must not replay non-idempotent work until the owner confirms final state.
The retry gate for FILTER_E_ALREADY_OPEN should be a concrete change in filter instance identity or first and second document identities. A timer alone cannot demonstrate that the FILTER_E_ALREADY_OPEN contract condition has changed.
Limits of the HRESULT
It does not mean another process has the file open; that condition maps more naturally to <code>FILTER_E_IN_USE</code>. Without the call boundary for asking a stateful content-indexing filter to open another source before closing or resetting the current one, FILTER_E_ALREADY_OPEN also cannot identify which wrapper or configuration layer introduced the condition.
Distinguishing related codes
FILTER_E_NOT_OPEN is the opposite lifecycle violation, while FILTER_E_ALREADY_OPEN detects overlapping opens. In FILTER_E_ALREADY_OPEN telemetry, preserve neighboring constants separately because the same visible symptom may require a different caller action, owner or recovery gate.
Developer and administrator actions
- At step 1 for
FILTER_E_ALREADY_OPEN, at the code boundary, keep filter instance identity beside the returned HRESULT - At step 2 for
FILTER_E_ALREADY_OPEN, in telemetry, correlate first and second document identities with the target and component generation - At step 3 for
FILTER_E_ALREADY_OPEN, for regression coverage, force the documented condition: one filter object is being reused across overlapping document lifetimes - At step 4 for
FILTER_E_ALREADY_OPEN, for operations staff, expose the corrective state change rather than a generic retry button - At step 5 for
FILTER_E_ALREADY_OPEN, after remediation, validate one known-good control and the original failing case
Practical case
A filter-object pool returns an instance whose cancellation path missed cleanup. Instance-level tracing reveals the prior document still owns it. In this scenario, handling FILTER_E_ALREADY_OPEN at its real contract boundary prevents the application from collapsing a precise state into an unhelpful generic “search failed” message.
Official Microsoft references
- Microsoft: Content-Indexing values — official contract information relevant to
FILTER_E_ALREADY_OPEN. - Microsoft: IFilter interface — official contract information relevant to
FILTER_E_ALREADY_OPEN. - Microsoft: testing filter handlers — official contract information relevant to
FILTER_E_ALREADY_OPEN. - Microsoft: filter handlers in Windows Search — official contract information relevant to
FILTER_E_ALREADY_OPEN. - Microsoft: Filter-Interface values — official contract information relevant to
FILTER_E_ALREADY_OPEN.
Looking for a different code? Search another status or error code.
