[ 
https://issues.apache.org/jira/browse/FLINK-24738?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Piotr Nowojski updated FLINK-24738:
-----------------------------------
    Fix Version/s: 1.14.1

> Fail during announcing buffer size to released local channel
> ------------------------------------------------------------
>
>                 Key: FLINK-24738
>                 URL: https://issues.apache.org/jira/browse/FLINK-24738
>             Project: Flink
>          Issue Type: Bug
>          Components: Runtime / Network
>    Affects Versions: 1.14.0
>            Reporter: Anton Kalashnikov
>            Assignee: Anton Kalashnikov
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.15.0, 1.14.1
>
>
> Since we can release all resources not only when the mailbox would be 
> finished but also from the mailbox:
> {noformat}
> org.apache.flink.runtime.io.network.partition.consumer.LocalInputChannel.releaseAllResources(LocalInputChannel.java:331)
> org.apache.flink.runtime.io.network.partition.consumer.SingleInputGate.transformEvent(SingleInputGate.java:808)
> org.apache.flink.runtime.io.network.partition.consumer.SingleInputGate.transformToBufferOrEvent(SingleInputGate.java:757)
> org.apache.flink.runtime.io.network.partition.consumer.SingleInputGate.getNextBufferOrEvent(SingleInputGate.java:687)
> org.apache.flink.runtime.io.network.partition.consumer.SingleInputGate.pollNext(SingleInputGate.java:666)
> org.apache.flink.runtime.taskmanager.InputGateWithMetrics.pollNext(InputGateWithMetrics.java:142)
> org.apache.flink.streaming.runtime.io.checkpointing.CheckpointedInputGate.pollNext(CheckpointedInputGate.java:150)
> org.apache.flink.streaming.runtime.io.AbstractStreamTaskNetworkInput.emitNext(AbstractStreamTaskNetworkInput.java:110)
> org.apache.flink.streaming.runtime.io.StreamOneInputProcessor.processInput(StreamOneInputProcessor.java:65)
> org.apache.flink.streaming.runtime.tasks.StreamTask.processInput(StreamTask.java:503)
> org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:203)
> org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:816)
> org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:768)
> org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:958)
> org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:936)
> org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:750)
> org.apache.flink.runtime.taskmanager.Task.run(Task.java:571)
> {noformat}
> It is possible that after it the BufferDebloater announce the new buffer size 
> which will fail because the channel is released already:
> {noformat}
> Caused by: java.lang.IllegalStateException: Channel released.
>       at 
> org.apache.flink.util.Preconditions.checkState(Preconditions.java:193)
>       at 
> org.apache.flink.runtime.io.network.partition.consumer.LocalInputChannel.announceBufferSize(LocalInputChannel.java:354)
>       at 
> org.apache.flink.runtime.io.network.partition.consumer.SingleInputGate.announceBufferSize(SingleInputGate.java:389)
>       at 
> org.apache.flink.runtime.taskmanager.InputGateWithMetrics.announceBufferSize(InputGateWithMetrics.java:102)
>       at 
> org.apache.flink.streaming.runtime.tasks.bufferdebloat.BufferDebloater.recalculateBufferSize(BufferDebloater.java:101)
>       at 
> org.apache.flink.streaming.runtime.tasks.StreamTask.debloat(StreamTask.java:801)
>       at 
> org.apache.flink.streaming.runtime.tasks.StreamTask.lambda$null$4(StreamTask.java:791)
>       at 
> org.apache.flink.streaming.runtime.tasks.StreamTaskActionExecutor$1.runThrowing(StreamTaskActionExecutor.java:50)
>       at 
> org.apache.flink.streaming.runtime.tasks.mailbox.Mail.run(Mail.java:90)
>       at 
> org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.processMailsWhenDefaultActionUnavailable(MailboxProcessor.java:338)
>       at 
> org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.processMail(MailboxProcessor.java:324)
>       at 
> org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:201)
>       at 
> org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:816)
>       at 
> org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:768)
>       at 
> org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:958)
>       at 
> org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:936)
>       at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:750)
>       at org.apache.flink.runtime.taskmanager.Task.run(Task.java:571)
>       at java.lang.Thread.run(Thread.java:748)
> {noformat}
>  So I think that we should replace `checkState` with `if` for 
> LocalInputChannel#announceBufferSize since released channel is expected here.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to