File tree Expand file tree Collapse file tree 2 files changed +15
-11
lines changed
extensions/business/cybersec/red_mesh Expand file tree Collapse file tree 2 files changed +15
-11
lines changed Original file line number Diff line number Diff line change @@ -669,16 +669,20 @@ def _maybe_close_jobs(self):
669669 if not job .thread .is_alive () or job .state .get ("done" ):
670670 if job_id not in self .completed_jobs_reports :
671671 self .completed_jobs_reports [job_id ] = {}
672+ # Check if this worker was already reported
673+ already_reported = local_worker_id in self .completed_jobs_reports [job_id ]
672674 # Prepare final report for this job
673675 local_worker_report = job .get_status ()
674676 any_canceled_worker = any_canceled_worker or local_worker_report .get ("canceled" , False )
675677 # Save completed report
676678 self .completed_jobs_reports [job_id ][local_worker_id ] = local_worker_report
677679 reports [local_worker_id ] = local_worker_report
678- self .P ("Worker {} has finished job_id {} for target {}:\n {}" .format (
679- local_worker_id , job_id , local_worker_report ['target' ],
680- self .json_dumps (local_worker_report , indent = 2 )
681- ))
680+ # Only log once when worker first finishes
681+ if not already_reported :
682+ self .P ("Worker {} has finished job_id {} for target {}:\n {}" .format (
683+ local_worker_id , job_id , local_worker_report ['target' ],
684+ self .json_dumps (local_worker_report , indent = 2 )
685+ ))
682686 else :
683687 all_workers_done = False
684688 initiator = job .initiator
Original file line number Diff line number Diff line change 66import ftplib
77import requests
88import traceback
9+ import time
910
1011from copy import deepcopy
1112
@@ -316,21 +317,20 @@ def _check_stopped(self):
316317
317318 def _interruptible_sleep (self ):
318319 """
319- Sleep for a random interval (Dune sand walking), interruptible by stop_event.
320-
321- Uses stop_event.wait(timeout) instead of time.sleep() so that stop requests
322- are handled immediately rather than waiting for the sleep to complete.
320+ Sleep for a random interval (Dune sand walking).
323321
324322 Returns
325323 -------
326324 bool
327- True if stop was requested during sleep (should exit), False otherwise.
325+ True if stop was requested (should exit), False otherwise.
328326 """
329327 if self .scan_max_delay <= 0 :
330328 return False # Delays disabled
331329 delay = random .uniform (self .scan_min_delay , self .scan_max_delay )
332- # wait() returns True if event is set (stop requested), False on timeout
333- return self .stop_event .wait (timeout = delay )
330+ self .P (f"[DUNE] Sleeping { delay :.2f} s (min={ self .scan_min_delay } , max={ self .scan_max_delay } )" )
331+ time .sleep (delay )
332+ # Check if stop was requested during sleep
333+ return self .stop_event .is_set ()
334334
335335
336336 def execute_job (self ):
You can’t perform that action at this time.
0 commit comments