Ensure that new deployments in a snapshot will be processed on the new DB
diff --git a/data.go b/data.go index 0f8c412..6cd175a 100644 --- a/data.go +++ b/data.go
@@ -80,13 +80,12 @@ return db } +// caller is responsible for calling dbMux.Lock() and dbMux.Unlock() func SetDB(db apid.DB) { - dbMux.Lock() if unsafeDB == nil { // init API when DB is initialized go InitAPI() } unsafeDB = db - dbMux.Unlock() } // call whenever the list of deployments changes
diff --git a/listener.go b/listener.go index 889e74c..7d9b056 100644 --- a/listener.go +++ b/listener.go
@@ -62,17 +62,17 @@ log.Panicf("Error starting transaction: %v", err) } + // ensure that no new database updates are made on old database + dbMux.Lock() + defer tx.Rollback() for _, table := range snapshot.Tables { var err error switch table.Name { case DEPLOYMENT_TABLE: log.Debugf("Snapshot of %s with %d rows", table.Name, len(table.Rows)) - if len(table.Rows) == 0 { - return - } for _, row := range table.Rows { - addDeployment(tx, row) + err = addDeployment(tx, row) } } if err != nil { @@ -86,6 +86,7 @@ } SetDB(db) + dbMux.Unlock() // if no tables, this a startup event for an existing DB, start bundle downloads that didn't finish if len(snapshot.Tables) == 0 {