[ https://issues.apache.org/jira/browse/FLINK-12887?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16867023#comment-16867023 ]
Till Rohrmann commented on FLINK-12887: --------------------------------------- I think the current contract is that you cannot schedule an unfenced message. That's why there is only {{runAsyncWithoutFencing}} and {{callAsyncWithoutFencing}} and no {{scheduleRunAsyncWithoutFencing}}. If there is no delay for the {{RunAsync}} or {{CallAsync}}, they would be directly executed. Only if delay is {{> 0}} you would run into this case. Thus, I think it is not a real problem at the moment. Have you experienced a problem with that or is this more of a theoretical consideration if we would add a {{scheduleRunAsyncWithoutFencing}} method [~Tison]? > Schedule UnfencedMessage would lost envelope info > -------------------------------------------------- > > Key: FLINK-12887 > URL: https://issues.apache.org/jira/browse/FLINK-12887 > Project: Flink > Issue Type: Bug > Components: Runtime / Coordination > Affects Versions: 1.9.0 > Reporter: TisonKun > Priority: Major > > We provide {{runAsync}}, {{callAsync}} and {{scheduleRunAsync}} for > {{MainThreadExecutable}}, while providing {{runAsyncWithoutFencing}} and > {{callAsyncWithoutFencing}} additionally for {{FencedMainThreadExecutable}}. > Let's think about a case when we want to schedule a unfenced runnable or any > other unfenced message(currently, we don't have such code path but it's > semantically valid.). > 1. {{FencedAkkaRpcActor}} received an unfenced runnable with delay > 2. It extracted the runnable from unfenced message and call > {{super.handleRpcMessage}}. > 3. {{AkkaRpcActor}} enveloped the message and schedule it by > {{AkkaRpcActor#L410}}. > However, {{FencedAkkaRpcActor#envelopeSelfMessage}} was called for envelope. > Thus the unfenced message now become a fenced message. > We can anyway implement {{scheduleRunAsyncWithoutFencing}} to schedule > unfenced message directly by {{actorsystem.scheduler.scheduleOnce(..., > dispatcher)}}, but with current codebase I notice that {{RunAsync}} has a > wried {{atTimeNanos}}(i.e., delay) property. Ideally how to schedule a > message is shown on what params ScheduleExecutorService called with, at least > we cannot extract an unfenced message and envelop it into a fence message and > then schedule it, which goes into wrong semantic. > cc [~till.rohrmann] -- This message was sent by Atlassian JIRA (v7.6.3#76005)