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