Review comment update for Query/Insert as a single txn.
diff --git a/listener.go b/listener.go index 451fe07..f7b7157 100644 --- a/listener.go +++ b/listener.go
@@ -15,6 +15,7 @@ package apidApigeeSync import ( + "database/sql" "github.com/30x/apid-core" "github.com/apigee-labs/transicator/common" ) @@ -58,6 +59,13 @@ } } +func rollbackTxn (tx *sql.Tx) { + err := tx.Rollback() + if err != nil { + log.Panicf("Unable to rollback Transaction. DB in inconsistent state. Err {%v}", err) + } +} + func processSqliteSnapshot(db apid.DB) { var numApidClusters int @@ -75,26 +83,20 @@ log.Panic("Illegal state for apid_cluster. Must be a single row.") } - prep, err := tx.Prepare("ALTER TABLE edgex_apid_cluster ADD COLUMN last_sequence text DEFAULT ''") + _, err = tx.Exec("ALTER TABLE edgex_apid_cluster ADD COLUMN last_sequence text DEFAULT ''") if err != nil { if err.Error() == "duplicate column name: last_sequence" { - tx.Rollback() + rollbackTxn(tx) return } else { log.Panicf("Unable to create last_sequence column on DB. Error {%v}", err.Error()) } } - - _, err = prep.Exec() + err = tx.Commit() if err != nil { - log.Errorf("Snapshot processing DB exec failed. Err: {%v}", err) - prep.Close() - tx.Rollback() + rollbackTxn(tx) return } - prep.Close() - tx.Commit() - } func processChangeList(changes *common.ChangeList) bool {