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

TisonKun commented on FLINK-10333:
----------------------------------

[~till.rohrmann] I have started a survey thread on both user and dev list[1] 
for an accurate idea how our users use high-availability services in Flink.

Regardless its intention to FLINK-13750, here are some concerns from my side in 
FLINK-10333.

1. How to treat YARNHighAvailabilityService? Maybe mention the original 
proposer [~StephanEwen] here. Since it is not yet implemented I'd like to drop 
it because rework it along with this thread would be similar to rewrite it from 
scratch. Also, even after we "rework" it, the services are still in state not 
yet implemented.

2. How to treat EmbeddedHaServices? Standalone impl. is easy and zookeeper 
impl. is detailedly documented. However, EmbeddedHaServices is unnoticed yet. 
As discussed with Till on this thread[2], it is designed as a handy 
implementation and should be not needed technically. But based on our 
implementation of MiniCluster where the address of components resolved at the 
runtime instead of pre-configured as standalone impl. requires, we have to 
implement EmbeddedHaServices with this context.

[1] 
https://lists.apache.org/x/thread.html/c0cc07197e6ba30b45d7709cc9e17d8497e5e3f33de504d58dfcafad@%3Cuser.flink.apache.org%3E
[2] 
https://lists.apache.org/x/thread.html/eb7134109c437cd9c35b8dc0cc1a26ce22fe7d0b68fac8109189854e@%3Cdev.flink.apache.org%3E

> Rethink ZooKeeper based stores (SubmittedJobGraph, MesosWorker, 
> CompletedCheckpoints)
> -------------------------------------------------------------------------------------
>
>                 Key: FLINK-10333
>                 URL: https://issues.apache.org/jira/browse/FLINK-10333
>             Project: Flink
>          Issue Type: Bug
>          Components: Runtime / Coordination
>    Affects Versions: 1.5.3, 1.6.0, 1.7.0
>            Reporter: Till Rohrmann
>            Priority: Major
>
> While going over the ZooKeeper based stores 
> ({{ZooKeeperSubmittedJobGraphStore}}, {{ZooKeeperMesosWorkerStore}}, 
> {{ZooKeeperCompletedCheckpointStore}}) and the underlying 
> {{ZooKeeperStateHandleStore}} I noticed several inconsistencies which were 
> introduced with past incremental changes.
> * Depending whether {{ZooKeeperStateHandleStore#getAllSortedByNameAndLock}} 
> or {{ZooKeeperStateHandleStore#getAllAndLock}} is called, deserialization 
> problems will either lead to removing the Znode or not
> * {{ZooKeeperStateHandleStore}} leaves inconsistent state in case of 
> exceptions (e.g. {{#getAllAndLock}} won't release the acquired locks in case 
> of a failure)
> * {{ZooKeeperStateHandleStore}} has too many responsibilities. It would be 
> better to move {{RetrievableStateStorageHelper}} out of it for a better 
> separation of concerns
> * {{ZooKeeperSubmittedJobGraphStore}} overwrites a stored {{JobGraph}} even 
> if it is locked. This should not happen since it could leave another system 
> in an inconsistent state (imagine a changed {{JobGraph}} which restores from 
> an old checkpoint)
> * Redundant but also somewhat inconsistent put logic in the different stores
> * Shadowing of ZooKeeper specific exceptions in {{ZooKeeperStateHandleStore}} 
> which were expected to be caught in {{ZooKeeperSubmittedJobGraphStore}}
> * Getting rid of the {{SubmittedJobGraphListener}} would be helpful
> These problems made me think how reliable these components actually work. 
> Since these components are very important, I propose to refactor them.



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

Reply via email to