@Override @GuardedBy("hudson.model.Queue.lock") public long check(final AbstractCloudComputer c) { final AbstractCloudSlave computerNode = c.getNode(); if (c.isIdle() && !disabled && computerNode != null) { final long idleMilliseconds = System.currentTimeMillis() - c.getIdleStartMilliseconds(); if (idleMilliseconds > MINUTES.toMillis(idleMinutes)) { LOGGER.log(Level.INFO, "Disconnecting {0}", c.getName()); try { computerNode.terminate(); } catch (InterruptedException | IOException e) { LOGGER.log(WARNING, "Failed to terminate " + c.getName(), e); } } } return 1; }
@Override public void run() { try { AbstractCloudSlave node = computer.getNode(); if (node != null) { node.terminate(); } } catch (InterruptedException e) { LOGGER.log(Level.WARNING, "Failed to terminate " + computer.getName(), e); } catch (IOException e) { LOGGER.log(Level.WARNING, "Failed to terminate " + computer.getName(), e); } } });
protected void done(Executor executor) { final AbstractCloudComputer<?> c = (AbstractCloudComputer) executor.getOwner(); Queue.Executable exec = executor.getCurrentExecutable(); if (executor instanceof OneOffExecutor) { LOG.debug("Not terminating {} because {} was a flyweight task", c.getName(), exec); return; } if (exec instanceof ContinuableExecutable && ((ContinuableExecutable) exec).willContinue()) { LOG.debug("not terminating {} because {} says it will be continued", c.getName(), exec); return; } LOG.debug("terminating {} since {} seems to be finished", c.getName(), exec); done(c); }
private void terminate(final AbstractCloudComputer<?> computer) { LOGGER.info("Terminating computer: " + computer.getName() ); computer.setAcceptingTasks(false); // just in case Computer.threadPoolForRemoting.submit(new Runnable() { @Override public void run() { try { AbstractCloudSlave node = computer.getNode(); if (node != null) { node.terminate(); } } catch (InterruptedException e) { LOGGER.log(Level.WARNING, "Failed to terminate " + computer.getName(), e); } catch (IOException e) { LOGGER.log(Level.WARNING, "Failed to terminate " + computer.getName(), e); } } }); } }
@Override @GuardedBy("hudson.model.Queue.lock") public long check(final AbstractCloudComputer c) { final AbstractCloudSlave computerNode = c.getNode(); if (c.isIdle() && !disabled && computerNode != null) { final long idleMilliseconds = System.currentTimeMillis() - c.getIdleStartMilliseconds(); if (idleMilliseconds > MINUTES.toMillis(idleMinutes)) { LOGGER.log(Level.INFO, "Disconnecting {0}", c.getName()); try { computerNode.terminate(); } catch (InterruptedException e) { LOGGER.log(WARNING, "Failed to terminate " + c.getName(), e); } catch (IOException e) { LOGGER.log(WARNING, "Failed to terminate " + c.getName(), e); } } } return 1; }
public synchronized long check(AbstractCloudComputer c) { if (c.isIdle() && !disabled) { final long idleMilliseconds = System.currentTimeMillis() - c.getIdleStartMilliseconds(); if (idleMilliseconds > MINUTES.toMillis(idleMinutes)) { LOGGER.info("Disconnecting "+c.getName()); try { c.getNode().terminate(); } catch (InterruptedException e) { LOGGER.log(WARNING,"Failed to terminate "+c.getName(),e); } catch (IOException e) { LOGGER.log(WARNING,"Failed to terminate "+c.getName(),e); } } } return 1; }
public synchronized long check(AbstractCloudComputer c) { if (c.isIdle() && !disabled) { final long idleMilliseconds = System.currentTimeMillis() - c.getIdleStartMilliseconds(); if (idleMilliseconds > MINUTES.toMillis(idleMinutes)) { LOGGER.info("Disconnecting "+c.getName()); try { c.getNode().terminate(); } catch (InterruptedException e) { LOGGER.log(WARNING,"Failed to terminate "+c.getName(),e); } catch (IOException e) { LOGGER.log(WARNING,"Failed to terminate "+c.getName(),e); } } } return 1; }
public synchronized long check(AbstractCloudComputer c) { if (c.isIdle() && !disabled) { final long idleMilliseconds = System.currentTimeMillis() - c.getIdleStartMilliseconds(); if (idleMilliseconds > MINUTES.toMillis(idleMinutes)) { LOGGER.info("Disconnecting "+c.getName()); try { c.getNode().terminate(); } catch (InterruptedException e) { LOGGER.log(WARNING,"Failed to terminate "+c.getName(),e); } catch (IOException e) { LOGGER.log(WARNING,"Failed to terminate "+c.getName(),e); } } } return 1; }
public synchronized long check(AbstractCloudComputer c) { if (c.isIdle() && !disabled) { final long idleMilliseconds = System.currentTimeMillis() - c.getIdleStartMilliseconds(); if (idleMilliseconds > MINUTES.toMillis(idleMinutes)) { LOGGER.info("Disconnecting " + c.getName()); try { c.getNode().terminate(); } catch (InterruptedException e) { LOGGER.log(WARNING, "Failed to terminate " + c.getName(), e); } catch (IOException e) { LOGGER.log(WARNING, "Failed to terminate " + c.getName(), e); } } } return 1; }
/** * While x-stream serialisation buggy, copy implementation. */ @Override @GuardedBy("hudson.model.Queue.lock") public long check(final AbstractCloudComputer c) { final AbstractCloudSlave computerNode = c.getNode(); if (c.isIdle() && computerNode != null) { final long idleMilliseconds = System.currentTimeMillis() - c.getIdleStartMilliseconds(); if (idleMilliseconds > MINUTES.toMillis(idleMinutes)) { LOG.info("Disconnecting {}, after {} min timeout.", c.getName(), idleMinutes); try { computerNode.terminate(); } catch (InterruptedException | IOException e) { LOG.warn("Failed to terminate {}", c.getName(), e); } } } return 1; }
@Override @GuardedBy("hudson.model.Queue.lock") public long check(final AbstractCloudComputer acc) { // When the slave is idle we should disable accepting tasks and check to see if it is already trying to // terminate. If it's not already trying to terminate then lets terminate manually. if (acc.isIdle() && !disabled) { final long idleMilliseconds = System.currentTimeMillis() - acc.getIdleStartMilliseconds(); if (idleMilliseconds > TimeUnit2.MINUTES.toMillis(idleMinutes)) { LOG.debug("Disconnecting {}", acc.getName()); done(acc); } } // Return one because we want to check every minute if idle. return 1; }
protected void done(final AbstractCloudComputer<?> c) { c.setAcceptingTasks(false); // just in case synchronized (this) { if (terminating) { return; } terminating = true; } final Future<?> submit = Computer.threadPoolForRemoting.submit(() -> { try { AbstractCloudSlave node = c.getNode(); if (node != null) { node.terminate(); } } catch (InterruptedException | IOException e) { LOG.warn("Failed to terminate " + c.getName(), e); synchronized (DockerOnceRetentionStrategy.this) { terminating = false; } } } ); }
@Override public String toString() { return MoreObjects.toStringHelper(this) .add("name", super.getName()) .add("slave", getNode()) .toString(); }