@Override public ListenableFuture<?> isBlocked() { CompletableFuture<?> pageSourceBlocked = pageSource.isBlocked(); return pageSourceBlocked.isDone() ? NOT_BLOCKED : toListenableFuture(pageSourceBlocked); }
@Override public ListenableFuture<?> isBlocked() { if (!blocked.isDone()) { return blocked; } if (source != null) { CompletableFuture<?> pageSourceBlocked = source.isBlocked(); return pageSourceBlocked.isDone() ? NOT_BLOCKED : toListenableFuture(pageSourceBlocked); } return NOT_BLOCKED; }
@Override public ListenableFuture<?> isBlocked() { if (!blocked.isDone()) { return blocked; } if (pageSource != null) { CompletableFuture<?> pageSourceBlocked = pageSource.isBlocked(); return pageSourceBlocked.isDone() ? NOT_BLOCKED : toListenableFuture(pageSourceBlocked); } return NOT_BLOCKED; }
@Override public void finish() { if (state == State.RUNNING) { state = State.FINISHING; finishFuture = toListenableFuture(pageSource().finish()); } }
@Override public ListenableFuture<SplitBatch> getNextBatch(ConnectorPartitionHandle partitionHandle, Lifespan lifespan, int maxSize) { ListenableFuture<ConnectorSplitBatch> nextBatch = toListenableFuture(source.getNextBatch(partitionHandle, maxSize)); return Futures.transform(nextBatch, splitBatch -> { ImmutableList.Builder<Split> result = ImmutableList.builder(); for (ConnectorSplit connectorSplit : splitBatch.getSplits()) { result.add(new Split(connectorId, transactionHandle, connectorSplit, lifespan)); } return new SplitBatch(result.build(), splitBatch.isNoMoreSplits()); }, directExecutor()); }
@Override public void addInput(Page page) { requireNonNull(page, "page is null"); checkState(needsInput(), "Operator does not need input"); Block[] blocks = new Block[columnChannels.size()]; for (int outputChannel = 0; outputChannel < columnChannels.size(); outputChannel++) { blocks[outputChannel] = page.getBlock(columnChannels.get(outputChannel)); } OperationTimer timer = new OperationTimer(statisticsCpuTimerEnabled); statisticAggregationOperator.addInput(page); timer.end(statisticsTiming); ListenableFuture<?> blockedOnAggregation = statisticAggregationOperator.isBlocked(); CompletableFuture<?> future = pageSink.appendPage(new Page(blocks)); updateMemoryUsage(); ListenableFuture<?> blockedOnWrite = toListenableFuture(future); blocked = allAsList(blockedOnAggregation, blockedOnWrite); rowCount += page.getPositionCount(); updateWrittenBytes(); }
@Override public void finish() { ListenableFuture<?> currentlyBlocked = blocked; OperationTimer timer = new OperationTimer(statisticsCpuTimerEnabled); statisticAggregationOperator.finish(); timer.end(statisticsTiming); ListenableFuture<?> blockedOnAggregation = statisticAggregationOperator.isBlocked(); ListenableFuture<?> blockedOnFinish = NOT_BLOCKED; if (state == State.RUNNING) { state = State.FINISHING; finishFuture = pageSink.finish(); blockedOnFinish = toListenableFuture(finishFuture); updateWrittenBytes(); } this.blocked = allAsList(currentlyBlocked, blockedOnAggregation, blockedOnFinish); }
@Override public ListenableFuture<?> isBlocked() { if (finishFuture == null) { return NOT_BLOCKED; } return toListenableFuture(finishFuture); }
@Override public ListenableFuture<?> isBlocked() { CompletableFuture<?> pageSourceBlocked = pageSource.isBlocked(); return pageSourceBlocked.isDone() ? NOT_BLOCKED : toListenableFuture(pageSourceBlocked); }
@Override public ListenableFuture<?> isBlocked() { CompletableFuture<?> pageSourceBlocked = pageSource.isBlocked(); return pageSourceBlocked.isDone() ? NOT_BLOCKED : toListenableFuture(pageSourceBlocked); }
@Override public ListenableFuture<?> isBlocked() { if (!blocked.isDone()) { return blocked; } if (source != null) { CompletableFuture<?> pageSourceBlocked = source.isBlocked(); return pageSourceBlocked.isDone() ? NOT_BLOCKED : toListenableFuture(pageSourceBlocked); } return NOT_BLOCKED; }
@Override public ListenableFuture<?> isBlocked() { if (!blocked.isDone()) { return blocked; } if (pageSource != null) { CompletableFuture<?> pageSourceBlocked = pageSource.isBlocked(); return pageSourceBlocked.isDone() ? NOT_BLOCKED : toListenableFuture(pageSourceBlocked); } return NOT_BLOCKED; }
@Override public ListenableFuture<?> isBlocked() { if (!blocked.isDone()) { return blocked; } if (source != null) { CompletableFuture<?> pageSourceBlocked = source.isBlocked(); return pageSourceBlocked.isDone() ? NOT_BLOCKED : toListenableFuture(pageSourceBlocked); } return NOT_BLOCKED; }
@Override public ListenableFuture<?> isBlocked() { if (!blocked.isDone()) { return blocked; } if (pageSource != null) { CompletableFuture<?> pageSourceBlocked = pageSource.isBlocked(); return pageSourceBlocked.isDone() ? NOT_BLOCKED : toListenableFuture(pageSourceBlocked); } return NOT_BLOCKED; }
@Override public void finish() { if (state == State.RUNNING) { state = State.FINISHING; finishFuture = toListenableFuture(pageSource().finish()); } }
@Override public void finish() { if (state == State.RUNNING) { state = State.FINISHING; finishFuture = toListenableFuture(pageSource().finish()); } }
@Override public ListenableFuture<SplitBatch> getNextBatch(ConnectorPartitionHandle partitionHandle, Lifespan lifespan, int maxSize) { ListenableFuture<ConnectorSplitBatch> nextBatch = toListenableFuture(source.getNextBatch(partitionHandle, maxSize)); return Futures.transform(nextBatch, splitBatch -> { ImmutableList.Builder<Split> result = ImmutableList.builder(); for (ConnectorSplit connectorSplit : splitBatch.getSplits()) { result.add(new Split(connectorId, transactionHandle, connectorSplit, lifespan)); } return new SplitBatch(result.build(), splitBatch.isNoMoreSplits()); }, directExecutor()); }
@Override public ListenableFuture<SplitBatch> getNextBatch(ConnectorPartitionHandle partitionHandle, Lifespan lifespan, int maxSize) { ListenableFuture<ConnectorSplitBatch> nextBatch = toListenableFuture(source.getNextBatch(partitionHandle, maxSize)); return Futures.transform(nextBatch, splitBatch -> { ImmutableList.Builder<Split> result = ImmutableList.builder(); for (ConnectorSplit connectorSplit : splitBatch.getSplits()) { result.add(new Split(connectorId, transactionHandle, connectorSplit, lifespan)); } return new SplitBatch(result.build(), splitBatch.isNoMoreSplits()); }, directExecutor()); }
@Test public void testToFromListenableFuture() throws Exception { assertGetUnchecked(future -> getFutureValue(toCompletableFuture(toListenableFuture(future)))); SettableFuture<?> settableFuture = SettableFuture.create(); toCompletableFuture(settableFuture).cancel(true); assertTrue(settableFuture.isCancelled()); CompletableFuture<Object> completableFuture = new CompletableFuture<>(); toListenableFuture(completableFuture).cancel(true); assertTrue(completableFuture.isCancelled()); assertEquals(tryGetFutureValue(toCompletableFuture(SettableFuture.create()), 10, MILLISECONDS), Optional.empty()); assertEquals(tryGetFutureValue(toListenableFuture(new CompletableFuture<>()), 10, MILLISECONDS), Optional.empty()); }
@Test public void testToFromListenableFuture() throws Exception { assertGetUnchecked(future -> getFutureValue(toCompletableFuture(toListenableFuture(future)))); SettableFuture<?> settableFuture = SettableFuture.create(); toCompletableFuture(settableFuture).cancel(true); assertTrue(settableFuture.isCancelled()); CompletableFuture<Object> completableFuture = new CompletableFuture<>(); toListenableFuture(completableFuture).cancel(true); assertTrue(completableFuture.isCancelled()); assertEquals(tryGetFutureValue(toCompletableFuture(SettableFuture.create()), 10, MILLISECONDS), Optional.empty()); assertEquals(tryGetFutureValue(toListenableFuture(new CompletableFuture<>()), 10, MILLISECONDS), Optional.empty()); }