Commit Graph

48 Commits

Author SHA1 Message Date
ionutboangiu
652d1e68cf Remove cls fields from service structs
now retrieved through registry.Lookup
2025-01-24 12:02:24 +01:00
armirveliaj
7db65ca62c Clean up DispatcherS 2025-01-17 17:29:46 +01:00
ionutboangiu
7ffe0ae2f5 Remove unused csCh from CoreService struct
Synchronization is now done via state deps.
2025-01-16 15:51:52 +01:00
ionutboangiu
6be26def4f Implement CapService 2025-01-16 15:51:52 +01:00
ionutboangiu
e7152dacf8 Implement ConnManager service
Use it to register internal rpc conns instead of ServManager
DispatcherS now waits for AttributeS to start (only when enabled)
2025-01-14 19:00:37 +01:00
ionutboangiu
bf3d9a3281 Export funcs that wait for service state 2025-01-14 19:00:37 +01:00
ionutboangiu
089dfc00ae Use SyncedChan to handle shutdown 2025-01-14 19:00:37 +01:00
ionutboangiu
c49e67b2ed Handle SERVICE_UP/DOWN states on ServManager layer 2025-01-14 19:00:37 +01:00
ionutboangiu
dab152f976 Integrate StateServiceDOWN + registry related refactor
Removed redundant IsRunning service method
Removed registry from constructors
Pass registry to Start/Reload/Shutdown service methods
2025-01-14 19:00:37 +01:00
ionutboangiu
396227d639 Refactor ServiceIndexer implementation
Renamed to ServiceRegistry
Improved comments
2025-01-10 20:18:08 +01:00
ionutboangiu
20ee079e12 Use the waitForServicesToReachState helper 2025-01-10 20:18:08 +01:00
ionutboangiu
17405af987 Revise service manager logs
Logging is now done as ServiceManager level. Removed any other logs.
2025-01-10 20:18:08 +01:00
ionutboangiu
c8a3ebe5e8 Use channel instead of context to handle shutdown 2025-01-10 20:18:08 +01:00
ionutboangiu
da2052e7b3 Implement FilterService
And use ServiceIndexer to sync with it
2024-12-12 11:55:14 +01:00
ionutboangiu
55ecdf45e4 Remove clsChan in favor of using the service indexer 2024-12-12 11:55:14 +01:00
ionutboangiu
77af4f95b3 Remove anzCh in favor of using the service indexer 2024-12-10 18:53:13 +01:00
ionutboangiu
0783984bfe Remove srvDep from services that don't use it 2024-12-05 20:12:08 +01:00
ionutboangiu
79e461e7c5 Remove redundant internal channels
only from services that have dedicated files
2024-12-04 19:28:50 +01:00
ionutboangiu
cfdb3e80ca Integrate state deps across services for SERVICE_UP 2024-12-04 19:28:50 +01:00
ionutboangiu
c29f1fdd35 Remove services/cgr-engine.go
Trying to move services init before CGREngine constructor makes it pointless,
as it's only used as a dependency storage for services init.
2024-12-04 09:06:59 +01:00
DanB
476f5ba877 Services with IntRPCConn method 2024-11-30 19:13:19 +01:00
DanB
6b241ee35b Adding serviceIndexer and StateDependencies 2024-11-28 14:56:03 +01:00
ionutboangiu
1453234293 Use channel instead of wait func (AnalyzerS) 2024-11-14 17:48:09 +01:00
ionutboangiu
59f8b1379e Use channel instead of wait func (CLS) 2024-11-14 17:48:09 +01:00
ionutboangiu
21409fc92e Add new CommonListenerService 2024-11-14 17:48:09 +01:00
ionutboangiu
0d9358cf30 Ensure services wait for AnalyzerS to be initiated
Same logic as waiting for FilterS/DataDBService.
The difference will be that services will only wait when AnalyzerS
is enabled.
2024-11-14 17:48:09 +01:00
ionutboangiu
5bf8f1756c Extract cores.Server into new commonlisteners package
Functionality is the same.
Server has been renamed to CommonListenerS.
2024-11-04 21:23:15 +01:00
ionutboangiu
c7dbcaea03 Revise CPU/Memory profiling
CPU profiling changes:

cgr-engine.go:
- use filepath.Join instead of path.Join
- handle *CoreService.StopCPUProfiling error inside deferred function
- same with the error from *os.File.Close()

