mirror of
https://github.com/hanzoai/traces.git
synced 2026-10-30 18:20:41 +00:00
161 lines
2.9 KiB
Go
161 lines
2.9 KiB
Go
package work
|
|
|
|
import (
|
|
"sync"
|
|
"time"
|
|
|
|
"github.com/grafana/tempo/pkg/tempopb"
|
|
)
|
|
|
|
type Job struct {
|
|
ID string `json:"id"`
|
|
Type tempopb.JobType `json:"type"`
|
|
JobDetail tempopb.JobDetail `json:"job_detail"`
|
|
Status tempopb.JobStatus `json:"status"`
|
|
mtx sync.Mutex
|
|
CreatedTime time.Time `json:"created_time"`
|
|
StartTime time.Time `json:"start_time"`
|
|
EndTime time.Time `json:"end_time"`
|
|
WorkerID string `json:"worker_id"`
|
|
Retries int `json:"retries"`
|
|
}
|
|
|
|
func (j *Job) Start() {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
|
|
j.Status = tempopb.JobStatus_JOB_STATUS_RUNNING
|
|
j.StartTime = time.Now()
|
|
}
|
|
|
|
func (j *Job) Complete() {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
|
|
j.Status = tempopb.JobStatus_JOB_STATUS_SUCCEEDED
|
|
j.EndTime = time.Now()
|
|
}
|
|
|
|
func (j *Job) Fail() {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
|
|
j.Status = tempopb.JobStatus_JOB_STATUS_FAILED
|
|
j.EndTime = time.Now()
|
|
}
|
|
|
|
func (j *Job) IsComplete() bool {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
return j.Status == tempopb.JobStatus_JOB_STATUS_SUCCEEDED
|
|
}
|
|
|
|
func (j *Job) IsFailed() bool {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
return j.Status == tempopb.JobStatus_JOB_STATUS_FAILED
|
|
}
|
|
|
|
func (j *Job) IsPending() bool {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
return j.Status == tempopb.JobStatus_JOB_STATUS_UNSPECIFIED
|
|
}
|
|
|
|
func (j *Job) IsRunning() bool {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
return j.Status == tempopb.JobStatus_JOB_STATUS_RUNNING
|
|
}
|
|
|
|
func (j *Job) GetID() string {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
return j.ID
|
|
}
|
|
|
|
func (j *Job) GetStatus() tempopb.JobStatus {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
return j.Status
|
|
}
|
|
|
|
func (j *Job) GetCreatedTime() time.Time {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
return j.CreatedTime
|
|
}
|
|
|
|
func (j *Job) GetStartTime() time.Time {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
return j.StartTime
|
|
}
|
|
|
|
func (j *Job) GetEndTime() time.Time {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
return j.EndTime
|
|
}
|
|
|
|
func (j *Job) GetType() tempopb.JobType {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
return j.Type
|
|
}
|
|
|
|
func (j *Job) SetWorkerID(id string) {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
j.WorkerID = id
|
|
}
|
|
|
|
func (j *Job) GetWorkerID() string {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
return j.WorkerID
|
|
}
|
|
|
|
func (j *Job) Tenant() string {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
|
|
return j.JobDetail.Tenant
|
|
}
|
|
|
|
func (j *Job) GetCompactionInput() []string {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
|
|
switch j.Type {
|
|
case tempopb.JobType_JOB_TYPE_COMPACTION:
|
|
return j.JobDetail.Compaction.Input
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func (j *Job) GetCompactionOutput() []string {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
|
|
switch j.Type {
|
|
case tempopb.JobType_JOB_TYPE_COMPACTION:
|
|
return j.JobDetail.Compaction.Output
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func (j *Job) SetCompactionOutput(blocks []string) {
|
|
j.mtx.Lock()
|
|
defer j.mtx.Unlock()
|
|
|
|
switch j.Type {
|
|
case tempopb.JobType_JOB_TYPE_COMPACTION:
|
|
j.JobDetail.Compaction.Output = blocks
|
|
default:
|
|
return
|
|
}
|
|
}
|