7120a729bd
+ DB access is now right and uses copied sessions + DB session is now specifying the safe state and the mode + Fixed the issue with too early ICCC messages regarding to late cache + Add the MIME type for Dart + Fixed the issuse with wrong order of shutdown handlers - TODO: Testing of these changes
47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
package ICCC
|
|
|
|
import "fmt"
|
|
import "time"
|
|
import "labix.org/v2/mgo/bson"
|
|
import "github.com/SommerEngineering/Ocean/Shutdown"
|
|
import "github.com/SommerEngineering/Ocean/ICCC/Scheme"
|
|
import "github.com/SommerEngineering/Ocean/Log"
|
|
import LM "github.com/SommerEngineering/Ocean/Log/Meta"
|
|
|
|
func initCacheTimer() {
|
|
go func() {
|
|
for {
|
|
cacheTimerLogic(true)
|
|
}
|
|
}()
|
|
}
|
|
|
|
func cacheTimerLogic(waiting bool) {
|
|
if Shutdown.IsDown() {
|
|
return
|
|
}
|
|
|
|
lastCount := cacheListenerDatabase.Len()
|
|
selection := bson.D{{`IsActive`, true}}
|
|
entriesIterator := collectionListener.Find(selection).Iter()
|
|
entry := Scheme.Listener{}
|
|
|
|
cacheListenerDatabaseLock.Lock()
|
|
cacheListenerDatabase.Init()
|
|
for entriesIterator.Next(&entry) {
|
|
cacheListenerDatabase.PushBack(entry)
|
|
}
|
|
|
|
cacheListenerDatabaseLock.Unlock()
|
|
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameEXECUTE, `The listener cache was refreshed with the values from the database.`, fmt.Sprintf(`last count=%d`, lastCount), fmt.Sprintf(`new count=%d`, cacheListenerDatabase.Len()))
|
|
|
|
if waiting {
|
|
nextDuration := time.Duration(5) * time.Minute
|
|
if cacheListenerDatabase.Len() == 0 {
|
|
nextDuration = time.Duration(10) * time.Second
|
|
}
|
|
|
|
time.Sleep(nextDuration)
|
|
}
|
|
}
|