[ https://issues.apache.org/jira/browse/FLINK-20107?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
ASF GitHub Bot updated FLINK-20107: ----------------------------------- Labels: pull-request-available (was: ) > Issues with setting InputChannel.statePersister > ------------------------------------------------ > > Key: FLINK-20107 > URL: https://issues.apache.org/jira/browse/FLINK-20107 > Project: Flink > Issue Type: Bug > Components: Runtime / Checkpointing, Runtime / Network > Affects Versions: 1.12.0 > Reporter: Roman Khachatryan > Assignee: Roman Khachatryan > Priority: Major > Labels: pull-request-available > Fix For: 1.12.0 > > > ChannelStatePersister is a non-final field in InputChannel. > The need for injection is caused by different places, where network- and > state- related objects are created (task executor vs stream task). > It is set on remote and local channels upon requesting partitions, after > converting unknown or recovered channel. > Issues > # Not set on RemoteInputChannel when converting from UnknownChannel > # No visibility guarantee: written by task thread without any (explicit) > synchronization, read by network thread (checkForBarrier) > I see that "final" channels (both remote and local) are created only when the > writer is known (partitions requested). > So we can just make it final in "final" channels and pass from > recovered/unknown. For that, > * need to add to UnknownChannel > * no need to make it volatile/guarded because in "non-final" channels it's > accessed only by the task thread; and in "final" channels it will be final -- This message was sent by Atlassian Jira (v8.3.4#803005)