RanListManager
- An optimization suggestion (APPROVED) - instead managing a list of
[]*NbIdentity,
manage a map of[string]*NbIdentity
, where key is inventoryName and value is thenbIdentity
.
Code Block | ||
---|---|---|
| ||
type RanListManager struct { rnibDataService services.RNibDataService mux sync.Mutex nbIdentityListnbIdentityMap map[string]*NbIdentity } type IRanListManager interface { InitNbIdentityListInitNbIdentityMap() error AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error UpdateNbIdentityUpdateNbIdentityConnectionStatus(nodeType entities.Node_Type, ranName string, nbIdentityconnectionStatus *entities.NbIdentityConnectionStatus) error DeleteNbIdentityRemoveNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentityranName string) error GetNbIdentityList() []*entities.NbIdentity } |
InitNbIdentityList
Info |
---|
...
|
...
|
AddNbIdentity
...
Info |
---|
SaveNodeb Calls will be followed by a ranListManager.AddNbIdentity(nodeType, nbIdentity) call |
...
UpdateNbIdentity
...
. AFFECTED FLOWS
|
Add Enb REST API
E2 Setup Request coming from NW
UpdateNbIdentityConnectionStatus
Info |
---|
|
RanStateChangeManager
RemoveNbIdentity
Info |
---|
|
...
|
...
|
...
AFFECTED FLOWS
|
Delete ENB REST API
removeServedNrCells)
GetNbIdentityList
- Returns the in-memory nbIdentity list (iterate map values and append to a []*NbIdentity slice)
- Affected flows: Get Nodeb Ids REST API & Red Button
Get Nodeb States REST API
- Change url from /v1/nodeb/ids to /v1/nodeb/states
- Add ConnectionStatus property to NbIdentity proto (already pushed)
- Get nbIdentity list from memory instead of DB
Red Button REST API
- Similarly, get nbIdentity list from memory instead of DB
- getListNodebIds calls:
- delete_all_request_handler
- get_nodeb_id_list_request_handler
- every getListNodebIds call will be replaced by an in-memory call - ranListManager.GetNbIdentityList()
RnibWriter Changes
Modify
We shall modify the following methods:
SaveNodeb(nbIdentity *entities.NbIdentity, nodebInfo *entities.NodebInfo) error
- Change signature to:
SaveNodeb(nbIdentity *entities.NbIdentity, nodebInfo *entities.NodebInfo) error
- Modify implementation:
- Remove UNKNOWN nodeType handling (reason: setup is now deterministic)
- Remove save nbIdentity code - it would be called sequentially externally
- Change signature to:
RemoveEnb(nodebInfo *entities.NodebInfo) error
- Modify implementation:
- Delete remove nbIdentity code - it would be called sequentially externally
- Modify implementation:
Add
Code Block |
---|
AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error |
...
UpdateNbIdentities(nodeType entities.Node_Type, |
...
oldNbIdentities []*entities.NbIdentity, newNbIdentities []*entities.NbIdentity) error |
...
RemoveNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error |
RnibReader Changes
Modify
We shall modify the following methods:
GetListNodebIds() ([]*entities.NbIdentity, error)
- Remove UNKNOWN nodeType handling (reason: setup is now deterministic)
Optimization suggestions
- Instead of managing a SET in REDIS DB, manage a HASH (read more: https://redis.io/topics/data-types | https://redis.io/topics/memory-optimization)