What does HRESULT 0x00041679 (QPLIST_S_DUPLICATE) mean?

 
Previous Next
SCHED_S_TASK_QUEUED FDAEMON_W_WORDLISTFULL

QPLIST_S_DUPLICATE

Duplicate query property definition was ignored

QPLIST_S_DUPLICATE is HRESULT 267897 (0x00041679) from Indexing Service. AllStat describes it as “Exact duplicate property defined.” The severity bit indicates a nonfailure result, but the value carries a specific condition that must not be collapsed into plain S_OK.

In the legacy Indexing Service or IFilter pipeline, QPLIST_S_DUPLICATE means that exact duplicate property defined. The application should preserve QPLIST_S_DUPLICATE until it has validated the exact condition represented by this return value.

Diagnostic sequence

  • Capture the raw value 0x00041679 before wrappers, signed-decimal formatting, exceptions, or generic success handling replace QPLIST_S_DUPLICATE.
  • Identify the operation that returned QPLIST_S_DUPLICATE, including interface or callback, component build, thread, process, and the state-machine phase.
  • For QPLIST_S_DUPLICATE, prove the decisive condition: the duplicate property is semantically identical and its removal does not alter the query schema.
  • Inspect every output, count, status array, buffer, callback, task state, media timestamp, transaction vote, or security token that remains part of the QPLIST_S_DUPLICATE contract.
  • Compare state immediately before and after QPLIST_S_DUPLICATE; success severity does not guarantee that optional work or the caller’s intended high-level action completed.
  • Reproduce QPLIST_S_DUPLICATE with the smallest input that retains the same condition, then alter only the recorded cause before repeating the operation.

Where the status is encountered

  • QPLIST_S_DUPLICATE can be returned during legacy Indexing Service catalog processing; log the exact method and object state instead of interpreting the constant outside that contract.
  • QPLIST_S_DUPLICATE can be returned during IFilter text and property extraction; log the exact method and object state instead of interpreting the constant outside that contract.
  • QPLIST_S_DUPLICATE can be returned during search enumeration, scan scheduling, or catalog administration; log the exact method and object state instead of interpreting the constant outside that contract.

Because QPLIST_S_DUPLICATE is informational, a language binding may expose it as success and hide the symbolic distinction. Keep the original HRESULT available until the code-specific branch has run.

What must be true before accepting it

For QPLIST_S_DUPLICATE, verify that the duplicate property is semantically identical and its removal does not alter the query schema. The documented condition must be demonstrated so QPLIST_S_DUPLICATE is not mistaken for an unrelated success state.

Any state transition preceding QPLIST_S_DUPLICATE must be included in rollback, continuation, and retry planning.

Evidence and telemetry

  • For QPLIST_S_DUPLICATE, preserve property set GUID and property ID.
  • For QPLIST_S_DUPLICATE, preserve aliases and requested sort flags.
  • For QPLIST_S_DUPLICATE, preserve original list positions.
  • For QPLIST_S_DUPLICATE, preserve canonicalized property definition.
  • For QPLIST_S_DUPLICATE, preserve result-column layout.

Also record qplist_s_duplicate_operation, qplist_s_duplicate_state_before, qplist_s_duplicate_state_after, UTC time, process and thread identifiers, component version, and a correlation ID. Use redacted telemetry for QPLIST_S_DUPLICATE, retaining only the stable technical identifiers that distinguish the operation.

Difference from nearby results

QPLIST_S_DUPLICATE must be distinguished from ordinary S_OK and from failure-severity values in the same API family; its documented state changes control the next action.

Comparing QPLIST_S_DUPLICATE with related statuses protects the caller from applying failure recovery to normal state.

Correct handling and recovery

Deduplicate the property list by canonical property identifier and retain one authoritative definition. If definitions differ, stop and resolve the conflict instead of relying on ordering.

Retry QPLIST_S_DUPLICATE only when a documented input or state has changed. Use the code-specific next action for QPLIST_S_DUPLICATE; avoid treating all informational HRESULT values as retry signals.

Practical scenario

A query builder merges two templates that both request the same document title property. It removes the exact duplicate and confirms that the result columns remain unchanged.

A regression test should reproduce QPLIST_S_DUPLICATE, assert the relevant outputs and state, then change only the decisive condition and verify the expected neighboring result or ordinary completion.

Developer and administrator guidance

When QPLIST_S_DUPLICATE crosses COM, RPC, managed-code, scripting, or logging boundaries, preserve the unsigned 32-bit value. Tests should verify the postcondition encoded by QPLIST_S_DUPLICATE, not merely that the severity bit denotes success.

For QPLIST_S_DUPLICATE, document ownership of retry, cancellation, cleanup, and user messaging. Remediation for QPLIST_S_DUPLICATE should be scoped to its task, catalog, transaction, context, media graph, or provider.

References


Looking for a different code? Search another status or error code.