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
- Use the reported index to inspect that schedules[] entry in the backup file for malformed or dangling data
- Ensure the schedule's referenced template/task exists in the restore target (restore templates first, which this function does before schedules)
- Correct or drop the offending schedule entry in the backup and retry the restore
- 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, nilView on GitHub (pinned to 1774ccb71a)