hashicorp/nomad · error

unable to check for existing service - %w

Error message

unable to check for existing service - %w

What it means

Windows service install error in performInstall: m.IsServiceRegistered(WINDOWS_SERVICE_NAME) failed, so the installer cannot tell whether the Nomad service already exists; it aborts before touching the service.

Source

Thrown at command/windows_service_install.go:136

	}
	defer m.Close()

	if err := c.performInstall(m, opts); err != nil {
		c.Ui.Error(fmt.Sprintf("Service install failed: %s", err))
		return 1
	}

	c.Ui.Info("Successfully installed nomad Windows service")
	return 0
}

func (c *WindowsServiceInstallCommand) performInstall(m winsvc.WindowsServiceManager, opts *windowsInstallOpts) error {
	// 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.")
		}

View on GitHub (pinned to 482b49bf1a)

Solutions

  1. Run the command from an elevated (Administrator) prompt
  2. Verify the Windows Service Control Manager is healthy
  3. Check the wrapped OS error for specific SCM access problems
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at command/windows_service_install.go:136 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/9a8da460b28a7ba9. Report an issue: GitHub.