[ISSUE-65161406] Use transactions. Remove temp files for failed bundle-downloading.
diff --git a/bundle.go b/bundle.go
index 468760c..54636da 100644
--- a/bundle.go
+++ b/bundle.go
@@ -176,6 +176,9 @@
if err != nil {
log.Errorf("Unable to download blob file blobId=%s err:%v", r.blobId, err)
+ if downloadedFile != "" && os.Remove(downloadedFile) != nil {
+ log.Debugf("Unable to remove temp file %s", downloadedFile)
+ }
return err
}
@@ -184,10 +187,13 @@
err = r.bm.dbMan.updateLocalFsLocation(r.blobId, downloadedFile)
if err != nil {
log.Errorf("updateLocalFsLocation failed: blobId=%s", r.blobId)
+ if downloadedFile != "" && os.Remove(downloadedFile) != nil {
+ log.Debugf("Unable to remove temp file %s", downloadedFile)
+ }
return err
}
- log.Debugf("bundle downloaded: blobId=%s", r.blobId)
+ log.Debugf("bundle downloaded: blobId=%s filename=%s", r.blobId, downloadedFile)
// TODO send changed deployments to subscribers (API call with "block")
//r.bm.apiMan.addChangedDeployment(dep.ID)
diff --git a/data.go b/data.go
index 607c0ab..e1ac8fb 100644
--- a/data.go
+++ b/data.go
@@ -190,19 +190,21 @@
}
func (dbc *dbManager) updateLocalFsLocation(blobId, localFsLocation string) error {
-
- stmt, err := dbc.getDb().Prepare(`
+ txn, err := dbc.getDb().Begin()
+ if err != nil {
+ return err
+ }
+ defer txn.Rollback()
+ _, err = txn.Exec(`
INSERT OR IGNORE INTO apid_blob_available (
id,
local_fs_location
- ) VALUES (?, ?);`)
+ ) VALUES (?, ?);`, blobId, localFsLocation)
if err != nil {
- log.Errorf("PREPARE updateLocalFsLocation failed: %v", err)
+ log.Errorf("INSERT apid_blob_available id {%s} local_fs_location {%s} failed", localFsLocation, err)
return err
}
- defer stmt.Close()
-
- _, err = stmt.Exec(blobId, localFsLocation)
+ err = txn.Commit()
if err != nil {
log.Errorf("UPDATE apid_blob_available id {%s} local_fs_location {%s} failed", localFsLocation, err)
return err