/** * Waits until visiting is done. Session timeout implicitly completes * the visitor session, but will set an unsuccessful result code. * * @throws InterruptedException If an interrupt signal was received while waiting. */ public void waitUntilDone() throws InterruptedException { final boolean done = waitUntilDone(Duration.ZERO); assert done : "Infinite waitUntilDone timeout should always complete"; }
/** * Waits until visiting is done, or the given timeout (in ms) expires. * Will wait forever if timeout is 0. * * @param timeoutMs The maximum amount of milliseconds to wait. * @return True if visiting is done (either by error or success), false if session has timed out. * @throws InterruptedException If an interrupt signal was received while waiting. * * TODO deprecate this in favor of waitUntilDone(Duration) */ public boolean waitUntilDone(long timeoutMs) throws InterruptedException { return waitUntilDone(Duration.ofMillis(timeoutMs)); }
@Override public boolean waitUntilDone(long timeoutMs) throws InterruptedException { return params.getControlHandler().waitUntilDone(timeoutMs); }
private VisitResult doVisit( VisitorControlHandler visitorControlHandler, LocalDataVisitorHandler localDataVisitorHandler, RestUri restUri) throws RestApiException { try { visitorControlHandler.waitUntilDone(); // VisitorParameters' session timeout implicitly triggers timeout failures. throwIfFatalVisitingError(visitorControlHandler, restUri); } catch (InterruptedException e) { throw new RestApiException(Response.createErrorResponse(500, ExceptionUtils.getStackTrace(e), restUri, RestUri.apiErrorCodes.INTERRUPTED)); } if (localDataVisitorHandler.getErrors().isEmpty()) { Optional<String> continuationToken; if (! visitorControlHandler.getProgress().isFinished()) { continuationToken = Optional.of(visitorControlHandler.getProgress().serializeToString()); } else { continuationToken = Optional.empty(); } return new VisitResult(continuationToken, localDataVisitorHandler.getCommaSeparatedJsonDocuments()); } throw new RestApiException(Response.createErrorResponse(500, localDataVisitorHandler.getErrors(), restUri, RestUri.apiErrorCodes.UNSPECIFIED)); }