Remove queue, cleanup unnecessary locking, close rows
diff --git a/api_test.go b/api_test.go
index 7c0e810..bdafa9d 100644
--- a/api_test.go
+++ b/api_test.go
@@ -215,6 +215,7 @@
 
 			rows, err := db.Query("SELECT status from gateway_deploy_bundle WHERE id = ?;", deploymentID)
 			Expect(err).ShouldNot(HaveOccurred())
+			defer rows.Close()
 			for rows.Next() {
 				rows.Scan(&deployStatus)
 				Expect(deployStatus).Should(Equal(DEPLOYMENT_STATE_SUCCESS))
diff --git a/data.go b/data.go
index dd18cdb..9133750 100644
--- a/data.go
+++ b/data.go
@@ -3,7 +3,6 @@
 import (
 	"database/sql"
 	"time"
-	"sync"
 )
 
 const (
@@ -17,29 +16,6 @@
 	BUNDLE_TYPE_DEP = 2
 )
 
-/*
-Startup flow:
-	Check deployment queue
-	If anything in queue, initiate deployment retrieval
-Listener flow:
-	Receive deployment event
-	Store deployment event in deployment queue
-	Initiate deployment retrieval
-Deployment Retrieval:
-	Load deployment from deployment queue
-	Retrieve and store each bundle
-	Mark deployment as ready to deploy
-	Trigger deployment
-Deployment:
-
-Tables:
-	gateway_deploy_queue
-		Deployment(s) received and not yet processed (one for now)
-	gateway_deploy_deployment
-	gateway_deploy_bundle
- */
-
-
 type SQLExec interface {
 	Exec(query string, args ...interface{}) (sql.Result, error)
 }
@@ -49,7 +25,7 @@
 func initDB() {
 
 	var count int
-	row := db.QueryRow("SELECT count(*) FROM sqlite_master WHERE type='table' AND name='gateway_deploy_queue';")
+	row := db.QueryRow("SELECT count(*) FROM sqlite_master WHERE type='table' AND name='gateway_deploy_deployment';")
 	if err := row.Scan(&count); err != nil {
 		log.Panicf("Unable to check for tables: %v", err)
 	}
@@ -65,13 +41,6 @@
 	}
 	defer tx.Rollback()
 
-	_, err = tx.Exec("CREATE TABLE gateway_deploy_queue (" +
-		"id varchar(255), manifest text, created_at integer, " +
-		"PRIMARY KEY (id));")
-	if err != nil {
-		log.Panicf("Unable to initialize gateway_deploy_queue: %v", err)
-	}
-
 	_, err = tx.Exec("CREATE TABLE gateway_deploy_deployment (" +
 		"id varchar(255), status integer, created_at integer, " +
 		"modified_at integer, error_code varchar(255), " +
@@ -97,99 +66,6 @@
 	}
 }
 
-var tableLocksLock sync.Mutex
-var tableLocks map[string]*sync.Mutex = map[string]*sync.Mutex{}
-
-func getTableLocker(table string) sync.Locker {
-	tableLocksLock.Lock()
-	defer tableLocksLock.Unlock()
-
-	lock := tableLocks[table]
-	if lock == nil {
-		lock = &sync.Mutex{}
-		tableLocks[table] = lock
-	}
-
-	return lock
-}
-
-// currently only maintains 1 in the queue
-func queueDeployment(deploymentID, manifestString string) error {
-
-	log.Debugf("queuing deployment %s: %s", deploymentID, manifestString)
-
-	getTableLocker("gateway_deploy_queue").Lock()
-	defer getTableLocker("gateway_deploy_queue").Unlock()
-
-	// validate manifest
-	_, err := parseManifest(manifestString)
-	if err != nil {
-		return err
-	}
-
-	// maintains queue at 1
-	// todo: this should be transactional
-	_, err = db.Exec("DELETE FROM gateway_deploy_queue");
-	if err != nil {
-		log.Errorf("DELETE FROM gateway_deploy_queue failed: %v", err)
-		return err
-	}
-
-	_, err = db.Exec("INSERT INTO gateway_deploy_queue (id, manifest, created_at) VALUES (?,?,?);",
-		deploymentID,
-		manifestString,
-		dbTimeNow(),
-	)
-	if err != nil {
-		log.Errorf("INSERT gateway_deploy_queue %s failed: %v", deploymentID, err)
-		return err
-	}
-
-	log.Debugf("deployment %s queued", deploymentID)
-
-	return nil
-}
-
-// committing passed transaction will delete deployment from queue
-// Call using the following guard:
-func getQueuedDeployment() (depID, manifestString string) {
-
-	log.Debug("getting queued deployment")
-
-	getTableLocker("gateway_deploy_queue").Lock()
-	defer getTableLocker("gateway_deploy_queue").Unlock()
-
-	err := db.QueryRow("SELECT id, manifest FROM gateway_deploy_queue ORDER BY created_at ASC LIMIT 1;").
-		Scan(&depID, &manifestString)
-	if err != nil {
-		if err == sql.ErrNoRows {
-			log.Info("No Deployments available to be processed")
-		} else {
-			log.Errorf("SELECT on gateway_deploy_queue failed: %s", err)
-		}
-	}
-
-	log.Debugf("got queued deployment: %s", depID)
-
-	return
-}
-
-func deleteDeploymentFromQueue(depID string) {
-
-	log.Debugf("deleting deployment %s from queue", depID)
-
-	getTableLocker("gateway_deploy_queue").Lock()
-	defer getTableLocker("gateway_deploy_queue").Unlock()
-
-	_, err := db.Exec("DELETE FROM gateway_deploy_queue WHERE id=?;", depID)
-	if err != nil {
-		log.Errorf("DELETE from gateway_deploy_queue failed: %s", err)
-		return
-	}
-
-	log.Debugf("deleted deployment %s from queue", depID)
-}
-
 func dbTimeNow() int64 {
 	return int64(time.Now().UnixNano())
 }
