Skip to content

Commit ed24845

Browse files
committed
fix: worker infinite logging
1 parent f9ef981 commit ed24845

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

extensions/business/cybersec/red_mesh/pentester_api_01.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff 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

extensions/business/cybersec/red_mesh/redmesh_utils.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import ftplib
77
import requests
88
import traceback
9+
import time
910

1011
from 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):

0 commit comments

Comments
 (0)