package com.netflix.priam.agent.process; import com.netflix.priam.agent.NodeStatus; import java.util.concurrent.Callable; class Executor implements Callable<Void> { private final AgentProcessManager processManager; private final String id; private final AgentProcess process; private final NodeStatus nodeTool; private final String[] arguments; Executor(AgentProcessManager processManager, String id, AgentProcess process, NodeStatus nodeTool, String[] arguments) { this.processManager = processManager; this.id = id; this.process = process; this.nodeTool = nodeTool; this.arguments = arguments; } @Override public Void call() throws Exception { try { process.performCommand(nodeTool, arguments); } finally { processManager.removeProcess(id); } return null; } }