fix double subscribe of sessWatch, minor fixes

pull/179/head
Simon Let 4 years ago
parent 0788ca9005
commit 0fcad6310c
No known key found for this signature in database
GPG Key ID: D650C65DD46D431D
  1. 6
      cmd/daemon/record.go
  2. 2
      cmd/daemon/run-server.go
  3. 2
      cmd/daemon/session-init.go
  4. 8
      pkg/sesswatch/sesswatch.go

@ -30,14 +30,14 @@ func (h *recordHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
log.Println("Payload: ", jsn) log.Println("Payload: ", jsn)
return return
} }
for _, sub := range h.subscribers {
sub <- record
}
part := "2" part := "2"
if record.PartOne { if record.PartOne {
part = "1" part = "1"
} }
log.Println("/record - ", record.CmdLine, " - part", part) log.Println("/record - ", record.CmdLine, " - part", part)
for _, sub := range h.subscribers {
sub <- record
}
}() }()
// fmt.Println("cmd:", r.CmdLine) // fmt.Println("cmd:", r.CmdLine)

@ -38,7 +38,7 @@ func runServer(config cfg.Config, reshHistoryPath, bashHistoryPath, zshHistoryPa
sesswatchRecords := make(chan records.Record) sesswatchRecords := make(chan records.Record)
recordSubscribers = append(recordSubscribers, sesswatchRecords) recordSubscribers = append(recordSubscribers, sesswatchRecords)
sesswatchSessionsToWatch := make(chan records.Record) sesswatchSessionsToWatch := make(chan records.Record)
sessionInitSubscribers = append(sessionInitSubscribers, sesswatchRecords, sesswatchSessionsToWatch) sessionInitSubscribers = append(sessionInitSubscribers, sesswatchSessionsToWatch)
sesswatch.Go(sesswatchSessionsToWatch, sesswatchRecords, sessionDropSubscribers, config.SesswatchPeriodSeconds) sesswatch.Go(sesswatchSessionsToWatch, sesswatchRecords, sessionDropSubscribers, config.SesswatchPeriodSeconds)
// handlers // handlers

@ -30,9 +30,9 @@ func (h *sessionInitHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
log.Println("Payload: ", jsn) log.Println("Payload: ", jsn)
return return
} }
log.Println("/session_init - id:", record.SessionID, " - pid:", record.SessionPID)
for _, sub := range h.subscribers { for _, sub := range h.subscribers {
sub <- record sub <- record
} }
log.Println("/session_init - id:", record.SessionID, " - pid:", record.SessionPID)
}() }()
} }

@ -34,7 +34,7 @@ func (s *sesswatch) waiter(sessionsToWatch chan records.Record, sessionsToWatchR
s.mutex.Lock() s.mutex.Lock()
defer s.mutex.Unlock() defer s.mutex.Unlock()
if s.watchedSessions[id] == false { if s.watchedSessions[id] == false {
log.Println("sesswatch: start watching NEW session ~ pid:", id, "~", pid) log.Println("sesswatch: start watching NEW session - id:", id, "; pid:", pid)
s.watchedSessions[id] = true s.watchedSessions[id] = true
go s.watcher(id, pid) go s.watcher(id, pid)
} }
@ -45,7 +45,7 @@ func (s *sesswatch) waiter(sessionsToWatch chan records.Record, sessionsToWatchR
s.mutex.Lock() s.mutex.Lock()
defer s.mutex.Unlock() defer s.mutex.Unlock()
if s.watchedSessions[id] == false { if s.watchedSessions[id] == false {
log.Println("sesswatch WARN: start watching NEW session (based on /record) ~ pid:", id, "~", pid) log.Println("sesswatch WARN: start watching NEW session (based on /record) - id:", id, "; pid:", pid)
s.watchedSessions[id] = true s.watchedSessions[id] = true
go s.watcher(id, pid) go s.watcher(id, pid)
} }
@ -59,9 +59,9 @@ func (s *sesswatch) watcher(sessionID string, sessionPID int) {
time.Sleep(time.Duration(s.sleepSeconds) * time.Second) time.Sleep(time.Duration(s.sleepSeconds) * time.Second)
proc, err := ps.FindProcess(sessionPID) proc, err := ps.FindProcess(sessionPID)
if err != nil { if err != nil {
log.Println("sesswatch ERROR: error while finding process:", sessionPID) log.Println("sesswatch ERROR: error while finding process - pid:", sessionPID)
} else if proc == nil { } else if proc == nil {
log.Println("sesswatch: Dropping session ~ pid:", sessionID, "~", sessionPID) log.Println("sesswatch: Dropping session - id:", sessionID, "; pid:", sessionPID)
func() { func() {
s.mutex.Lock() s.mutex.Lock()
defer s.mutex.Unlock() defer s.mutex.Unlock()

Loading…
Cancel
Save