@Override public void handlePeriodicMaintenance(Operation post) { if (getProcessingStage() != ProcessingStage.AVAILABLE) { logWarning("Skipping maintenance since service is not available: %s ", getUri()); return; } sendRequest(Operation .createGet(getUri()) .setCompletion((op, ex) -> { if (ex != null) { logWarning("Failed to fetch closure state. Reason: %s", ex.getMessage()); post.fail(new Exception("Unable to fetch closure state.")); } else { Closure closure = op.getBody(Closure.class); handleMaintenance(post, closure); } })); }
protected void sendSelfPatch(Closure body) { sendRequest(Operation .createPatch(getUri()) .setBody(body) .setCompletion((o, ex) -> { if (ex != null) { logWarning("Self patch failed: %s", Utils.toString(ex)); } })); }
private void handleMaintenance(Operation post, Closure closure) { sendRequest(Operation .createGet(this, closure.descriptionLink) .setCompletion((o, e) -> { if (e != null) { logWarning("Failed to fetch closure definition. Reason: %s", Utils.toString(e)); sendRequest(Operation .createDelete(getUri()) .setCompletion((dop, dex) -> { if (dex != null) { logWarning("Self delete failed: %s", Utils.toString(dex)); } })); post.fail(new Exception("Unable to fetch closure definition: " + e .getMessage())); } else { ClosureDescription taskDef = o.getBody(ClosureDescription.class); processMaintenance(post, closure, taskDef); } })); }