class Async::Container::Supervisor::MemoryMonitor
def run
def run Async do while true @cluster.check! do |process_id, monitor| Console.error(self, "Memory leak detected in process:", process_id: process_id, monitor: monitor) connections = @processes[process_id] connections.each do |connection| path = "/tmp/memory_dump_#{process_id}.json" response = connection.call(do: :memory_dump, path: path, timeout: 30) Console.info(self, "Memory dump saved to:", path, response: response) @block.call(response) if @block end # Kill the process: Console.info(self, "Killing process:", process_id: process_id) Process.kill(:INT, process_id) end sleep(@interval) end end end