From 6d273d107c57440e2d5c1b49b96d400567c441c0 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 8 Oct 2019 16:00:23 +0300 Subject: [PATCH] Added DB reload for SessionS --- cmd/cgr-engine/cgr-engine.go | 2 +- config/config.go | 3 +++ services/dnsagent_it_test.go | 5 +++-- services/ers_it_test.go | 5 +++-- services/sessions.go | 7 +++---- services/sessions_it_test.go | 16 +++++++++++----- 6 files changed, 24 insertions(+), 14 deletions(-) diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go index 419a53e39..781b6ff4b 100644 --- a/cmd/cgr-engine/cgr-engine.go +++ b/cmd/cgr-engine/cgr-engine.go @@ -541,7 +541,7 @@ func main() { attrS.GetIntenternalChan(), tS.GetIntenternalChan(), stS.GetIntenternalChan(), dspS.GetIntenternalChan()) - smg := services.NewSessionService(cfg, dmService.GetDM(), server, chrS.GetIntenternalChan(), + smg := services.NewSessionService(cfg, dmService, server, chrS.GetIntenternalChan(), rals.GetResponder().GetIntenternalChan(), reS.GetIntenternalChan(), tS.GetIntenternalChan(), stS.GetIntenternalChan(), supS.GetIntenternalChan(), attrS.GetIntenternalChan(), cdrS.GetIntenternalChan(), dspS.GetIntenternalChan(), exitChan) diff --git a/config/config.go b/config/config.go index 5462bd33c..e9f550716 100755 --- a/config/config.go +++ b/config/config.go @@ -1580,6 +1580,9 @@ func (cfg *CGRConfig) reloadSection(section string) (err error) { } fallthrough case SessionSJson: + if !fall { + cfg.rldChans[DATADB_JSN] <- struct{}{} // reload datadb before + } cfg.rldChans[SessionSJson] <- struct{}{} if !fall { break diff --git a/services/dnsagent_it_test.go b/services/dnsagent_it_test.go index c6bebeb9e..115910c6d 100644 --- a/services/dnsagent_it_test.go +++ b/services/dnsagent_it_test.go @@ -49,10 +49,11 @@ func TestDNSAgentReload(t *testing.T) { server := utils.NewServer() srvMngr := servmanager.NewServiceManager(cfg, engineShutdown) - sS := NewSessionService(cfg, nil, server, nil, + db := NewDataDBService(cfg) + sS := NewSessionService(cfg, db, server, nil, nil, nil, nil, nil, nil, nil, nil, nil, engineShutdown) srv := NewDNSAgent(cfg, filterSChan, sS.GetIntenternalChan(), nil, engineShutdown) - srvMngr.AddServices(srv, sS, NewLoaderService(cfg, nil, filterSChan, server, cacheSChan, nil, engineShutdown)) + srvMngr.AddServices(srv, sS, NewLoaderService(cfg, nil, filterSChan, server, cacheSChan, nil, engineShutdown), db) if err = srvMngr.StartServices(); err != nil { t.Error(err) } diff --git a/services/ers_it_test.go b/services/ers_it_test.go index 6db08f16c..3e9b230a4 100644 --- a/services/ers_it_test.go +++ b/services/ers_it_test.go @@ -52,10 +52,11 @@ func TestEventReaderSReload(t *testing.T) { engineShutdown := make(chan bool, 1) server := utils.NewServer() srvMngr := servmanager.NewServiceManager(cfg, engineShutdown) - sS := NewSessionService(cfg, nil, server, nil, + db := NewDataDBService(cfg) + sS := NewSessionService(cfg, db, server, nil, nil, nil, nil, nil, nil, nil, nil, nil, engineShutdown) attrS := NewEventReaderService(cfg, filterSChan, sS.GetIntenternalChan(), nil, engineShutdown) - srvMngr.AddServices(attrS, sS, NewLoaderService(cfg, nil, filterSChan, server, nil, nil, engineShutdown)) + srvMngr.AddServices(attrS, sS, NewLoaderService(cfg, nil, filterSChan, server, nil, nil, engineShutdown), db) if err = srvMngr.StartServices(); err != nil { t.Error(err) } diff --git a/services/sessions.go b/services/sessions.go index daee41a75..0d45a39bc 100644 --- a/services/sessions.go +++ b/services/sessions.go @@ -24,7 +24,6 @@ import ( v1 "github.com/cgrates/cgrates/apier/v1" "github.com/cgrates/cgrates/config" - "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/servmanager" "github.com/cgrates/cgrates/sessions" "github.com/cgrates/cgrates/utils" @@ -32,7 +31,7 @@ import ( ) // NewSessionService returns the Session Service -func NewSessionService(cfg *config.CGRConfig, dm *engine.DataManager, +func NewSessionService(cfg *config.CGRConfig, dm *DataDBService, server *utils.Server, chrsChan, respChan, resChan, thsChan, stsChan, supChan, attrsChan, cdrsChan, dispatcherChan chan rpcclient.RpcClientConnection, exitChan chan bool) servmanager.Service { @@ -58,7 +57,7 @@ func NewSessionService(cfg *config.CGRConfig, dm *engine.DataManager, type SessionService struct { sync.RWMutex cfg *config.CGRConfig - dm *engine.DataManager + dm *DataDBService server *utils.Server chrsChan chan rpcclient.RpcClientConnection respChan chan rpcclient.RpcClientConnection @@ -149,7 +148,7 @@ func (smg *SessionService) Start() (err error) { smg.sm = sessions.NewSessionS(smg.cfg, ralsConns, resSConns, threshSConns, statSConns, suplSConns, attrConns, cdrsConn, chargerSConn, - sReplConns, smg.dm, smg.cfg.GeneralCfg().DefaultTimezone) + sReplConns, smg.dm.GetDM(), smg.cfg.GeneralCfg().DefaultTimezone) //start sync session in a separate gorutine go func(sm *sessions.SessionS) { if err = sm.ListenAndServe(smg.exitChan); err != nil { diff --git a/services/sessions_it_test.go b/services/sessions_it_test.go index 6b5e46e09..9e5f1889d 100644 --- a/services/sessions_it_test.go +++ b/services/sessions_it_test.go @@ -77,13 +77,16 @@ func TestSessionSReload(t *testing.T) { make(chan rpcclient.RpcClientConnection, 1), chrS.GetIntenternalChan(), ralS.GetResponder().GetIntenternalChan(), nil, nil, nil, nil) - attrS := NewSessionService(cfg, nil, server, chrS.GetIntenternalChan(), + srv := NewSessionService(cfg, db, server, chrS.GetIntenternalChan(), ralS.GetResponder().GetIntenternalChan(), nil, nil, nil, nil, nil, cdrS.GetIntenternalChan(), nil, engineShutdown) - srvMngr.AddServices(attrS, chrS, schS, ralS, cdrS, NewLoaderService(cfg, nil, filterSChan, server, cacheSChan, nil, engineShutdown), db) + srvMngr.AddServices(srv, chrS, schS, ralS, cdrS, NewLoaderService(cfg, nil, filterSChan, server, cacheSChan, nil, engineShutdown), db) if err = srvMngr.StartServices(); err != nil { t.Error(err) } - if attrS.IsRunning() { + if srv.IsRunning() { + t.Errorf("Expected service to be down") + } + if db.IsRunning() { t.Errorf("Expected service to be down") } var reply string @@ -96,13 +99,16 @@ func TestSessionSReload(t *testing.T) { t.Errorf("Expecting OK ,received %s", reply) } time.Sleep(10 * time.Millisecond) //need to switch to gorutine - if !attrS.IsRunning() { + if !srv.IsRunning() { + t.Errorf("Expected service to be running") + } + if !db.IsRunning() { t.Errorf("Expected service to be running") } cfg.SessionSCfg().Enabled = false cfg.GetReloadChan(config.SessionSJson) <- struct{}{} time.Sleep(10 * time.Millisecond) - if attrS.IsRunning() { + if srv.IsRunning() { t.Errorf("Expected service to be down") } engineShutdown <- true