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

Till Rohrmann commented on FLINK-13750:
---------------------------------------

Hi Tison,

I would try to go the following way: The {{RestClusterClient}} should only need 
the {{webMonitorRetrievalService}}. Hence we should try to get rid of the 
{{dispatcherLeaderRetriever}} and then the {{HighAvailabilityServices}}stored 
in the {{ClusterClient}}. Btw. the {{ClusterClient}} is a legacy class with a 
lot of unneeded code.

Then I would introduce a {{ClientHighAvailabilityServices}} which has a method 
{{LeaderRetrievalService getWebMonitorLeaderRetriever();}}. In order to not 
break backwards compatibility we could only deprecate the same method in 
{{HighAvailabilityServices}}.

Next, we would need to introduce a new method to 
{{HighAvailabilityServicesFactory#createClientHAServices}} which allows us to 
create a {{ClientHighAvailabilityServices}} instance. This method should have a 
default implementation which fails.

For backwards compatibility, we could still create a 
{{HighAvailabilityServices}} if {{#createClientHAServices}} fails and then call 
{{HighAvailabilityServices#getWebMonitorLeaderRetriever()}}.

In order for proper resource clean up, one either needs to pass the 
{{(Client)HighAvailabilitySerivces}} to the {{RestClusterClient}} (ideally as a 
{{AutoCloseable}}) or create a wrapper for the {{LeaderRetrievalService}} which 
also closes the services when closing the {{LeaderRetrievalService}}.

I hope I haven't overlooked too many details here.

> Separate HA services between client-/ and server-side
> -----------------------------------------------------
>
>                 Key: FLINK-13750
>                 URL: https://issues.apache.org/jira/browse/FLINK-13750
>             Project: Flink
>          Issue Type: Improvement
>          Components: Command Line Client, Runtime / Coordination
>            Reporter: Chesnay Schepler
>            Assignee: TisonKun
>            Priority: Major
>
> Currently, we use the same {{HighAvailabilityServices}} on the client and 
> server. However, the client does not need several of the features that the 
> services currently provide (access to the blobstore or checkpoint metadata).
> Additionally, due to how these services are setup they also require the 
> client to have access to the blob storage, despite it never actually being 
> used, which can cause issues, like FLINK-13500.
> [~Tison] Would be be interested in this issue?



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to