hashicorp/nomad · error

unable to determine service state - %w

Error message

unable to determine service state - %w

What it means

Fires in performInstall when querying the state of the existing Nomad Windows service (IsRunning) fails, so the installer cannot tell whether the service must be stopped before reinstalling.

Source

Thrown at command/windows_service_install.go:149

	// Check if the nomad service has already been
	// registered. If so the service needs to be
	// stopped before proceeding with the install.
	exists, err := m.IsServiceRegistered(winsvc.WINDOWS_SERVICE_NAME)
	if err != nil {
		return fmt.Errorf("unable to check for existing service - %w", err)
	}

	if exists {
		nmdSvc, err := m.GetService(winsvc.WINDOWS_SERVICE_NAME)
		if err != nil {
			return fmt.Errorf("could not get existing service to stop - %w", err)
		}

		// If the service is running and the reinstall
		// option was not set, return an error
		running, err := nmdSvc.IsRunning()
		if err != nil {
			return fmt.Errorf("unable to determine service state - %w", err)
		}
		if running && !opts.reinstall {
			return fmt.Errorf("service is already running. Please run the\ncommand again with -reinstall to stop the service and install.")
		}

		if running {
			c.Ui.Output("  Stopping existing nomad service")
			if err := nmdSvc.Stop(); err != nil {
				return fmt.Errorf("unable to stop existing service - %w", err)
			}
		}
	}

	// Install the nomad binary into the system
	if err = c.binaryInstall(opts); err != nil {
		return fmt.Errorf("binary install failed - %w", err)
	}

View on GitHub (pinned to 482b49bf1a)

Solutions

  1. Check service state manually with sc query <service>
  2. Re-run elevated if the query was access-denied
  3. Stop the service manually then retry with -reinstall
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at command/windows_service_install.go:149 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04). Data as JSON: /api/errors/810f8a743f254e1c. Report an issue: GitHub.