@@ -198,23 +74,18 @@
 
 	log.Debugf("insertDeployment: %s", depID)
 
-	getTableLocker("gateway_deploy_deployment").Lock()
-	defer getTableLocker("gateway_deploy_deployment").Unlock()
-	getTableLocker("gateway_deploy_bundle").Lock()
-	defer getTableLocker("gateway_deploy_bundle").Unlock()
-
 	tx, err := db.Begin()
+	defer tx.Rollback()
 	if err != nil {
 		log.Errorf("insertDeployment begin transaction failed: %v", depID, err)
 		return err
 	}
-	defer tx.Rollback()
 
 	timeNow := dbTimeNow()
 
 	_, err = tx.Exec("INSERT INTO gateway_deploy_deployment " +
 		"(id, status, created_at) VALUES(?,?,?);",
-		depID, DEPLOYMENT_STATE_INPROG, timeNow)
+		depID, DEPLOYMENT_STATE_READY, timeNow)
 	if err != nil {
 		log.Errorf("INSERT gateway_deploy_deployment %s failed: %v", depID, err)
 		return err
@@ -225,7 +96,7 @@
 	_, err = tx.Exec("INSERT INTO gateway_deploy_bundle " +
 		"(id, deployment_id, scope, type, uri, status, created_at) " +
 		"VALUES(?,?,?,?,?,?,?);",
-		dep.System.BundleID, depID, dep.System.Scope, BUNDLE_TYPE_SYS, dep.System.URI, DEPLOYMENT_STATE_INPROG, timeNow)
+		dep.System.BundleID, depID, dep.System.Scope, BUNDLE_TYPE_SYS, dep.System.URI, DEPLOYMENT_STATE_READY, timeNow)
 	if err != nil {
 		log.Errorf("INSERT gateway_deploy_bundle %s:%s failed: %v", depID, dep.System.BundleID, err)
 		return err
@@ -250,6 +121,7 @@
 
 	log.Debugf("INSERT gateway_deploy_deployment %s succeeded", depID)
 
+	incoming <- depID
 	return err
 }
 
@@ -257,20 +129,17 @@
 
 	log.Debugf("updateDeploymentAndBundles: %s", depID)
 
-	getTableLocker("gateway_deploy_deployment").Lock()
-	defer getTableLocker("gateway_deploy_deployment").Unlock()
-	getTableLocker("gateway_deploy_bundle").Lock()
-	defer getTableLocker("gateway_deploy_bundle").Unlock()
-
 	/*
 	 * If the state of deployment was success, update state of bundles and
 	 * its deployments as success as well
 	 */
+	log.Print("begin 3")
 	txn, err := db.Begin()
 	if err != nil {
 		log.Errorf("Unable to begin transaction: %s", err)
 		return err
 	}
+	log.Print("began 3")
 	defer txn.Rollback()
 
 	if rsp.Status == RESPONSE_STATUS_SUCCESS {
@@ -300,6 +169,7 @@
 		return err
 	}
 
+	log.Print("commit 3")
 	err = txn.Commit()
 	if err != nil {
 		log.Errorf("Unable to commit updateDeploymentStatus transaction: %s", err)
@@ -356,7 +226,7 @@
 		}
 	}
 	if err != nil {
-		log.Error("UPDATE gateway_deploy_bundle %s:%s failed: %v", depID, bundleID, err)
+		log.Errorf("UPDATE gateway_deploy_bundle %s:%s failed: %v", depID, bundleID, err)
 		return err
 	}
 
