@@ -165,31 +165,6 @@ public boolean isSessionTimeout(Agent agent, ZonedDateTime compareDate, long tim
165165 return sessionAlive >= timeoutInSeconds ;
166166 }
167167
168- @ Override
169- @ Transactional (propagation = Propagation .NEVER )
170- @ Scheduled (initialDelay = 10 * 1000 , fixedDelay = AGENT_SESSION_TIMEOUT_TASK_PERIOD )
171- public void sessionTimeoutTask () {
172- if (!taskConfig .isEnableAgentSessionTimeoutTask ()) {
173- return ;
174- }
175-
176- LOGGER .traceMarker ("sessionTimeoutTask" , "start" );
177- ZonedDateTime now = DateUtil .utcNow ();
178-
179- for (Zone zone : zoneService .getZones ()) {
180- Collection <Agent > agents = listForOnline (zone .getName ());
181- for (Agent agent : agents ) {
182- if (agent .getSessionId () != null && isSessionTimeout (agent , now , zone .getAgentSessionTimeout ())) {
183- Cmd delSessionCmd = cmdService .create (new CmdInfo (agent .getPath (), CmdType .DELETE_SESSION , null ));
184- cmdDispatchService .dispatch (delSessionCmd .getId (), false );
185- LOGGER .traceMarker ("sessionTimeoutTask" , "Send DELETE_SESSION to agent %s" , agent );
186- }
187- }
188- }
189-
190- LOGGER .traceMarker ("sessionTimeoutTask" , "end" );
191- }
192-
193168 @ Override
194169 public Agent create (AgentPath agentPath , String webhook ) {
195170 Agent agent = agentDao .get (agentPath );
@@ -246,4 +221,41 @@ public void delete(Agent agent){
246221 }
247222
248223 }
224+
225+ @ Override
226+ @ Transactional (propagation = Propagation .NEVER )
227+ @ Scheduled (initialDelay = 10 * 1000 , fixedDelay = SESSION_TIMEOUT_TASK_HEARTBEAT )
228+ public void sessionTimeoutTask () {
229+ if (!taskConfig .isEnableAgentSessionTimeoutTask ()) {
230+ return ;
231+ }
232+
233+ LOGGER .traceMarker ("sessionTimeoutTask" , "start" );
234+ ZonedDateTime now = DateUtil .utcNow ();
235+
236+ for (Zone zone : zoneService .getZones ()) {
237+ Collection <Agent > agents = listForOnline (zone .getName ());
238+ for (Agent agent : agents ) {
239+ if (agent .getSessionId () != null && isSessionTimeout (agent , now , zone .getAgentSessionTimeout ())) {
240+ Cmd delSessionCmd = cmdService .create (new CmdInfo (agent .getPath (), CmdType .DELETE_SESSION , null ));
241+ cmdDispatchService .dispatch (delSessionCmd .getId (), false );
242+ LOGGER .traceMarker ("sessionTimeoutTask" , "Send DELETE_SESSION to agent %s" , agent );
243+ }
244+ }
245+ }
246+
247+ LOGGER .traceMarker ("sessionTimeoutTask" , "end" );
248+ }
249+
250+ @ Override
251+ @ Transactional (propagation = Propagation .NEVER )
252+ @ Scheduled (initialDelay = 10 * 1000 , fixedDelay = IDLE_AGENT_TASK_HEARTBEAT )
253+ public void idleAgentTask () {
254+ for (Zone zone : zoneService .getZones ()) {
255+ List <Agent > availableList = findAvailable (zone .getName ());
256+ if (availableList .size () > 0 ) {
257+ this .dispatchEvent (new AgentResourceEvent (this , zone .getName (), Category .RELEASED ));
258+ }
259+ }
260+ }
249261}
0 commit comments