Merge pull request #58 from 30x/XAPID-1093

Clear the previous  hashmap once new SS is downloaded.
diff --git a/listener.go b/listener.go
index 9c002f2..cf18262 100644
--- a/listener.go
+++ b/listener.go
@@ -25,8 +25,16 @@
 )
 
 func processSnapshot(snapshot *common.Snapshot) {
-	log.Debugf("Snapshot received. Switching to DB version: %s", snapshot.SnapshotInfo)
 
+	var prevDb string
+	if apidInfo.LastSnapshot != "" && apidInfo.LastSnapshot != snapshot.SnapshotInfo {
+		log.Debugf("Release snapshot for {%s}. Switching to version {%s}",
+			apidInfo.LastSnapshot , snapshot.SnapshotInfo)
+		prevDb = apidInfo.LastSnapshot
+	} else {
+		log.Debugf("Process snapshot for version {%s}",
+			snapshot.SnapshotInfo)
+	}
 	db, err := dataService.DBVersion(snapshot.SnapshotInfo)
 	if err != nil {
 		log.Panicf("Unable to access database: %v", err)
@@ -44,6 +52,10 @@
 	setDB(db)
 	log.Debugf("Snapshot processed: %s", snapshot.SnapshotInfo)
 
+	// Releases the DB, when the Connection reference count reaches 0.
+	if prevDb != "" {
+		dataService.ReleaseDB(prevDb)
+	}
 }
 
 func processSqliteSnapshot(db apid.DB) {