[ 
https://issues.apache.org/jira/browse/FLINK-4528?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15446448#comment-15446448
 ] 

ASF GitHub Bot commented on FLINK-4528:
---------------------------------------

Github user tillrohrmann commented on a diff in the pull request:

    https://github.com/apache/flink/pull/2436#discussion_r76645756
  
    --- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rpc/taskexecutor/TaskExecutorToResourceManagerConnection.java
 ---
    @@ -93,22 +94,24 @@ public void start() {
                registration.startRegistration();
     
                Future<Tuple2<ResourceManagerGateway, 
TaskExecutorRegistrationSuccess>> future = registration.getFuture();
    +
    +           ExecutionContext executionContext = 
taskExecutor.getRpcService().getExecutionContext();
                
                future.onSuccess(new OnSuccess<Tuple2<ResourceManagerGateway, 
TaskExecutorRegistrationSuccess>>() {
                        @Override
                        public void onSuccess(Tuple2<ResourceManagerGateway, 
TaskExecutorRegistrationSuccess> result) {
    -                           registeredResourceManager = result.f0;
                                registrationId = result.f1.getRegistrationId();
    +                           registeredResourceManager = result.f0;
                        }
    -           }, taskExecutor.getMainThreadExecutionContext());
    +           }, executionContext);
    --- End diff --
    
    If we establish the contract that you first check 
`registeredResourceManager` before accessing `registrationId` it should be 
thread-safe wrt the `registeredResourceManager` and `registrationId` fields. We 
could do that more explicitly by returning `null` in `getRegistrationId` if 
`registeredResourceManager` is not set.
    
    Additionally, we would have to guard the `start` method which should be 
doable without extra costs since it will be started only by one thread anyway.


> Mark runAsync and scheduleAsync methods protected
> -------------------------------------------------
>
>                 Key: FLINK-4528
>                 URL: https://issues.apache.org/jira/browse/FLINK-4528
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Distributed Coordination
>            Reporter: Till Rohrmann
>            Assignee: Till Rohrmann
>            Priority: Minor
>
> Currently, the {{runAsync}} and {{scheduleAsync}} methods of the 
> {{RpcEndpoint}} are marked as public. I think that these methods should be 
> protected since nobody should be able to influence the internal state of an 
> {{RpcEndpoint}} from the outside via these methods.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to