示例#1
0
func (db *SQLDB) completeTask(logger lager.Logger, task *models.Task, failed bool, failureReason, result string, tx *sql.Tx) error {
	now := db.clock.Now().UnixNano()
	_, err := db.update(logger, tx, tasksTable,
		SQLAttributes{
			"failed":             failed,
			"failure_reason":     failureReason,
			"result":             result,
			"state":              models.Task_Completed,
			"first_completed_at": now,
			"updated_at":         now,
			"cell_id":            "",
		},
		"guid = ?", task.TaskGuid,
	)
	if err != nil {
		logger.Error("failed-updating-tasks", err)
		return db.convertSQLError(err)
	}

	task.State = models.Task_Completed
	task.UpdatedAt = now
	task.FirstCompletedAt = now
	task.Failed = failed
	task.FailureReason = failureReason
	task.Result = result
	task.CellId = ""

	return nil
}
示例#2
0
func (db *ETCDDB) markTaskCompleted(task *models.Task, failed bool, failureReason, result string) {
	now := db.clock.Now().UnixNano()
	task.CellId = ""
	task.UpdatedAt = now
	task.FirstCompletedAt = now
	task.State = models.Task_Completed
	task.Failed = failed
	task.FailureReason = failureReason
	task.Result = result
}
示例#3
0
				})
			})
		})

		Context("when the task does not exist", func() {
			It("returns an error", func() {
				started, err := sqlDB.StartTask(logger, "invalid-guid", "cell-id")
				Expect(err).To(Equal(models.ErrResourceNotFound))
				Expect(started).To(BeFalse())
			})
		})

		Context("when the task is already completed", func() {
			BeforeEach(func() {
				expectedTask = model_helpers.NewValidTask("task-other-guid")
				expectedTask.State = models.Task_Completed
				expectedTask.CellId = "completed-guid"
				insertTask(db, serializer, expectedTask, false)
			})

			It("returns an invalid state transition", func() {
				started, err := sqlDB.StartTask(logger, "task-other-guid", "completed-guid")
				modelErr := models.ConvertError(err)
				Expect(modelErr).NotTo(BeNil())
				Expect(modelErr.Type).To(Equal(models.Error_InvalidStateTransition))
				Expect(started).To(BeFalse())

				task, err := sqlDB.TaskByGuid(logger, expectedTask.TaskGuid)
				Expect(err).NotTo(HaveOccurred())
				Expect(task).To(BeEquivalentTo(beforeTask))
			})
示例#4
0
func demoteToCompleted(task *models.Task) *models.Task {
	task.State = models.Task_Completed
	return task
}