Package io.trino.execution.buffer
Class PartitionedOutputBuffer
java.lang.Object
io.trino.execution.buffer.PartitionedOutputBuffer
- All Implemented Interfaces:
OutputBuffer
-
Constructor Summary
ConstructorsConstructorDescriptionPartitionedOutputBuffer(String taskInstanceId, OutputBufferStateMachine stateMachine, PipelinedOutputBuffers outputBuffers, io.airlift.units.DataSize maxBufferSize, Supplier<LocalMemoryContext> memoryContextSupplier, Executor notificationExecutor) -
Method Summary
Modifier and TypeMethodDescriptionvoidabort()Abort the buffer, discarding all pages, but blocking readers.voidacknowledge(PipelinedOutputBuffers.OutputBufferId outputBufferId, long sequenceId) Acknowledges the previously received pages from the output buffer.voidaddStateChangeListener(StateMachine.StateChangeListener<BufferState> stateChangeListener) Add a listener which fires anytime the buffer state changes.voiddestroy()Destroys the buffer, discarding all pages.voiddestroy(PipelinedOutputBuffers.OutputBufferId bufferId) Destroys the specified output buffer, discarding all pages.voidAdds a split-up page to a specific partition.voidAdds a split-up page to an unpartitioned buffer.com.google.common.util.concurrent.ListenableFuture<BufferResult> get(PipelinedOutputBuffers.OutputBufferId outputBufferId, long startingSequenceId, io.airlift.units.DataSize maxSize) Gets pages from the output buffer, and acknowledges all pages received from the last request.Returns non empty failure cause if the buffer is in stateBufferState.FAILEDgetInfo()Gets the current state of this buffer.longgetState()Get buffer stateGet buffer statusdoubleGet the memory utilization percentage.com.google.common.util.concurrent.ListenableFuture<Void> isFull()Get a future that will be completed when the buffer is not full.voidNotify buffer that no more pages will be added.voidsetOutputBuffers(OutputBuffers newOutputBuffers) Updates the buffer configuration.
-
Constructor Details
-
PartitionedOutputBuffer
public PartitionedOutputBuffer(String taskInstanceId, OutputBufferStateMachine stateMachine, PipelinedOutputBuffers outputBuffers, io.airlift.units.DataSize maxBufferSize, Supplier<LocalMemoryContext> memoryContextSupplier, Executor notificationExecutor)
-
-
Method Details
-
addStateChangeListener
public void addStateChangeListener(StateMachine.StateChangeListener<BufferState> stateChangeListener) Description copied from interface:OutputBufferAdd a listener which fires anytime the buffer state changes. Listener is always notified asynchronously using a dedicated notification thread pool so, care should be taken to avoid leakingthiswhen adding a listener in a constructor. Additionally, it is possible notifications are observed out of order due to the asynchronous execution.- Specified by:
addStateChangeListenerin interfaceOutputBuffer
-
getUtilization
public double getUtilization()Description copied from interface:OutputBufferGet the memory utilization percentage.- Specified by:
getUtilizationin interfaceOutputBuffer
-
getStatus
Description copied from interface:OutputBufferGet buffer status- Specified by:
getStatusin interfaceOutputBuffer
-
getInfo
Description copied from interface:OutputBufferGets the current state of this buffer. This method is guaranteed to not block or acquire contended locks, but the stats in the info object may be internally inconsistent.- Specified by:
getInfoin interfaceOutputBuffer
-
getState
Description copied from interface:OutputBufferGet buffer state- Specified by:
getStatein interfaceOutputBuffer
-
setOutputBuffers
Description copied from interface:OutputBufferUpdates the buffer configuration.- Specified by:
setOutputBuffersin interfaceOutputBuffer
-
isFull
Description copied from interface:OutputBufferGet a future that will be completed when the buffer is not full.- Specified by:
isFullin interfaceOutputBuffer
-
enqueue
Description copied from interface:OutputBufferAdds a split-up page to an unpartitioned buffer. If no-more-pages has been set, the enqueue page call is ignored. This can happen with limit queries.- Specified by:
enqueuein interfaceOutputBuffer
-
enqueue
Description copied from interface:OutputBufferAdds a split-up page to a specific partition. If no-more-pages has been set, the enqueue page call is ignored. This can happen with limit queries.- Specified by:
enqueuein interfaceOutputBuffer
-
get
public com.google.common.util.concurrent.ListenableFuture<BufferResult> get(PipelinedOutputBuffers.OutputBufferId outputBufferId, long startingSequenceId, io.airlift.units.DataSize maxSize) Description copied from interface:OutputBufferGets pages from the output buffer, and acknowledges all pages received from the last request. The initial token is zero. Subsequent tokens are acquired from the next token field in the BufferResult returned from the previous request. If the buffer result is marked as complete, the client must call abort to acknowledge receipt of the final state.- Specified by:
getin interfaceOutputBuffer
-
acknowledge
Description copied from interface:OutputBufferAcknowledges the previously received pages from the output buffer.- Specified by:
acknowledgein interfaceOutputBuffer
-
destroy
Description copied from interface:OutputBufferDestroys the specified output buffer, discarding all pages.- Specified by:
destroyin interfaceOutputBuffer
-
setNoMorePages
public void setNoMorePages()Description copied from interface:OutputBufferNotify buffer that no more pages will be added. Any future calls to enqueue a page are ignored.- Specified by:
setNoMorePagesin interfaceOutputBuffer
-
destroy
public void destroy()Description copied from interface:OutputBufferDestroys the buffer, discarding all pages.- Specified by:
destroyin interfaceOutputBuffer
-
abort
public void abort()Description copied from interface:OutputBufferAbort the buffer, discarding all pages, but blocking readers. It is expected that readers will be unblocked when the failed query is cleaned up.- Specified by:
abortin interfaceOutputBuffer
-
getPeakMemoryUsage
public long getPeakMemoryUsage()- Specified by:
getPeakMemoryUsagein interfaceOutputBuffer- Returns:
- the peak memory usage of this output buffer.
-
getFailureCause
Description copied from interface:OutputBufferReturns non empty failure cause if the buffer is in stateBufferState.FAILED- Specified by:
getFailureCausein interfaceOutputBuffer
-