Use defer to rollback.
diff --git a/data.go b/data.go
index 8eefe11..2ba19c4 100644
--- a/data.go
+++ b/data.go
@@ -54,6 +54,7 @@
log.Errorf("initDB(): Unable to get DB tx err: {%v}", err)
return err
}
+ defer rollbackTxn(tx)
_, err = tx.Exec(`
CREATE TABLE IF NOT EXISTS APID (
instance_id text,
@@ -63,13 +64,11 @@
);
`)
if err != nil {
- rollbackTxn(tx)
log.Errorf("initDB(): Unable to tx exec err: {%v}", err)
return err
}
err = tx.Commit()
if err != nil {
- rollbackTxn(tx)
log.Errorf("initDB(): tx commit err: {%v}", err)
return err
}
@@ -443,17 +442,15 @@
log.Errorf("getApidInstanceInfo: Unable to get DB tx Err: {%v}", err)
return err
}
-
+ defer rollbackTxn(tx)
_, err = tx.Exec("UPDATE EDGEX_APID_CLUSTER SET last_sequence=?;", lastSequence)
if err != nil {
log.Errorf("UPDATE EDGEX_APID_CLUSTER Failed: %v", err)
- rollbackTxn(tx)
return err
}
err = tx.Commit()
if err != nil {
log.Errorf("UPDATE EDGEX_APID_CLUSTER Tx Commit err : %v", err)
- rollbackTxn(tx)
return err
}
log.Debugf("UPDATE EDGEX_APID_CLUSTER Success: %s", lastSequence)
@@ -477,13 +474,12 @@
log.Errorf("getApidInstanceInfo: Unable to get DB tx Err: {%v}", err)
return
}
-
+ defer rollbackTxn(tx)
err = tx.QueryRow("SELECT instance_id, apid_cluster_id, last_snapshot_info FROM APID LIMIT 1").
Scan(&info.InstanceID, &savedClusterId, &info.LastSnapshot)
if err != nil {
if err != sql.ErrNoRows {
log.Errorf("Unable to retrieve apidInstanceInfo: %v", err)
- tx.Rollback()
return
} else {
// first start - no row, generate a UUID and store it
@@ -505,13 +501,8 @@
info.InstanceID, info.ClusterID, "")
info.LastSnapshot = ""
}
- if err != nil {
- err = tx.Commit()
- if err != nil {
- rollbackTxn(tx)
- }
- } else {
- rollbackTxn(tx)
+ if err == nil {
+ tx.Commit()
}
return
}
@@ -528,6 +519,7 @@
log.Errorf("updateApidInstanceInfo: Unable to get DB tx Err: {%v}", err)
return err
}
+ defer rollbackTxn(tx)
rows, err := tx.Exec(`
REPLACE
INTO APID (instance_id, apid_cluster_id, last_snapshot_info)
@@ -535,20 +527,13 @@
apidInfo.InstanceID, apidInfo.ClusterID, apidInfo.LastSnapshot)
if err != nil {
log.Errorf("updateApidInstanceInfo: Tx Exec Err: {%v}", err)
- rollbackTxn(tx)
return err
}
n, err := rows.RowsAffected()
if err == nil && n == 0 {
err = errors.New("no rows affected")
- rollbackTxn(tx)
} else if err == nil {
- err = tx.Commit()
- if err != nil {
- rollbackTxn(tx)
- }
- } else {
- rollbackTxn(tx)
+ tx.Commit()
}
return err