Class TieredStorageResultSubpartitionView
- java.lang.Object
-
- org.apache.flink.runtime.io.network.partition.hybrid.tiered.netty.TieredStorageResultSubpartitionView
-
- All Implemented Interfaces:
ResultSubpartitionView
public class TieredStorageResultSubpartitionView extends Object implements ResultSubpartitionView
TheTieredStorageResultSubpartitionView
is the implementation ofResultSubpartitionView
ofTieredResultPartition
.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.flink.runtime.io.network.partition.ResultSubpartitionView
ResultSubpartitionView.AvailabilityWithBacklog
-
-
Constructor Summary
Constructors Constructor Description TieredStorageResultSubpartitionView(BufferAvailabilityListener availabilityListener, List<NettyPayloadManager> nettyPayloadManagers, List<NettyConnectionId> nettyConnectionIds, List<NettyServiceProducer> serviceProducers)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
acknowledgeAllDataProcessed()
ResultSubpartitionView.AvailabilityWithBacklog
getAvailabilityAndBacklog(boolean isCreditAvailable)
Get the availability and backlog of the view.Throwable
getFailureCause()
ResultSubpartitionView
can decide whether the failure cause should be reported to consumer as failure (primary failure) orProducerFailedException
(secondary failure).ResultSubpartition.BufferAndBacklog
getNextBuffer()
Returns the nextBuffer
instance of this queue iterator.int
getNumberOfQueuedBuffers()
boolean
isReleased()
void
notifyDataAvailable()
void
notifyNewBufferSize(int newBufferSize)
void
notifyRequiredSegmentId(int subpartitionId, int segmentId)
In tiered storage shuffle mode, only required segments will be sent to prevent the redundant buffer usage.int
peekNextBufferSubpartitionId()
Returns the index of the subpartition where the next buffer locates, or -1 if there is no buffer available and the subpartition to be consumed is not determined.void
releaseAllResources()
void
resumeConsumption()
int
unsynchronizedGetNumberOfQueuedBuffers()
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.flink.runtime.io.network.partition.ResultSubpartitionView
notifyPriorityEvent
-
-
-
-
Constructor Detail
-
TieredStorageResultSubpartitionView
public TieredStorageResultSubpartitionView(BufferAvailabilityListener availabilityListener, List<NettyPayloadManager> nettyPayloadManagers, List<NettyConnectionId> nettyConnectionIds, List<NettyServiceProducer> serviceProducers)
-
-
Method Detail
-
getNextBuffer
@Nullable public ResultSubpartition.BufferAndBacklog getNextBuffer() throws IOException
Description copied from interface:ResultSubpartitionView
Returns the nextBuffer
instance of this queue iterator.If there is currently no instance available, it will return
null
. This might happen for example when a pipelined queue producer is slower than the consumer or a spilled queue needs to read in more data.Important: The consumer has to make sure that each buffer instance will eventually be recycled with
Buffer.recycleBuffer()
after it has been consumed.- Specified by:
getNextBuffer
in interfaceResultSubpartitionView
- Throws:
IOException
-
getAvailabilityAndBacklog
public ResultSubpartitionView.AvailabilityWithBacklog getAvailabilityAndBacklog(boolean isCreditAvailable)
Description copied from interface:ResultSubpartitionView
Get the availability and backlog of the view. The availability represents if the view is ready to get buffer from it. The backlog represents the number of available data buffers.- Specified by:
getAvailabilityAndBacklog
in interfaceResultSubpartitionView
- Parameters:
isCreditAvailable
- the availability of credits for thisResultSubpartitionView
.- Returns:
- availability and backlog.
-
notifyRequiredSegmentId
public void notifyRequiredSegmentId(int subpartitionId, int segmentId)
Description copied from interface:ResultSubpartitionView
In tiered storage shuffle mode, only required segments will be sent to prevent the redundant buffer usage. Downstream will notify the upstream by this method to send required segments.- Specified by:
notifyRequiredSegmentId
in interfaceResultSubpartitionView
- Parameters:
subpartitionId
- The id of the corresponding subpartition.segmentId
- The id of required segment.
-
peekNextBufferSubpartitionId
public int peekNextBufferSubpartitionId()
Description copied from interface:ResultSubpartitionView
Returns the index of the subpartition where the next buffer locates, or -1 if there is no buffer available and the subpartition to be consumed is not determined.- Specified by:
peekNextBufferSubpartitionId
in interfaceResultSubpartitionView
-
releaseAllResources
public void releaseAllResources() throws IOException
- Specified by:
releaseAllResources
in interfaceResultSubpartitionView
- Throws:
IOException
-
isReleased
public boolean isReleased()
- Specified by:
isReleased
in interfaceResultSubpartitionView
-
getFailureCause
public Throwable getFailureCause()
Description copied from interface:ResultSubpartitionView
ResultSubpartitionView
can decide whether the failure cause should be reported to consumer as failure (primary failure) orProducerFailedException
(secondary failure). Secondary failure can be reported only if producer (upstream task) is guaranteed to failover.BEWARE: Incorrectly reporting failure cause as primary failure, can hide the root cause of the failure from the user.
- Specified by:
getFailureCause
in interfaceResultSubpartitionView
-
unsynchronizedGetNumberOfQueuedBuffers
public int unsynchronizedGetNumberOfQueuedBuffers()
- Specified by:
unsynchronizedGetNumberOfQueuedBuffers
in interfaceResultSubpartitionView
-
getNumberOfQueuedBuffers
public int getNumberOfQueuedBuffers()
- Specified by:
getNumberOfQueuedBuffers
in interfaceResultSubpartitionView
-
notifyDataAvailable
public void notifyDataAvailable()
- Specified by:
notifyDataAvailable
in interfaceResultSubpartitionView
-
resumeConsumption
public void resumeConsumption()
- Specified by:
resumeConsumption
in interfaceResultSubpartitionView
-
acknowledgeAllDataProcessed
public void acknowledgeAllDataProcessed()
- Specified by:
acknowledgeAllDataProcessed
in interfaceResultSubpartitionView
-
notifyNewBufferSize
public void notifyNewBufferSize(int newBufferSize)
- Specified by:
notifyNewBufferSize
in interfaceResultSubpartitionView
-
-