ERROR running force:mdapi:deploy:  SUP0108: A deployment or update operation is already in progress. Please wait for the current operation to complete before starting a new one.

The SUP0108 error indicates that there is an ongoing deployment or update operation. This means that the system is currently busy with another task related to deployment or updating, and it cannot start a new operation until the existing one is completed.

  • Look for lock files or semaphore entries on controllers/agents (common paths: /var/lock/, /tmp/, application data dirs).
  • Check DB table (deployments/operations) for rows with status = in_progress / running / pending and timestamps.
  • Verify no automated scheduler (cron, GitHub Actions, Jenkins triggers) started a duplicate run.
  • Confirm network connectivity between controller and targets — a lost connection may leave operations marked active.

  • Support Topic ID: SUP0108 Error Message: “A deployment or update operation is already in progress. Please wait for the current operation to finish before starting a new one.” Severity: Medium (Operational Blocker) Component: Azure Arc Agent (Guest Configuration / Extensions)

    Verdict: This error is a concurrency control mechanism, not necessarily a system failure. It indicates that the Azure Arc agent has locked the local configuration state to prevent corruption. While the error message is technically accurate, it often appears unnecessarily due to "ghost locks" or slow backend synchronization, making it a frequent source of administrator frustration.


    Prevent overlapping deployment/update operations while avoiding crashes or manual intervention. Instead of failing immediately, the system should:


    If nothing else works, you must remove and re-add the Software Update Point role.

    Warning: This will delete all current update sync statuses. Your clients will eventually resync.

  • Reboot the server.
  • Re-add the Software Update Point role.
  • Perform a full synchronization.
  • if acquire_lock(resource_id, ttl=300s):
      run_deploy()
      release_lock()
    else:
      fail("operation already in progress")