stop periodic logging when DB closed.
diff --git a/data/data.go b/data/data.go
index c5b0925..2566afa 100644
--- a/data/data.go
+++ b/data/data.go
@@ -45,7 +45,12 @@
 var log, dbTraceLog apid.LogService
 var config apid.ConfigService
 
-var dbMap = make(map[string]*sql.DB)
+type dbMapInfo struct {
+	db *sql.DB
+	closed chan bool
+}
+
+var dbMap = make(map[string]*dbMapInfo)
 var dbMapSync sync.RWMutex
 
 func CreateDataService() apid.DataService {
@@ -101,12 +106,17 @@
 	dbMapSync.Lock()
 	defer dbMapSync.Unlock()
 
-	db := dbMap[versionedID]
-	if db != nil {
-		dbMap[versionedID] = nil
+	dbm := dbMap[versionedID]
+	if dbm.db != nil {
+		if strings.EqualFold(config.GetString(logger.ConfigLevel), logrus.DebugLevel.String()) {
+			dbm.closed <- true
+		}
 		log.Warn("SETTING FINALIZER")
 		finalizer := Delete(versionedID)
-		runtime.SetFinalizer(db, finalizer)
+		runtime.SetFinalizer(dbm.db, finalizer)
+		dbMap[versionedID] = nil
+	} else {
+		log.Error("Cannot find DB handle for ver {%s} to release", version)
 	}
 
 	return
@@ -114,23 +124,19 @@
 
 func (d *dataService) dbVersionForID(id, version string) (db *sql.DB, err error) {
 
+	var stoplogchan chan bool
 	versionedID := VersionedDBID(id, version)
 
 	dbMapSync.RLock()
-	db = dbMap[versionedID]
+	dbm := dbMap[versionedID]
 	dbMapSync.RUnlock()
-	if db != nil {
-		return
+	if dbm != nil && dbm.db != nil {
+		return dbm.db, nil
 	}
 
 	dbMapSync.Lock()
 	defer dbMapSync.Unlock()
 
-	db = dbMap[versionedID]
-	if db != nil {
-		return
-	}
-
 	dataPath := DBPath(versionedID)
 
 	if err = os.MkdirAll(path.Dir(dataPath), 0700); err != nil {
@@ -175,15 +181,16 @@
 		log.Errorf("error enabling foreign_keys: %s", err)
 		return
 	}
-	dbLvl := config.GetString(logger.ConfigLevel)
-	if strings.EqualFold(dbLvl, logrus.DebugLevel.String()) {
-		go printDBStatsInfo(db, versionedID)
+	if strings.EqualFold(config.GetString(logger.ConfigLevel),
+			logrus.DebugLevel.String()) {
+		stoplogchan = logDBInfo(versionedID, db)
 	}
 
 	db.SetMaxOpenConns(config.GetInt(api.ConfigDBMaxConns))
 	db.SetMaxIdleConns(config.GetInt(api.ConfigDBIdleConns))
 	db.SetConnMaxLifetime(time.Duration(config.GetInt(api.ConfigDBConnsTimeout)) * time.Second)
-	dbMap[versionedID] = db
+	dbInfo := dbMapInfo {db: db, closed: stoplogchan}
+	dbMap[versionedID] = &dbInfo
 	return
 }
 
@@ -212,9 +219,20 @@
 	return path.Join(storagePath, relativeDataPath, id, "sqlite3")
 }
 
-func printDBStatsInfo(db *sql.DB, versionedId string) {
-	tick := time.Duration(statCollectionInterval * time.Second)
-	for _ = range time.Tick(tick) {
-		log.Debugf("Current number of open DB connections for ver {%s} is {%d}", versionedId, db.Stats().OpenConnections)
-	}
+func logDBInfo(versionedId string, db *sql.DB) chan bool {
+	stop := make(chan bool)
+	go func() {
+		for {
+			select {
+			case <-time.After(time.Duration(statCollectionInterval * time.Second)):
+				log.Debugf("Current number of open DB connections for ver {%s} is {%d}",
+					versionedId, db.Stats().OpenConnections)
+			case <-stop:
+				log.Debugf("Stop DB conn. logging for ver {%s}", versionedId)
+				return
+			}
+		}
+	}()
+	return stop
 }
+