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

TisonKun commented on FLINK-13750:
----------------------------------

The original issue FLINK-13500 caused by this issue requires initialize 
services on demand. Specifically, BlobStoreService doesn't initialized in 
client-side.

Let {{HighAvailabilityServices}} extend both {{ClientHighAvailabilityServices}} 
and {{ClusterHighAvailabilityServices}} and pass it as the respective interface 
doesn't fix this issue. It limits the access but would not change the 
initialization.

With our context {{ClientHighAvailabilityServices}} has the only method 
{{getWebMonitorLeaderRetrievalService}} while 
{{ClusterHighAvailabilityServices}} doesn't need it. We can rename 
{{HighAvailabilityService}} as {{ClusterHighAvailabilityServices}} and 
deprecate the method and drop it when break changes allowed.

For MiniCluster scenario, it is a special case where the client can directly 
access dispatcher gate and thus need not a {{ClientHighAvailabilityServices}}. 
We can handle it specially regard its speciality natural.

An inheritance graph would be

{noformat}
ClientHighAvailabilityServices { only getWebMonitorLeaderRetrievalService }
                  ↓
ZK.../Standalone.../Custom...
{noformat}

{noformat}
ClusterHighAvailabilityServices { ... deprecated 
getWebMonitorLeaderRetrievalService}
                  ↓
ZK.../Standalone.../Embedded.../Custom...
{noformat}

Another problem is how we treat the custom one? A quick solution is as 
{{HighAvailabilityServicesFactory#createClientHAServices}} described above and 
the default is create a ClusterHighAvailabilityServices(current 
HighAvailabilityServices) and wrapped it access only the deprecated 
{{getWebMonitorLeaderRetrievalService}}. We can drop the fallback when break 
changes allowed. Fair enough, a survey to build our mind on how users actually 
custom their HAService would be helpful.

> 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