Errors: remove "error" prefix from message

Instead of returning an error "error doing X", just return "doing X". The
fact that it's returned as an error object says enough about that it's
an error.

This also makes it easier to chain error messages, without seeing the
word "error" in every part of the chain.
This commit is contained in:
Sybren A. Stüvel 2022-03-04 11:30:13 +01:00
parent 02ce95070f
commit cd2fe8170e
12 changed files with 38 additions and 38 deletions

View File

@ -413,10 +413,10 @@ func (c *Conf) checkDatabase() {
func (c *Conf) Overwrite() error { func (c *Conf) Overwrite() error {
tempFilename := configFilename + "~" tempFilename := configFilename + "~"
if err := c.Write(tempFilename); err != nil { if err := c.Write(tempFilename); err != nil {
return fmt.Errorf("error writing config to %s: %w", tempFilename, err) return fmt.Errorf("writing config to %s: %w", tempFilename, err)
} }
if err := os.Rename(tempFilename, configFilename); err != nil { if err := os.Rename(tempFilename, configFilename); err != nil {
return fmt.Errorf("error moving %s to %s: %w", tempFilename, configFilename, err) return fmt.Errorf("moving %s to %s: %w", tempFilename, configFilename, err)
} }
log.Info().Str("filename", configFilename).Msg("saved configuration to file") log.Info().Str("filename", configFilename).Msg("saved configuration to file")

View File

@ -127,7 +127,7 @@ func (db *DB) StoreAuthoredJob(ctx context.Context, authoredJob job_compilers.Au
} }
if err := tx.Create(&dbJob).Error; err != nil { if err := tx.Create(&dbJob).Error; err != nil {
return fmt.Errorf("error storing job: %v", err) return fmt.Errorf("storing job: %v", err)
} }
uuidToTask := make(map[string]*Task) uuidToTask := make(map[string]*Task)
@ -151,7 +151,7 @@ func (db *DB) StoreAuthoredJob(ctx context.Context, authoredJob job_compilers.Au
// dependencies are stored below. // dependencies are stored below.
} }
if err := tx.Create(&dbTask).Error; err != nil { if err := tx.Create(&dbTask).Error; err != nil {
return fmt.Errorf("error storing task: %v", err) return fmt.Errorf("storing task: %v", err)
} }
uuidToTask[authoredTask.UUID] = &dbTask uuidToTask[authoredTask.UUID] = &dbTask
@ -172,7 +172,7 @@ func (db *DB) StoreAuthoredJob(ctx context.Context, authoredJob job_compilers.Au
for i, t := range authoredTask.Dependencies { for i, t := range authoredTask.Dependencies {
depTask, ok := uuidToTask[t.UUID] depTask, ok := uuidToTask[t.UUID]
if !ok { if !ok {
return fmt.Errorf("error finding task with UUID %q; a task depends on a task that is not part of this job", t.UUID) return fmt.Errorf("finding task with UUID %q; a task depends on a task that is not part of this job", t.UUID)
} }
deps[i] = depTask deps[i] = depTask
} }
@ -202,7 +202,7 @@ func (db *DB) SaveJobStatus(ctx context.Context, j *Job) error {
Model(j). Model(j).
Updates(Job{Status: j.Status}) Updates(Job{Status: j.Status})
if tx.Error != nil { if tx.Error != nil {
return fmt.Errorf("error saving job status: %w", tx.Error) return fmt.Errorf("saving job status: %w", tx.Error)
} }
return nil return nil
} }
@ -220,14 +220,14 @@ func (db *DB) FetchTask(ctx context.Context, taskUUID string) (*Task, error) {
func (db *DB) SaveTask(ctx context.Context, t *Task) error { func (db *DB) SaveTask(ctx context.Context, t *Task) error {
if err := db.gormDB.WithContext(ctx).Save(t).Error; err != nil { if err := db.gormDB.WithContext(ctx).Save(t).Error; err != nil {
return fmt.Errorf("error saving task: %w", err) return fmt.Errorf("saving task: %w", err)
} }
return nil return nil
} }
func (db *DB) SaveTaskActivity(ctx context.Context, t *Task) error { func (db *DB) SaveTaskActivity(ctx context.Context, t *Task) error {
if err := db.gormDB.Model(t).Updates(Task{Activity: t.Activity}).Error; err != nil { if err := db.gormDB.Model(t).Updates(Task{Activity: t.Activity}).Error; err != nil {
return fmt.Errorf("error saving task activity: %w", err) return fmt.Errorf("saving task activity: %w", err)
} }
return nil return nil
} }

View File

@ -51,7 +51,7 @@ func (db *DB) ScheduleTask(ctx context.Context, w *Worker) (*Task, error) {
var err error var err error
task, err = findTaskForWorker(tx, w) task, err = findTaskForWorker(tx, w)
if err != nil { if err != nil {
return fmt.Errorf("error finding task for worker: %w", err) return fmt.Errorf("finding task for worker: %w", err)
} }
if task == nil { if task == nil {
// No task found, which is fine. // No task found, which is fine.
@ -65,7 +65,7 @@ func (db *DB) ScheduleTask(ctx context.Context, w *Worker) (*Task, error) {
Str("taskID", task.UUID). Str("taskID", task.UUID).
Err(err). Err(err).
Msg("error assigning task to worker") Msg("error assigning task to worker")
return fmt.Errorf("error assigning task to worker: %w", err) return fmt.Errorf("assigning task to worker: %w", err)
} }
return nil return nil
@ -73,7 +73,7 @@ func (db *DB) ScheduleTask(ctx context.Context, w *Worker) (*Task, error) {
if txErr != nil { if txErr != nil {
logger.Error().Err(txErr).Msg("error finding task for worker") logger.Error().Err(txErr).Msg("error finding task for worker")
return nil, fmt.Errorf("error finding task for worker: %w", txErr) return nil, fmt.Errorf("finding task for worker: %w", txErr)
} }
if task == nil { if task == nil {

View File

@ -53,7 +53,7 @@ func (w *Worker) TaskTypes() []string {
func (db *DB) CreateWorker(ctx context.Context, w *Worker) error { func (db *DB) CreateWorker(ctx context.Context, w *Worker) error {
if err := db.gormDB.WithContext(ctx).Create(w).Error; err != nil { if err := db.gormDB.WithContext(ctx).Create(w).Error; err != nil {
return fmt.Errorf("error creating new worker: %w", err) return fmt.Errorf("creating new worker: %w", err)
} }
return nil return nil
} }
@ -77,14 +77,14 @@ func (db *DB) SaveWorkerStatus(ctx context.Context, w *Worker) error {
StatusRequested: w.StatusRequested, StatusRequested: w.StatusRequested,
}).Error }).Error
if err != nil { if err != nil {
return fmt.Errorf("error saving worker: %w", err) return fmt.Errorf("saving worker: %w", err)
} }
return nil return nil
} }
func (db *DB) SaveWorker(ctx context.Context, w *Worker) error { func (db *DB) SaveWorker(ctx context.Context, w *Worker) error {
if err := db.gormDB.WithContext(ctx).Save(w).Error; err != nil { if err := db.gormDB.WithContext(ctx).Save(w).Error; err != nil {
return fmt.Errorf("error saving worker: %w", err) return fmt.Errorf("saving worker: %w", err)
} }
return nil return nil
} }

View File

@ -66,7 +66,7 @@ func (s *Storage) Write(logger zerolog.Logger, jobID, taskID string, logText str
if err := os.MkdirAll(path.Dir(filepath), 0755); err != nil { if err := os.MkdirAll(path.Dir(filepath), 0755); err != nil {
logger.Error().Err(err).Msg("unable to create directory for log file") logger.Error().Err(err).Msg("unable to create directory for log file")
return fmt.Errorf("error creating directory: %w", err) return fmt.Errorf("creating directory: %w", err)
} }
file, err := os.OpenFile(filepath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) file, err := os.OpenFile(filepath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)

View File

@ -94,10 +94,10 @@ func (sm *StateMachine) TaskStatusChange(
logger.Debug().Msg("task state changed") logger.Debug().Msg("task state changed")
if err := sm.persist.SaveTask(ctx, task); err != nil { if err := sm.persist.SaveTask(ctx, task); err != nil {
return fmt.Errorf("error saving task to database: %w", err) return fmt.Errorf("saving task to database: %w", err)
} }
if err := sm.updateJobAfterTaskStatusChange(ctx, task, oldTaskStatus); err != nil { if err := sm.updateJobAfterTaskStatusChange(ctx, task, oldTaskStatus); err != nil {
return fmt.Errorf("error updating job after task status change: %w", err) return fmt.Errorf("updating job after task status change: %w", err)
} }
return nil return nil
} }
@ -253,14 +253,14 @@ func (sm *StateMachine) JobStatusChange(ctx context.Context, job *persistence.Jo
// Persist the new job status. // Persist the new job status.
err = sm.persist.SaveJobStatus(ctx, job) err = sm.persist.SaveJobStatus(ctx, job)
if err != nil { if err != nil {
return fmt.Errorf("error saving job status change %q to %q to database: %w", return fmt.Errorf("saving job status change %q to %q to database: %w",
oldJobStatus, newJobStatus, err) oldJobStatus, newJobStatus, err)
} }
// Handle the status change. // Handle the status change.
newJobStatus, err = sm.updateTasksAfterJobStatusChange(ctx, logger, job, oldJobStatus) newJobStatus, err = sm.updateTasksAfterJobStatusChange(ctx, logger, job, oldJobStatus)
if err != nil { if err != nil {
return fmt.Errorf("error updating job's tasks after job status change: %w", err) return fmt.Errorf("updating job's tasks after job status change: %w", err)
} }
} }
@ -326,7 +326,7 @@ func (sm *StateMachine) cancelTasks(
fmt.Sprintf("Manager cancelled this task because the job got status %q.", job.Status), fmt.Sprintf("Manager cancelled this task because the job got status %q.", job.Status),
) )
if err != nil { if err != nil {
return "", fmt.Errorf("error cancelling tasks of job %s: %w", job.UUID, err) return "", fmt.Errorf("cancelling tasks of job %s: %w", job.UUID, err)
} }
// If cancellation was requested, it has now happened, so the job can transition. // If cancellation was requested, it has now happened, so the job can transition.
@ -380,7 +380,7 @@ func (sm *StateMachine) requeueTasks(
} }
if err != nil { if err != nil {
return "", fmt.Errorf("error queueing tasks of job %s: %w", job.UUID, err) return "", fmt.Errorf("queueing tasks of job %s: %w", job.UUID, err)
} }
// TODO: also reset the 'failed by workers' blacklist. // TODO: also reset the 'failed by workers' blacklist.