cores/core.go:
- StartCPUProfile now returns an *os.File (as opposed to an io.WriteCloser),
  because os.File.Stat is used beforehand to check if a handler of the file is
  already active and confirm the status of profiling.  Asserting the type would
  have worked as well.
- handle pprof.StartCPUProfile error and ensure file is closed before returning
- log file close error as a warning if it occurs
- return missing mandatory error with correct path field name ('DirPath')
- no need to check if fileCPU is nil for profiling status
  - pprof.StartCPUProfiling will return an error if profiling is already started
  - os.File.Close() will return ErrClosed if profiling is already stopped
- differentiate between calling StopCPUProfiling when profiling hasn't started
and when it was already stopped by returning appropriate errors

Memory profiling changes:

- merge StopChanMemProf with StopMemoryProfiling
- remove fileMEM and stopMemProf from struct and constructors
- add separate mutex for memory profiling, ensure thread safety
- handle all significant errors
- log error if StopMemoryProfiling fails during CoreS Shutdown
- ignore errors if profiling inactive in Shutdown and deferred Stop
- move validations inside V1 functions
- return error if StartMemoryProfiling already started
- return error if StopMemoryProfiling already stopped or never started
- close profiling loop on error, not the cgr-engine
- StopMemoryProfiling closes channel and profiling loop writes final profile
- rename Path to DirPath for mandatory field error
- rename memprof_nrfiles flag to memprof_maxfiles
- increase default memprof_interval
- consider MaxFiles <= 0 as unlimited
- move memory profiling logic after starting services
- use CoreService Start/StopMemoryProfiling in main
- remove final memory profile block (created by deferred Stop)
- convert MemProfiling to method on CoreService and rename to profileMemory
- use Ticker for recurrent actions instead of Timer
- compute mem_final.prof full path in StartMemoryProfiling
- suffix profile files with current time instead of numbers
- update dispatcher methods after changes
- move MemoryPrf from utils to cores, rename to MemoryProfilingParams
- add logs for starting/stopping profiling
- added the possibility to disable timestamps in the memory profile file names
  and use increments of 1 instead.

Other changes:

- improved integration tests for flags (now table tests)
- improved profiling integration tests
2024-11-01 15:59:39 +01:00
andronache98
ecdf5e54ea Changed headers 2022-03-09 14:14:30 +01:00
andronache98
9ec56f5155 Changed headers 2022-03-09 14:14:30 +01:00
Trial97
904a6817e4 Updated internal connections 2021-11-17 18:36:40 +01:00
Trial97
a4ebbfe67b Updated services 2021-11-17 18:36:40 +01:00
Trial97
0ed0b0e7a6 Updated more services 2021-09-13 16:08:39 +02:00
Trial97
87ce843810 Updated services 2021-09-13 16:08:39 +02:00
Trial97
cea082eb7f Updated CGREngine structure 2021-09-13 16:08:39 +02:00
porosnicuadrian
89c6fc81c9 LIttle fix for MemProf final file 2021-07-08 09:56:26 +02:00
porosnicuadrian
2aeacca908 Finished adding final_memprof file in stop api 2021-07-08 09:56:26 +02:00
porosnicuadrian
fe1f6c37da Fixes in cores/services and cgr-engine by adding memoryPorfiling 2021-07-03 16:42:03 +02:00
porosnicuadrian
a224091ea2 Tested CPUProfile apis 2021-06-29 10:20:56 +02:00
porosnicuadrian
4b03790af2 Added CPUProfile apis 2021-06-29 10:20:56 +02:00
nickolasdaniel
8748ad29c8 Implemented Shutdown API and renamed cmd/cgr- test files 2021-06-14 15:54:58 +02:00
nickolasdaniel
fcddc96f30 Added CoreSv1 APIs back 2021-06-11 11:55:48 +02:00
porosnicuadrian
e865e5709a Nothing to wait on channel of CLientConnector 2021-04-26 12:59:23 +02:00
Trial97
cfbe6e709d Added AdminSv1 service 2021-04-13 13:35:03 +02:00
Trial97
3406d3c7c9 Updated based on new rpc library 2021-04-13 13:35:03 +02:00
Trial97
222363f433 Added service dependency map to control the shutdown order. Fixes #2472 2020-12-08 12:59:44 +01:00
Trial97
128e678ef2 Updated caps stats to use cache onEvict function 2020-11-27 08:41:56 +01:00
Trial97
a81fce8341 Updated services shutdown 2020-11-16 10:11:46 +01:00