| Previous | Next |
| ERROR_CANT_EVICT_ACTIVE_NODE | ERROR_OBJECT_IN_LIST |
ERROR_OBJECT_ALREADY_EXISTS
The object already exists.
ERROR_OBJECT_ALREADY_EXISTS is Win32 error 5010 (0x1392) and belongs to Failover clustering cluster object creation. For ERROR_OBJECT_ALREADY_EXISTS, the system description identifies the immediate condition but does not identify the caller, object, policy, device, service instance, or transition that produced it.
Interpret ERROR_OBJECT_ALREADY_EXISTS at the API boundary that returned it. Capture ERROR_OBJECT_ALREADY_EXISTS before logging, cleanup, or another Windows call can replace the thread-local last-error value. For ERROR_OBJECT_ALREADY_EXISTS, compare the recorded inputs with the documented precondition for Failover clustering cluster object creation rather than starting with a broad system repair.
Where this result appears
ERROR_OBJECT_ALREADY_EXISTScan surface during Failover Cluster management during cluster object creation.ERROR_OBJECT_ALREADY_EXISTScan surface during Cluster service processing where a cluster object with the requested identity already exists.ERROR_OBJECT_ALREADY_EXISTScan surface during a role or node transition whose evidence includes object type, name, GUID, and owner.ERROR_OBJECT_ALREADY_EXISTScan surface during automation expected to read and reconcile the existing object; update it when appropriate instead of issuing another blind create.
Likely causes
- For
ERROR_OBJECT_ALREADY_EXISTS, a cluster object with the requested identity already exists. - For
ERROR_OBJECT_ALREADY_EXISTS, the management view for cluster object creation changed before the request committed. - For
ERROR_OBJECT_ALREADY_EXISTS, a concurrent cluster transition invalidated create request and idempotency token. - For
ERROR_OBJECT_ALREADY_EXISTS, the caller attempted recovery without first confirming that it could read and reconcile the existing object; update it when appropriate instead of issuing another blind create.
Diagnostic sequence
Diagnosis of ERROR_OBJECT_ALREADY_EXISTS starts with the exact request type: read, write, create, transition, validation, cancellation, or administrative action. For ERROR_OBJECT_ALREADY_EXISTS, identify the object generation and subsystem owner, then decide whether the failure happened before side effects, during a partial transition, or after completion. For ERROR_OBJECT_ALREADY_EXISTS, this ordering matters in Failover clustering cluster object creation because a blind retry can hide stale state or repeat a non-idempotent change.
- For
ERROR_OBJECT_ALREADY_EXISTS, record object type, name, GUID, and owner. - For
ERROR_OBJECT_ALREADY_EXISTS, record create request and idempotency token. - For
ERROR_OBJECT_ALREADY_EXISTS, record existing object properties. - For
ERROR_OBJECT_ALREADY_EXISTS, record concurrent management operations. - For
ERROR_OBJECT_ALREADY_EXISTS, record UTC timestamp, cluster functional level, and the cluster object creation transition generation.
Correlate ERROR_OBJECT_ALREADY_EXISTS with the owning component’s operational log, the Windows System log, and any subsystem trace. Telemetry for ERROR_OBJECT_ALREADY_EXISTS should preserve native identifiers such as a path or file ID, handle generation, node or peer identity, policy ID, object version, offset and length, or transaction token. Retain decimal 5010, hexadecimal 0x1392, and the producing API even when a localized message is also shown.
State boundary to prove
The decisive boundary for ERROR_OBJECT_ALREADY_EXISTS is whether a cluster object with the requested identity already exists. Prove or disprove that proposition using object type, name, GUID, and owner together with create request and idempotency token. When observations for ERROR_OBJECT_ALREADY_EXISTS disagree, preserve both and inspect the transition between them instead of choosing the more convenient value.
A focused validation for ERROR_OBJECT_ALREADY_EXISTS should recreate the relevant part of this situation: automation times out after creating a group and retries. Discovering the existing matching group makes the operation idempotent. The negative case should keep the responsible condition unchanged and confirm error 5010; the recovery case should change only that condition and verify a successful result without an unrecorded side effect.
Suggested diagnostic fields
For error 5010, keep winerr_5010_api, winerr_5010_object, winerr_5010_state_before, winerr_5010_request, winerr_5010_first_status, winerr_5010_verification. These fields distinguish the initial state, requested transition, first status, and verified recovery result.
Handling, retry, and recovery
Read and reconcile the existing object; update it when appropriate instead of issuing another blind create. For ERROR_OBJECT_ALREADY_EXISTS, generate a focused cluster log for the failure window and preserve the first error rather than only the final management message.
Retry ERROR_OBJECT_ALREADY_EXISTS only after evidence shows a change in Failover clustering cluster object creation. For ERROR_OBJECT_ALREADY_EXISTS, initialization, asynchronous completion, recall, or service readiness can justify bounded backoff; malformed metadata, invalid identifiers, policy rejection, unsupported versions, and integrity failures require correction. Before repeating a write or configuration operation after ERROR_OBJECT_ALREADY_EXISTS, query completion state explicitly.
What to log for support and telemetry
- For
ERROR_OBJECT_ALREADY_EXISTS, log decimal 5010, hexadecimal0x1392, and the producing API. - For
ERROR_OBJECT_ALREADY_EXISTS, log the target object and observed Failover clustering cluster object creation state. - For
ERROR_OBJECT_ALREADY_EXISTS, log caller identity, process and thread IDs, machine or node identity, and UTC time. - For
ERROR_OBJECT_ALREADY_EXISTS, log attempt number, elapsed time, previous result, and any partial side effect. - For
ERROR_OBJECT_ALREADY_EXISTS, retain the first lower-level or component-specific error before Win32 translation.
Difference from nearby codes
For ERROR_OBJECT_ALREADY_EXISTS, eRROR_OBJECT_ALREADY_EXISTS names the cluster-specific boundary for cluster object creation; a generic Win32 paraphrase would lose the object and transition context.
Practical example
Automation times out after creating a group and retries. Discovering the existing matching group makes the operation idempotent.
Developer and administrator guidance
Code that handles ERROR_OBJECT_ALREADY_EXISTS should keep its Win32 domain visible across exceptions, RPC responses, and JSON or REST wrappers. For ERROR_OBJECT_ALREADY_EXISTS, administrators should verify the subsystem evidence before changing policy, deleting state, forcing failover, or replacing storage. Recovery is demonstrated only when a test observes 5010, changes the responsible condition, and confirms that the same operation succeeds without hidden data loss.
References
- Microsoft: System Error Codes (4000–5999) — reference for error 5010.
- Microsoft: Failover clustering documentation — reference for error 5010.
- Microsoft: Get-ClusterLog — reference for error 5010.
- Microsoft: Troubleshoot unexpected cluster failover — reference for error 5010.
Looking for a different code? Search another status or error code.