View File

@ -176,7 +176,7 @@ func cmdBlenderRenderParams(logger zerolog.Logger, cmd api.Command) (BlenderPara
exeArgs, err := shlex.Split(parameters.exe) exeArgs, err := shlex.Split(parameters.exe)
if err != nil { if err != nil {
logger.Warn().Err(err).Interface("command", cmd).Msg("error parsing 'exe' parameter with shlex") logger.Warn().Err(err).Interface("command", cmd).Msg("error parsing 'exe' parameter with shlex")
return parameters, fmt.Errorf("error parsing 'exe' parameter %q: %w", parameters.exe, err) return parameters, fmt.Errorf("parsing 'exe' parameter %q: %w", parameters.exe, err)
} }
if len(exeArgs) > 1 { if len(exeArgs) > 1 {
allArgsBefore := []string{} allArgsBefore := []string{}

View File

@ -66,19 +66,19 @@ func loadConfig(configWrangler FileConfigWrangler) (WorkerConfig, error) {
cfg = configWrangler.DefaultConfig() cfg = configWrangler.DefaultConfig()
err = configWrangler.WriteConfig(configFilename, "Configuration", cfg) err = configWrangler.WriteConfig(configFilename, "Configuration", cfg)
if err != nil { if err != nil {
return cfg, fmt.Errorf("error writing default config: %w", err) return cfg, fmt.Errorf("writing default config: %w", err)
} }
err = configWrangler.LoadConfig(configFilename, &cfg) err = configWrangler.LoadConfig(configFilename, &cfg)
} }
if err != nil { if err != nil {
return cfg, fmt.Errorf("error loading config from %s: %w", configFilename, err) return cfg, fmt.Errorf("loading config from %s: %w", configFilename, err)
} }
// Validate the manager URL. // Validate the manager URL.
if cfg.Manager != "" { if cfg.Manager != "" {
_, err := ParseURL(cfg.Manager) _, err := ParseURL(cfg.Manager)
if err != nil { if err != nil {
return cfg, fmt.Errorf("error parsing manager URL %s: %w", cfg.Manager, err) return cfg, fmt.Errorf("parsing manager URL %s: %w", cfg.Manager, err)
} }
logger.Debug().Str("url", cfg.Manager).Msg("parsed manager URL") logger.Debug().Str("url", cfg.Manager).Msg("parsed manager URL")
} }

View File

@ -72,7 +72,7 @@ func (te *TaskExecutor) Run(ctx context.Context, task api.AssignedTask) error {
if err == ErrTaskReassigned { if err == ErrTaskReassigned {
return ErrTaskReassigned return ErrTaskReassigned
} }
return fmt.Errorf("error sending 'task started' notification to manager: %w", err) return fmt.Errorf("sending 'task started' notification to manager: %w", err)
} }
for _, cmd := range task.Commands { for _, cmd := range task.Commands {
@ -96,7 +96,7 @@ func (te *TaskExecutor) Run(ctx context.Context, task api.AssignedTask) error {
if err == ErrTaskReassigned { if err == ErrTaskReassigned {
return ErrTaskReassigned return ErrTaskReassigned
} }
return fmt.Errorf("error sending 'task failed' notification to manager: %w", err) return fmt.Errorf("sending 'task failed' notification to manager: %w", err)
} }
return runErr return runErr
} }
@ -105,7 +105,7 @@ func (te *TaskExecutor) Run(ctx context.Context, task api.AssignedTask) error {
if err == ErrTaskReassigned { if err == ErrTaskReassigned {
return ErrTaskReassigned return ErrTaskReassigned
} }
return fmt.Errorf("error sending 'task completed' notification to manager: %w", err) return fmt.Errorf("sending 'task completed' notification to manager: %w", err)
} }
return nil return nil

