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
