semaphoreui/semaphore · error

error at schedules[ ]

Error message

error at schedules[%d]: %s

What it means

Produced during project restore in services/project/restore.go when the i-th entry of the backup's Schedules list fails in its Restore method. It is an aggregation wrapper: the %s carries the underlying schedule-specific failure (invalid cron, missing template reference, store error) and the %d identifies which schedules[] entry in the backup is broken, so a single bad schedule can be pinpointed and fixed without abandoning the whole restore.

Solutions

  1. Use the reported index to inspect that schedules[] entry in the backup file for malformed or dangling data
  2. Ensure the schedule's referenced template/task exists in the restore target (restore templates first, which this function does before schedules)
  3. Correct or drop the offending schedule entry in the backup and retry the restore
  4. Check the embedded error text for the concrete cause — cron parsing, missing reference, or database failure — and address that cause
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at services/project/restore.go:701 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of semaphoreui/semaphore@1774ccb71a (2026-09-07). Data as JSON: /api/errors/47d0b1988809f825. Report an issue: GitHub.

Appendix: source

Thrown at services/project/restore.go:701

	}

	for i, o := range backup.Integration {
		if err := o.Restore(&b); err != nil {
			return nil, fmt.Errorf("error at integrations[%d]: %s", i, err.Error())
		}
	}

	for _, o := range backup.IntegrationAliases {
		alias := db.IntegrationAlias{
			Alias:     o,
			ProjectID: b.meta.ID,
		}
		_, _ = b.store.CreateIntegrationAlias(alias)
	}

	for i, o := range backup.Schedules {
		if err := o.Restore(&b); err != nil {
			return nil, fmt.Errorf("error at schedules[%d]: %s", i, err.Error())
		}
	}

	for i, o := range backup.Runners {
		if err := o.Restore(&b); err != nil {
			return nil, fmt.Errorf("error at runners[%d]: %s", i, err.Error())
		}
	}

	// Workflows are restored last: their nodes reference templates, inventories
	// and environments by name, all of which must already exist in the project.
	for i, o := range backup.Workflows {
		if err := o.Restore(&b); err != nil {
			return nil, fmt.Errorf("error at workflows[%d]: %s", i, err.Error())
		}
	}

	return &newProject, nil

View on GitHub (pinned to 1774ccb71a)