diff --git a/.gitignore b/.gitignore index eb01ee94..e076d6e5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .buildx-cache/ +vendor \ No newline at end of file diff --git a/poc/device/agent/database/database.go b/poc/device/agent/database/database.go index 5babae0d..57e568ce 100644 --- a/poc/device/agent/database/database.go +++ b/poc/device/agent/database/database.go @@ -297,10 +297,13 @@ func (db *Database) notify( func (db *Database) SetDesiredState(deploymentId string, state AppDeploymentState) error { db.mu.Lock() + + defer db.TriggerDataPersist() defer db.mu.Unlock() record, exists := db.deployments[deploymentId] if !exists { + // initialise a record object record = &DeploymentRecord{ AppID: deploymentId, DeploymentID: deploymentId, @@ -308,13 +311,8 @@ func (db *Database) SetDesiredState(deploymentId string, state AppDeploymentStat Phase: "pending", LastUpdated: time.Now(), } - db.deployments[deploymentId] = record - db.notify(deploymentId, record, DeploymentChangeTypeDesiredStateAdded) } - // Only update if actually different - // if record.DesiredState == nil || record.DesiredState.AppDeploymentYAMLHash != - // state.AppDeploymentYAMLHash { record.DesiredState = &state record.LastUpdated = time.Now() // Store the digest and URL from the state @@ -324,11 +322,11 @@ func (db *Database) SetDesiredState(deploymentId string, state AppDeploymentStat if state.URL != nil { record.URL = *state.URL } + // record should be updated in db after assigning all fields in record + db.deployments[deploymentId] = record db.notify(deploymentId, record, DeploymentChangeTypeDesiredStateAdded) - db.TriggerDataPersist() - return nil }