AZURE
ConflictError - Conflict Error: Resource State Constraint Violation
The operation conflicts with the resource's current state—either the provisioningState blocks it (like "Deleting" or "Failed"), or a uniqueness constraint is violated (name already exists). This 409 client-side error means ARM checked the resource state and constraints before allowing the operation. Resources in "Deleting" state block all operations while ARM processes the deletion in the background (timing varies by resource type). Globally unique resources like storage accounts require names unique across all Azure subscriptions. Common in VMs, AKS clusters, Azure SQL databases, and App Service deployments.
#Common Causes
- →Resource in Deleting State: Resources in "Deleting" provisioning state block all other operations while ARM processes the deletion in the background. ARM blocks concurrent operations to prevent race conditions. Deletion time varies by resource type (commonly 1-5 minutes, not guaranteed).
- →Resource in Failed State: Resources in "Failed" provisioning state may block certain operations depending on the resource type. Some operations require the resource to be in "Succeeded" state. Failed resources may need to be deleted and recreated, but this behavior varies by resource type.
- →Uniqueness Constraint Violation: A resource with that name already exists. Globally unique resources (e.g., storage accounts, Key Vaults) must have names unique across all Azure subscriptions. Other resources may have uniqueness scoped to a resource group or subscription (varies by resource type).
- →Active Resource Lease: Active resource leases block delete/update operations until the lease is broken or expires. Some resource types (e.g., Storage blobs) use leases to prevent concurrent modifications. Lease duration and behavior vary by resource type.
✓Solutions
- 1Step 1: Diagnose - Check resource provisioning state: az resource show --ids <resource-id> --query "properties.provisioningState" --output table
- 2Step 2: Diagnose - Check for existing resources with the same name: az resource list --query "[?name=='<name>'].{id:id, name:name, type:type}" --output table
- 3Step 3: Diagnose - Check storage account name availability: az storage account check-name --name <account-name> --output table
- 4Step 4: Diagnose - Check Key Vault name availability: az keyvault check-name --name <vault-name> --output table
- 5Step 5: Fix - Wait for deletion to complete if resource is in "Deleting" state: az resource wait --ids <resource-id> --deleted --timeout 600
- 6Step 6: Fix - Delete and recreate resource if it's in "Failed" state (varies by resource type).
- 7Step 7: Fix - Use a different name if name conflict exists. Check name availability before creation.
- 8Step 8: Fix - Break active leases for Storage blobs: az storage blob lease break --container-name <container> --blob-name <blob> --account-name <account>
- 9Step 9: Verify - Retry your operation. It should succeed instead of returning ConflictError.
</>Code Examples
Resource State and Conflict Diagnosis
1# This script helps diagnose ConflictError by checking resource state and name conflicts
2
3# Step 1: Example resource ID (replace with your actual resource ID)
4RESOURCE_ID="/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Compute/virtualMachines/my-vm"
5echo "Checking resource: $RESOURCE_ID"
6
7# Step 2: Check resource provisioning state
8echo "Checking resource provisioning state..."
9PROVISIONING_STATE=$(az resource show --ids $RESOURCE_ID --query "properties.provisioningState" -o tsv 2>/dev/null)
10if [ ! -z "$PROVISIONING_STATE" ]; then
11 echo "Provisioning state: $PROVISIONING_STATE"
12 if [ "$PROVISIONING_STATE" == "Deleting" ]; then
13 echo "Resource is being deleted. Waiting for deletion to complete..."
14 az resource wait --ids $RESOURCE_ID --deleted --timeout 600
15 elif [ "$PROVISIONING_STATE" == "Failed" ]; then
16 echo "WARNING: Resource is in Failed state. May need to delete and recreate."
17 fi
18else
19 echo "Resource not found or inaccessible"
20fi
21
22# Step 3: Check for name conflicts (example: storage account)
23ACCOUNT_NAME="mystorageaccount"
24echo "Checking storage account name availability: $ACCOUNT_NAME"
25az storage account check-name --name $ACCOUNT_NAME --output table
26
27# Step 4: Check for name conflicts (example: Key Vault)
28VAULT_NAME="my-keyvault"
29echo "Checking Key Vault name availability: $VAULT_NAME"
30az keyvault check-name --name $VAULT_NAME --output table
31
32# Step 5: Search for existing resources by name
33RESOURCE_NAME="my-vm"
34echo "Searching for existing resources with name: $RESOURCE_NAME"
35az resource list --query "[?name=='$RESOURCE_NAME'].{id:id, name:name, type:type, location:location}" --output table
36
37# Step 6: Check for active leases on Storage blobs (if applicable)
38STORAGE_ACCOUNT="mystorageaccount"
39CONTAINER_NAME="mycontainer"
40BLOB_NAME="myblob.txt"
41echo "Checking for active leases on blob: $BLOB_NAME"
42# Note: Breaking leases requires storage account key or connection string
43# az storage blob lease break --container-name $CONTAINER_NAME --blob-name $BLOB_NAME --account-name $STORAGE_ACCOUNT
44
45# Step 7: Wait for resource state to change (if needed)
46if [ "$PROVISIONING_STATE" == "Deleting" ]; then
47 echo "Waiting for resource deletion to complete..."
48 az resource wait --ids $RESOURCE_ID --deleted --timeout 600
49 echo "Deletion complete"
50fi↗Related Errors
Provider Information
This error code is specific to AZURE services. For more information, refer to the official AZURE documentation.