| Previous | Next |
| CI_E_USE_DEFAULT_PID | CI_E_UPDATES_DISABLED |
CI_E_DUPLICATE_NOTIFICATION
A second notification exists for the same work ID
CI_E_DUPLICATE_NOTIFICATION is HRESULT 0x80041817 (-2147215337 signed; 2147751959 unsigned). Its severity bit is 1, facility is 4 (FACILITY_ITF for these values), and code field is 0x1817. Standard HRESULT severity rules classify the value as a failure. AllStat describes the value as “There were two notifications for the same workid.”
API stage and meaning
This result belongs to queuing or processing content-index change notifications. The decisive interpretation is that the system receives duplicate change information for one indexed item within the relevant sequence. Keep the symbolic constant and method stage together in logs; its hexadecimal value alone cannot identify the owning transition or input.
The legacy content-index helper layer has explicit object, catalog and service states. In the result investigation, a generic retry can hide lifecycle, ordering or policy defects. This context narrows the responsible component without replacing the code-specific checks below.
Failure paths
- The result investigation should record a watcher retries without an idempotency key.
- The result investigation should record two monitoring sources report the same change.
- The result investigation should record acknowledgment loss causes replay.
- The result investigation should record work-ID mapping merges distinct paths incorrectly.
The useful hypothesis for it must explain both queuing or processing content-index change notifications and the documented condition. Compare the failing case with a control that preserves work ID and catalog generation and changes only notification type and sequence; this prevents unrelated environment differences from dominating the result test.
Observability checklist
- At step 1 for it, work ID and catalog generation
- At step 2 for it, notification type and sequence
- At step 3 for it, producer identity
- At step 4 for it, delivery and acknowledgment timestamps
Capture work ID and catalog generation before releasing objects, closing handles or reconnecting. Retain the raw HRESULT with notification type and sequence, component version, UTC timestamp and correlation ID. Bound the result telemetry to diagnostic metadata because document content, credentials and unrestricted query text may be sensitive.
How to isolate the cause
- Compare payloads and sequence numbers. Associate this observation specifically with this result.
- Determine whether the duplicate is harmless replay or conflicting data.
- Deduplicate at the documented ownership boundary.
- Verify two source paths were not incorrectly mapped to one work ID. Associate this observation specifically with it.
Change one variable per it control run. Preserve the component version and target identity, then alter only the condition described as the system receives duplicate change information for one indexed item within the relevant sequence. This isolates whether it is causal rather than merely repeatable.
Remediation policy
Suppress an identical replay after preserving evidence; process a genuinely newer change under correct ordering. Record whether queuing or processing content-index change notifications produced any content, update or state transition before returning. If completion remains unknown, the path must not replay non-idempotent work until the owner confirms final state.
The retry gate for it should be a concrete change in work ID and catalog generation or notification type and sequence. A timer alone cannot demonstrate that the result contract condition has changed.
Wrong conclusions to avoid
It does not mean the indexed document is duplicated in storage. Without the call boundary for queuing or processing content-index change notifications, it also cannot identify which wrapper or configuration layer introduced the condition.
Comparison
CI_E_OUTOFSEQ_INCREMENT_DATA concerns ordering of incremental-load data, not duplicate notification delivery. In it telemetry, preserve neighboring constants separately because the same visible symptom may require a different caller action, owner or recovery gate.
Developer and administrator actions
- It: At the code boundary, keep work ID and catalog generation beside the returned HRESULT.
- It: In telemetry, correlate notification type and sequence with the target and component generation.
- It: For regression coverage, force the documented condition: the system receives duplicate change information for one indexed item within the relevant sequence.
- It: For operations staff, expose the corrective state change rather than a generic retry button.
- It: After remediation, validate one known-good control and the original failing case.
Worked scenario
A watcher times out waiting for acknowledgment and resends the same update. A stable notification ID makes processing idempotent. In this scenario, handling it 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 helper-function values — official contract information relevant to it.
- Microsoft: Content-Indexing values
- Microsoft: HRESULT values
- Microsoft: Windows Search SQL syntax
Looking for a different code? Search another status or error code.