Fix process identification key

This commit is contained in:
Vladimir Stoilov
2023-03-30 14:43:38 +02:00
parent b9488c1a8f
commit 834282cb0e
8 changed files with 107 additions and 73 deletions

View File

@@ -15,7 +15,7 @@ import (
const processDatabaseNamespace = "network:tree"
var (
processes = make(map[int]*Process)
processes = make(map[string]*Process)
processesLock sync.RWMutex
dbController *database.Controller
@@ -25,11 +25,11 @@ var (
)
// GetProcessFromStorage returns a process from the internal storage.
func GetProcessFromStorage(pid int) (*Process, bool) {
func GetProcessFromStorage(key string) (*Process, bool) {
processesLock.RLock()
defer processesLock.RUnlock()
p, ok := processes[pid]
p, ok := processes[key]
return p, ok
}
@@ -55,11 +55,11 @@ func (p *Process) Save() {
if !p.KeyIsSet() {
// set key
p.SetKey(fmt.Sprintf("%s/%d", processDatabaseNamespace, p.Pid))
p.SetKey(fmt.Sprintf("%s/%s", processDatabaseNamespace, getProcessKey(int32(p.Pid), p.CreatedAt)))
// save
processesLock.Lock()
processes[p.Pid] = p
processes[p.key] = p
processesLock.Unlock()
}
@@ -75,7 +75,7 @@ func (p *Process) Delete() {
// delete from internal storage
processesLock.Lock()
delete(processes, p.Pid)
delete(processes, p.key)
processesLock.Unlock()
// propagate delete