Fix Prepare to be on the passed Transaction instead of DB. Old version caused hanging in odd places.
diff --git a/listener.go b/listener.go
index a557a25..c8d9418 100644
--- a/listener.go
+++ b/listener.go
@@ -13,8 +13,6 @@
 	return "ApigeeSync"
 }
 
-// todo: The following was basically just copied from old APID - needs review.
-
 func (h *handler) Handle(e apid.Event) {
 
 	res := true
@@ -31,11 +29,11 @@
 
 	snapData, ok := e.(*common.Snapshot)
 	if ok {
-		res = processSnapshot(snapData, db, txn)
+		res = processSnapshot(snapData, txn)
 	} else {
 		changeSet, ok := e.(*common.ChangeList)
 		if ok {
-			res = processChange(changeSet, db, txn)
+			res = processChange(changeSet, txn)
 		} else {
 			log.Fatal("Received Invalid event. This shouldn't happen!")
 		}
@@ -48,7 +46,7 @@
 	return
 }
 
-func processSnapshot(snapshot *common.Snapshot, db *sql.DB, txn *sql.Tx) bool {
+func processSnapshot(snapshot *common.Snapshot, txn *sql.Tx) bool {
 
 	log.Debugf("Process Snapshot data")
 	res := true
@@ -57,9 +55,9 @@
 
 		switch payload.Name {
 		case "edgex.apid_config":
-			res = insertApidConfig(payload.Rows, db, txn, snapshot.SnapshotInfo)
+			res = insertApidConfig(payload.Rows, txn, snapshot.SnapshotInfo)
 		case "edgex.apid_config_scope":
-			res = insertApidConfigScopes(payload.Rows, db, txn)
+			res = insertApidConfigScopes(payload.Rows, txn)
 		}
 		if res == false {
 			log.Error("Error encountered in Downloading Snapshot for ApidApigeeSync")
@@ -69,7 +67,7 @@
 	return res
 }
 
-func processChange(changes *common.ChangeList, db *sql.DB, txn *sql.Tx) bool {
+func processChange(changes *common.ChangeList, txn *sql.Tx) bool {
 
 	log.Debugf("apigeeSyncEvent: %d changes", len(changes.Changes))
 	var rows []common.Row
@@ -82,7 +80,7 @@
 			switch payload.Operation {
 			case common.Insert:
 				rows = append(rows, payload.NewRow)
-				res = insertApidConfigScopes(rows, db, txn)
+				res = insertApidConfigScopes(rows, txn)
 			}
 		}
 		if res == false {
@@ -96,12 +94,12 @@
 /*
  * INSERT INTO APP_CREDENTIAL op
  */
-func insertApidConfig(rows []common.Row, db *sql.DB, txn *sql.Tx, snapInfo string) bool {
+func insertApidConfig(rows []common.Row, txn *sql.Tx, snapInfo string) bool {
 
 	var scope, id, name, orgAppName, createdBy, updatedBy, Description string
 	var updated, created int64
 
-	prep, err := db.Prepare("INSERT INTO APID_CONFIG (id, _apid_scope, name, umbrella_org_app_name, created, created_by, updated, updated_by, snapshotInfo)VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9);")
+	prep, err := txn.Prepare("INSERT INTO APID_CONFIG (id, _apid_scope, name, umbrella_org_app_name, created, created_by, updated, updated_by, snapshotInfo)VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9);")
 	if err != nil {
 		log.Error("INSERT APID_CONFIG Failed: ", err)
 		return false
@@ -119,7 +117,8 @@
 		ele.Get("updated_by", &updatedBy)
 		ele.Get("description", &Description)
 
-		_, err = txn.Stmt(prep).Exec(
+		s := txn.Stmt(prep)
+		_, err = s.Exec(
 			id,
 			scope,
 			name,
@@ -129,7 +128,7 @@
 			updated,
 			updatedBy,
 			snapInfo)
-
+		s.Close()
 		if err != nil {
 			log.Error("INSERT APID_CONFIG Failed: ", id, ", ", scope, ")", err)
 			return false
@@ -143,12 +142,12 @@
 /*
  * INSERT INTO APP_CREDENTIAL op
  */
-func insertApidConfigScopes(rows []common.Row, db *sql.DB, txn *sql.Tx) bool {
+func insertApidConfigScopes(rows []common.Row, txn *sql.Tx) bool {
 
 	var id, scopeId, apiConfigId, scope, createdBy, updatedBy string
 	var created, updated int64
 
-	prep, err := db.Prepare("INSERT INTO APID_CONFIG_SCOPE (id, _apid_scope, apid_config_id, scope, created, created_by, updated, updated_by)VALUES($1,$2,$3,$4,$5,$6,$7,$8);")
+	prep, err := txn.Prepare("INSERT INTO APID_CONFIG_SCOPE (id, _apid_scope, apid_config_id, scope, created, created_by, updated, updated_by)VALUES($1,$2,$3,$4,$5,$6,$7,$8);")
 	if err != nil {
 		log.Error("INSERT APID_CONFIG_SCOPE Failed: ", err)
 		return false
@@ -166,7 +165,8 @@
 		ele.Get("updated", &updated)
 		ele.Get("updated_by", &updatedBy)
 
-		_, err = txn.Stmt(prep).Exec(
+		s := txn.Stmt(prep)
+		_, err = s.Exec(
 			id,
 			scopeId,
 			apiConfigId,
@@ -175,6 +175,7 @@
 			createdBy,
 			updated,
 			updatedBy)
+		s.Close()
 
 		if err != nil {
 			log.Error("INSERT APID_CONFIG_SCOPE Failed: ", id, ", ", scope, ")", err)