@Override public void setOutputBuffers(OutputBuffers newOutputBuffers) { requireNonNull(newOutputBuffers, "newOutputBuffers is null"); // ignore buffers added after query finishes, which can happen when a query is canceled // also ignore old versions, which is normal if (state.get().isTerminal() || outputBuffers.getVersion() >= newOutputBuffers.getVersion()) { return; } // no more buffers can be added but verify this is valid state change outputBuffers.checkValidTransition(newOutputBuffers); }
@Override public synchronized void setOutputBuffers(OutputBuffers newOutputBuffers) { if (getTaskStatus().getState().isDone()) { return; } if (newOutputBuffers.getVersion() > outputBuffers.get().getVersion()) { outputBuffers.set(newOutputBuffers); needsUpdate.set(true); scheduleUpdate(); } }
public synchronized void setOutputBuffers(OutputBuffers outputBuffers) { requireNonNull(outputBuffers, "outputBuffers is null"); while (true) { OutputBuffers currentOutputBuffers = this.outputBuffers.get(); if (currentOutputBuffers != null) { if (outputBuffers.getVersion() <= currentOutputBuffers.getVersion()) { return; } currentOutputBuffers.checkValidTransition(outputBuffers); } if (this.outputBuffers.compareAndSet(currentOutputBuffers, outputBuffers)) { for (RemoteTask task : getAllTasks()) { task.setOutputBuffers(outputBuffers); } return; } } }
private static void assertOutputBuffers(OutputBuffers outputBuffers) { assertNotNull(outputBuffers); assertTrue(outputBuffers.getVersion() > 0); assertTrue(outputBuffers.isNoMoreBufferIds()); Map<OutputBufferId, Integer> buffers = outputBuffers.getBuffers(); assertEquals(buffers.size(), 4); for (int partition = 0; partition < 4; partition++) { assertEquals(buffers.get(new OutputBufferId(partition)), Integer.valueOf(partition)); } } }
if (state.isTerminal() || outputBuffers.getVersion() >= newOutputBuffers.getVersion()) { return;
@Override public void setOutputBuffers(OutputBuffers newOutputBuffers) { checkState(!Thread.holdsLock(this), "Can not set output buffers while holding a lock on this"); requireNonNull(newOutputBuffers, "newOutputBuffers is null"); synchronized (this) { // ignore buffers added after query finishes, which can happen when a query is canceled // also ignore old versions, which is normal BufferState state = this.state.get(); if (state.isTerminal() || outputBuffers.getVersion() >= newOutputBuffers.getVersion()) { return; } // verify this is valid state change outputBuffers.checkValidTransition(newOutputBuffers); outputBuffers = newOutputBuffers; // add the new buffers for (OutputBufferId outputBufferId : outputBuffers.getBuffers().keySet()) { getBuffer(outputBufferId); } // update state if no more buffers is set if (outputBuffers.isNoMoreBufferIds()) { this.state.compareAndSet(OPEN, NO_MORE_BUFFERS); this.state.compareAndSet(NO_MORE_PAGES, FLUSHING); } } if (!state.get().canAddBuffers()) { noMoreBuffers(); } checkFlushComplete(); }
@Override public synchronized void setOutputBuffers(OutputBuffers newOutputBuffers) { if (getTaskInfo().getState().isDone()) { return; } if (newOutputBuffers.getVersion() > outputBuffers.get().getVersion()) { outputBuffers.set(newOutputBuffers); needsUpdate.set(true); scheduleUpdate(); } }
public synchronized void setOutputBuffers(OutputBuffers outputBuffers) { requireNonNull(outputBuffers, "outputBuffers is null"); while (true) { OutputBuffers currentOutputBuffers = this.outputBuffers.get(); if (outputBuffers.getVersion() <= currentOutputBuffers.getVersion()) { return; } currentOutputBuffers.checkValidTransition(outputBuffers); if (this.outputBuffers.compareAndSet(currentOutputBuffers, outputBuffers)) { for (RemoteTask task : getAllTasks()) { task.setOutputBuffers(outputBuffers); } return; } } }
if (state.get().isTerminal() || outputBuffers.getVersion() >= newOutputBuffers.getVersion()) { return;
assertTrue(outputBuffers.getVersion() > 0); assertTrue(outputBuffers.isNoMoreBufferIds());