diff --git a/lbot/database/client.go b/lbot/database/client.go index a6b8199..7425b50 100644 --- a/lbot/database/client.go +++ b/lbot/database/client.go @@ -200,9 +200,13 @@ func (c *MongoClient) RunJob(job config.Job) error { } func (c *MongoClient) SaveWorkload(workload *Workload) error { + oldVersion := workload.Version + workload.Version = primitive.NewObjectID() + _, err := c.client.Database(config.DB).Collection(config.WorkloadCollection). - UpdateOne(context.TODO(), bson.M{"_id": workload.Id}, bson.M{"$set": workload}) + UpdateOne(context.TODO(), bson.M{"_id": workload.Id, "version": oldVersion}, bson.M{"$set": workload}) if err != nil { + workload.Version = oldVersion return err } diff --git a/lbot/lbot.go b/lbot/lbot.go index 2e2087b..bcab1ba 100644 --- a/lbot/lbot.go +++ b/lbot/lbot.go @@ -196,6 +196,7 @@ func (l *Lbot) HandleWorkload() { err := l.SetWorkloadState(workload, database.WorkloadStateToRun) if err != nil { + log.Println("Fetched command with: ", err) // if not saved, propably other agent taked return } @@ -274,7 +275,6 @@ func (l *Lbot) UpdateRunningAgents() error { return err } - log.Info("before agents update") runningAgents, err := client.GetAgentWithHeartbeatWithin() if err != nil { return err @@ -289,7 +289,6 @@ func (l *Lbot) UpdateRunningAgents() error { } } - log.Info("after agents update") return nil } @@ -337,6 +336,7 @@ func (l *Lbot) GenerateWorkload(command *database.Command) ([]*database.Workload log.Println("Generating workloads for agents ", l.runningAgents) for i := 0; i < int(l.runningAgents); i++ { workload := database.Workload{ + Id: primitive.NewObjectID(), CommandId: command.Id, Data: command.Data, State: database.WorkloadStateCreated.String(),