Fix DB bug, and make sure DB INS/DEL/UP occur via txn
diff --git a/changes.go b/changes.go
index 6358307..20e7f6d 100644
--- a/changes.go
+++ b/changes.go
@@ -336,7 +336,7 @@
lastSequence = seq
err := updateLastSequence(seq)
if err != nil {
- log.Panic("Unable to update Sequence in DB")
+ log.Panicf("Unable to update Sequence in DB. Err {%v}", err)
}
}
diff --git a/data.go b/data.go
index 878038d..d9acdad 100644
--- a/data.go
+++ b/data.go
@@ -49,7 +49,12 @@
(Currently, the snapshot never changes, but this is future-proof)
*/
func initDB(db apid.DB) error {
- _, err := db.Exec(`
+ tx, err := db.Begin()
+ if err != nil {
+ log.Errorf("initDB(): Unable to get DB tx err: {%v}", err)
+ return err
+ }
+ _, err = tx.Exec(`
CREATE TABLE IF NOT EXISTS APID (
instance_id text,
apid_cluster_id text,
@@ -58,9 +63,16 @@
);
`)
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
+ }
log.Debug("Database tables created.")
return nil
}
@@ -426,7 +438,7 @@
log.Debugf("updateLastSequence: %s", lastSequence)
- db, err := dataService.DB()
+ db, err := dataService.DBVersion(apidInfo.LastSnapshot)
if err != nil {
log.Errorf("updateLastSequence: Unable to get DB Err: {%v}", err)
return err
@@ -437,7 +449,7 @@
return err
}
- _, err = tx.Exec("UPDATE EDGEX_APID_CLUSTER SET last_sequence=$1;", lastSequence)
+ _, 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)
@@ -450,7 +462,6 @@
return err
}
log.Debugf("UPDATE EDGEX_APID_CLUSTER Success: %s", lastSequence)
- log.Infof("Replication lastSequence=%s", lastSequence)
return nil
}