Revert "Use defer to rollback." This reverts commit e07845799ec68fa0acaac3e868d23941f2007260.
diff --git a/data.go b/data.go index 2ba19c4..8eefe11 100644 --- a/data.go +++ b/data.go
@@ -54,7 +54,6 @@ 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, @@ -64,11 +63,13 @@ ); `) 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 } @@ -442,15 +443,17 @@ 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) @@ -474,12 +477,13 @@ 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 @@ -501,8 +505,13 @@ info.InstanceID, info.ClusterID, "") info.LastSnapshot = "" } - if err == nil { - tx.Commit() + if err != nil { + err = tx.Commit() + if err != nil { + rollbackTxn(tx) + } + } else { + rollbackTxn(tx) } return } @@ -519,7 +528,6 @@ 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) @@ -527,13 +535,20 @@ 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 { - tx.Commit() + err = tx.Commit() + if err != nil { + rollbackTxn(tx) + } + } else { + rollbackTxn(tx) } return err