Create Tables in a Txn.
diff --git a/listener.go b/listener.go
index 9c002f2..9693aa3 100644
--- a/listener.go
+++ b/listener.go
@@ -49,12 +49,12 @@
func processSqliteSnapshot(db apid.DB) {
var numApidClusters int
- apidClusters, err := db.Query("SELECT COUNT(*) FROM edgex_apid_cluster")
+ tx, err := db.Begin()
if err != nil {
- log.Panicf("Unable to read database: %s", err.Error())
+ log.Panicf("Unable to open DB txn: %v", err)
}
- apidClusters.Next()
- err = apidClusters.Scan(&numApidClusters)
+
+ err = tx.QueryRow("SELECT COUNT(*) FROM edgex_apid_cluster").Scan(&numApidClusters)
if err != nil {
log.Panicf("Unable to read database: %s", err.Error())
}
@@ -63,15 +63,26 @@
log.Panic("Illegal state for apid_cluster. Must be a single row.")
}
- _, err = db.Exec("ALTER TABLE edgex_apid_cluster ADD COLUMN last_sequence text DEFAULT ''")
+ prep, err := tx.Prepare("ALTER TABLE edgex_apid_cluster ADD COLUMN last_sequence text DEFAULT ''")
if err != nil {
if err.Error() == "duplicate column name: last_sequence" {
+ tx.Rollback()
return
} else {
- log.Error("[[" + err.Error() + "]]")
log.Panicf("Unable to create last_sequence column on DB. Unrecoverable error ", err)
}
}
+
+ _, err = prep.Exec()
+ if err != nil {
+ log.Debugf("Snapshot processing DB exec failed. Err: %v", err)
+ prep.Close()
+ tx.Rollback()
+ return
+ }
+ prep.Close()
+ tx.Commit()
+
}
func processChangeList(changes *common.ChangeList) bool {