little fixes for debugging and shutdown #67

Merged
jeffreypicard merged 1 commit from small_shutdown_fixes into master 2022-10-05 05:24:42 +02:00
3 changed files with 14 additions and 3 deletions

View file

@ -556,7 +556,6 @@ func GetProdDB(name string, secondaryPath string) (*ReadOnlyDBColumnFamily, func
}
db, err := GetDBColumnFamilies(name, secondaryPath, cfNames)
db.OpenIterators = make(map[string][]chan struct{})
cleanupFiles := func() {
err = os.RemoveAll(secondaryPath)
@ -688,18 +687,27 @@ func (db *ReadOnlyDBColumnFamily) Unwind() {
// Shutdown shuts down the db.
func (db *ReadOnlyDBColumnFamily) Shutdown() {
log.Println("Sending message to ShutdownChan...")
db.ShutdownChan <- struct{}{}
log.Println("Locking iterator mutex...")
db.ItMut.Lock()
log.Println("Setting ShutdownCalled to true...")
db.ShutdownCalled = true
log.Println("Notifying iterators to shutdown...")
for _, it := range db.OpenIterators {
it[1] <- struct{}{}
}
log.Println("Waiting for iterators to shutdown...")
for _, it := range db.OpenIterators {
<-it[0]
}
log.Println("Unlocking iterator mutex...")
db.ItMut.Unlock()
log.Println("Sending message to DoneChan...")
<-db.DoneChan
log.Println("Calling cleanup...")
db.Cleanup()
log.Println("Leaving Shutdown...")
}
// RunDetectChanges Go routine the runs continuously while the hub is active

View file

@ -43,8 +43,8 @@ func NewIterateOptions() *IterOptions {
IncludeValue: false,
RawKey: false,
RawValue: false,
ShutdownChan: make(chan struct{}),
DoneChan: make(chan struct{}),
ShutdownChan: make(chan struct{}, 1),
DoneChan: make(chan struct{}, 1),
DB: nil,
CfHandle: nil,
It: nil,

View file

@ -40,12 +40,15 @@ func main() {
log.Println("Shutting down server...")
if s.EsClient != nil {
log.Println("Stopping es client...")
s.EsClient.Stop()
}
if s.GrpcServer != nil {
log.Println("Stopping grpc server...")
s.GrpcServer.GracefulStop()
}
if s.DB != nil {
log.Println("Stopping database connection...")
s.DB.Shutdown()
}