View File

@ -79,11 +79,11 @@ func (ub *UpstreamBufferDB) OpenDB(ctx context.Context, databaseFilename string)
db, err := sql.Open("sqlite", databaseFilename) db, err := sql.Open("sqlite", databaseFilename)
if err != nil { if err != nil {
return fmt.Errorf("error opening %s: %w", databaseFilename, err) return fmt.Errorf("opening %s: %w", databaseFilename, err)
} }
if err := db.PingContext(ctx); err != nil { if err := db.PingContext(ctx); err != nil {
return fmt.Errorf("error accessing %s: %w", databaseFilename, err) return fmt.Errorf("accessing %s: %w", databaseFilename, err)
} }
ub.db = db ub.db = db
@ -325,7 +325,7 @@ func (ub *UpstreamBufferDB) discardRow(ctx context.Context, tx *sql.Tx, rowID in
_, err := tx.ExecContext(ctx, stmt, rowID) _, err := tx.ExecContext(ctx, stmt, rowID)
if err != nil { if err != nil {
return fmt.Errorf("error un-queueing task update: %w", err) return fmt.Errorf("un-queueing task update: %w", err)
} }
return nil return nil
} }

View File

@ -81,16 +81,16 @@ var swaggerSpec = []string{
func decodeSpec() ([]byte, error) { func decodeSpec() ([]byte, error) {
zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, "")) zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
if err != nil { if err != nil {
return nil, fmt.Errorf("error base64 decoding spec: %s", err) return nil, fmt.Errorf("base64 decoding spec: %s", err)
} }
zr, err := gzip.NewReader(bytes.NewReader(zipped)) zr, err := gzip.NewReader(bytes.NewReader(zipped))
if err != nil { if err != nil {
return nil, fmt.Errorf("error decompressing spec: %s", err) return nil, fmt.Errorf("decompressing spec: %s", err)
} }
var buf bytes.Buffer var buf bytes.Buffer
_, err = buf.ReadFrom(zr) _, err = buf.ReadFrom(zr)
if err != nil { if err != nil {
return nil, fmt.Errorf("error decompressing spec: %s", err) return nil, fmt.Errorf("decompressing spec: %s", err)
} }
return buf.Bytes(), nil return buf.Bytes(), nil

View File

@ -330,7 +330,7 @@ func (a *JobMetadata) UnmarshalJSON(b []byte) error {
var fieldVal string var fieldVal string
err := json.Unmarshal(fieldBuf, &fieldVal) err := json.Unmarshal(fieldBuf, &fieldVal)
if err != nil { if err != nil {
return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) return fmt.Errorf("unmarshaling field %s: %w", fieldName, err)
} }
a.AdditionalProperties[fieldName] = fieldVal a.AdditionalProperties[fieldName] = fieldVal
} }
@ -346,7 +346,7 @@ func (a JobMetadata) MarshalJSON() ([]byte, error) {
for fieldName, field := range a.AdditionalProperties { for fieldName, field := range a.AdditionalProperties {
object[fieldName], err = json.Marshal(field) object[fieldName], err = json.Marshal(field)
if err != nil { if err != nil {
return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) return nil, fmt.Errorf("marshaling '%s': %w", fieldName, err)
} }
} }
return json.Marshal(object) return json.Marshal(object)
@ -383,7 +383,7 @@ func (a *JobSettings) UnmarshalJSON(b []byte) error {
var fieldVal interface{} var fieldVal interface{}
err := json.Unmarshal(fieldBuf, &fieldVal) err := json.Unmarshal(fieldBuf, &fieldVal)
if err != nil { if err != nil {
return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) return fmt.Errorf("unmarshaling field %s: %w", fieldName, err)
} }
a.AdditionalProperties[fieldName] = fieldVal a.AdditionalProperties[fieldName] = fieldVal
} }
@ -399,7 +399,7 @@ func (a JobSettings) MarshalJSON() ([]byte, error) {
for fieldName, field := range a.AdditionalProperties { for fieldName, field := range a.AdditionalProperties {
object[fieldName], err = json.Marshal(field) object[fieldName], err = json.Marshal(field)
if err != nil { if err != nil {
return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) return nil, fmt.Errorf("marshaling '%s': %w", fieldName, err)
} }
} }
return json.Marshal(object) return json.Marshal(object)