refactor(session connections): Worker only closes connections in memory on grace period expiration

pull/1919/head
irenarindos 4 years ago
parent 32dd594029
commit ac9fb8016f

@ -153,7 +153,7 @@ func (w *Worker) sendWorkerStatus(cancelCtx context.Context) {
// don't have any sessions to worry about anyway.
//
// If a length of time has passed since we've been able to communicate, we
// want to start terminating all sessions as a "break glass" kind of
// want to start terminating all connections as a "break glass" kind of
// scenario, as there will be no way we can really tell if these
// connections should continue to exist.
@ -163,9 +163,22 @@ func (w *Worker) sendWorkerStatus(cancelCtx context.Context) {
event.WithInfo("last_status_time", lastStatusTime.String(), "grace_period", gracePeriod),
)
// Run a "cleanup" for all sessions that will not be caught by
// our standard cleanup routine.
w.cleanupConnections(cancelCtx, true)
// Cancel connections if grace period has expired. These Connections will be closed in the
// database on the next successful status report, or via the Controllers dead Worker cleanup connections job.
w.sessionInfoMap.Range(func(key, value interface{}) bool {
si := value.(*session.Info)
si.Lock()
defer si.Unlock()
closedIds := w.cancelConnections(si.ConnInfoMap, true)
for _, connId := range closedIds {
event.WriteSysEvent(cancelCtx, op, "terminated connection due to status grace period expiration", "session_id", si.Id, "connection_id", connId)
}
return true
})
// Exit out of status function; our work here is done and we don't need to create closeConnection requests
return
}
} else {
w.updateTags.Store(false)

Loading…
Cancel
Save