@@ -377,11 +247,13 @@
 // getDeployment returns a fully populated deploymentResponse
 func getDeployment(depID string) (*deployment, error) {
 
-	rows, err := db.Query("SELECT id, type, uri, COALESCE(scope, '') as scope FROM gateway_deploy_bundle WHERE deployment_id=?;", depID)
+	rows, err := db.Query("SELECT id, type, uri, COALESCE(scope, '') as scope " +
+		"FROM gateway_deploy_bundle WHERE deployment_id=?;", depID)
 	if err != nil {
 		log.Errorf("Unable to query gateway_deploy_bundle. Err: %s", err)
 		return nil, err
 	}
+	defer rows.Close()
 
 	depRes := deployment{
 		Bundles:      []bundle{},
diff --git a/deployments.go b/deployments.go
index 3a7a13a..5c1b6b2 100644
--- a/deployments.go
+++ b/deployments.go
@@ -11,7 +11,6 @@
 	"encoding/base64"
 	"path"
 	"errors"
-	"sync"
 )
 
 var (
@@ -142,11 +141,6 @@
 
 	log.Debugf("preparing deployment: %s", depID)
 
-	getTableLocker("gateway_deploy_deployment").Lock()
-	defer getTableLocker("gateway_deploy_deployment").Unlock()
-	getTableLocker("gateway_deploy_bundle").Lock()
-	defer getTableLocker("gateway_deploy_bundle").Unlock()
-
 	err := insertDeployment(depID, dep)
 	if err != nil {
 		log.Errorf("insert deployment failed: %v", err)
@@ -188,37 +182,6 @@
 	return updateDeploymentStatus(db, depID, DEPLOYMENT_STATE_READY, 0)
 }
 
-var queueMutex sync.Mutex
-
-func serviceDeploymentQueue() {
-
-	queueMutex.Lock()
-	defer queueMutex.Unlock()
-
-	log.Debug("Checking for new deployments")
-
-	depID, manifestString := getQueuedDeployment()
-	if depID == "" {
-		return
-	}
-
-	manifest, err := parseManifest(manifestString)
-	if err != nil {
-		return
-	}
-
-	err = prepareDeployment(depID, manifest)
-	if err != nil {
-		log.Errorf("serviceDeploymentQueue prepare deployment failed: %v", depID)
-		return
-	}
-
-	deleteDeploymentFromQueue(depID)
-
-	log.Debugf("Signaling new deployment ready: %s", depID)
-	incoming <- depID
-}
-
 func parseManifest(manifestString string) (dep deployment, err error) {
 	err = json.Unmarshal([]byte(manifestString), &dep)
 	if err != nil {
diff --git a/init.go b/init.go
index 066590d..7fe5ebe 100644
--- a/init.go
+++ b/init.go
@@ -55,8 +55,6 @@
 	initAPI(services)
 	initListener(services)
 
-	go serviceDeploymentQueue()
-
 	log.Debug("end init")
 
 	return nil
diff --git a/listener.go b/listener.go
index 3cb3b4e..5fde4b3 100644
--- a/listener.go
+++ b/listener.go
@@ -87,11 +87,30 @@
 		return err
 	}
 
-	err = queueDeployment(deploymentID, manifest)
-
-	if err == nil {
-		go serviceDeploymentQueue()
-	}
+	//err = queueDeployment(deploymentID, manifest)
+	//
+	//if err == nil {
+	//	go serviceDeploymentQueue()
+	//}
+	bypassQueue(deploymentID, manifest)
 
 	return err
 }
+
+
+func bypassQueue(depID, manifestString string) {
+
+	manifest, err := parseManifest(manifestString)
+	if err != nil {
+		return
+	}
+
+	err = prepareDeployment(depID, manifest)
+	if err != nil {
+		log.Errorf("serviceDeploymentQueue prepare deployment failed: %v", depID)
+		return
+	}
+
+	log.Debugf("Signaling new deployment ready: %s", depID)
+	incoming <- depID
+}
\ No newline at end of file
diff --git a/listener_test.go b/listener_test.go
index 6872c55..b72f9d7 100644
--- a/listener_test.go
+++ b/listener_test.go
@@ -9,8 +9,6 @@
 	"github.com/apigee-labs/transicator/common"
 )
 
-// todo: test servicing the deployment queue
-
 var _ = Describe("listener", func() {
 
 	It("should process ApigeeSync snapshot event", func(done Done) {
@@ -62,10 +60,9 @@
 					return
 				}
 
+				depID, err := getCurrentDeploymentID()
 				Expect(err).ShouldNot(HaveOccurred())
-				depID, manString := getQueuedDeployment()
 				Expect(depID).Should(Equal(deploymentID))
-				Expect(manString).Should(Equal(string(depBytes)))
 
 				close(done)
 			},
@@ -126,9 +123,9 @@
 					return
 				}
 
-				depID, manString := getQueuedDeployment()
+				depID, err := getCurrentDeploymentID()
+				Expect(err).ShouldNot(HaveOccurred())
 				Expect(depID).Should(Equal(deploymentID))
-				Expect(manString).Should(Equal(string(depBytes)))
 
 				close(done)
 			},