Package io.trino.execution.buffer
Interface OutputBuffer
-
- All Known Implementing Classes:
ArbitraryOutputBuffer,BroadcastOutputBuffer,LazyOutputBuffer,PartitionedOutputBuffer
public interface OutputBuffer
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description voidabort(OutputBuffers.OutputBufferId bufferId)Closes the specified output buffer.voidacknowledge(OutputBuffers.OutputBufferId bufferId, long token)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.voidenqueue(int partition, List<SerializedPage> pages)Adds a split-up page to a specific partition.voidenqueue(List<SerializedPage> pages)Adds a split-up page to an unpartitioned buffer.voidfail()Fail the buffer, discarding all pages, but blocking readers.com.google.common.util.concurrent.ListenableFuture<BufferResult>get(OutputBuffers.OutputBufferId bufferId, long token, io.airlift.units.DataSize maxSize)Gets pages from the output buffer, and acknowledges all pages received from the last request.OutputBufferInfogetInfo()Gets the current state of this buffer.longgetPeakMemoryUsage()doublegetUtilization()Get the memory utilization percentage.booleanisFinished()A buffer is finished once no-more-pages has been set and all buffers have been closed with an abort call.com.google.common.util.concurrent.ListenableFuture<Void>isFull()Get a future that will be completed when the buffer is not full.booleanisOverutilized()Check if the buffer is blocking producers.voidsetNoMorePages()Notify buffer that no more pages will be added.voidsetOutputBuffers(OutputBuffers newOutputBuffers)Updates the buffer configuration.
-
-
-
Method Detail
-
getInfo
OutputBufferInfo getInfo()
Gets 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.
-
isFinished
boolean isFinished()
A buffer is finished once no-more-pages has been set and all buffers have been closed with an abort call.
-
getUtilization
double getUtilization()
Get the memory utilization percentage.
-
isOverutilized
boolean isOverutilized()
Check if the buffer is blocking producers.
-
addStateChangeListener
void addStateChangeListener(StateMachine.StateChangeListener<BufferState> stateChangeListener)
Add 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.
-
setOutputBuffers
void setOutputBuffers(OutputBuffers newOutputBuffers)
Updates the buffer configuration.
-
get
com.google.common.util.concurrent.ListenableFuture<BufferResult> get(OutputBuffers.OutputBufferId bufferId, long token, io.airlift.units.DataSize maxSize)
Gets 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.
-
acknowledge
void acknowledge(OutputBuffers.OutputBufferId bufferId, long token)
Acknowledges the previously received pages from the output buffer.
-
abort
void abort(OutputBuffers.OutputBufferId bufferId)
Closes the specified output buffer.
-
isFull
com.google.common.util.concurrent.ListenableFuture<Void> isFull()
Get a future that will be completed when the buffer is not full.
-
enqueue
void enqueue(List<SerializedPage> pages)
Adds 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.
-
enqueue
void enqueue(int partition, List<SerializedPage> pages)Adds 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.
-
setNoMorePages
void setNoMorePages()
Notify buffer that no more pages will be added. Any future calls to enqueue a page are ignored.
-
destroy
void destroy()
Destroys the buffer, discarding all pages.
-
fail
void fail()
Fail the buffer, discarding all pages, but blocking readers. It is expected that readers will be unblocked when the failed query is cleaned up.
-
getPeakMemoryUsage
long getPeakMemoryUsage()
- Returns:
- the peak memory usage of this output buffer.
-
-