[
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)