- записи, метаданные и файлы съехались под один каталог данных; появилась панель владельца, а gin, goqu, goose и требование CGO ушли - захват задачи стал одним запросом с RETURNING; заведены число попыток, состояние dead и нарастающая пауза вместо признака is_error - имя файла в хранилище задаёт сервис и в журнал не идёт: вместе с идентификатором записи оно собирало бы ссылку на скачивание
33 lines
957 B
Go
33 lines
957 B
Go
package contract
|
|
|
|
import "fmt"
|
|
|
|
type JobNotFoundError struct {
|
|
State string
|
|
Message string
|
|
}
|
|
|
|
func (e *JobNotFoundError) Error() string {
|
|
return fmt.Sprintf("%s - %s", e.State, e.Message)
|
|
}
|
|
|
|
// LostAcquisitionError — захват задачи за время работы шага достался другому.
|
|
// Шаг, получивший его, завершается без записи результата и без ответа
|
|
// отправителю: иначе два воркера пишут в одну задачу по очереди, а отправитель
|
|
// получает два ответа на одну запись.
|
|
type LostAcquisitionError struct {
|
|
JobID string
|
|
}
|
|
|
|
func (e *LostAcquisitionError) Error() string {
|
|
return fmt.Sprintf("%s: job acquisition lost", e.JobID)
|
|
}
|
|
|
|
type NoopJobError struct {
|
|
State string
|
|
}
|
|
|
|
func (e *NoopJobError) Error() string {
|
|
return fmt.Sprintf("%s: no op job occur", e.State)
|
|
}
|