I would be in favour of changing interfaces only between major versions.
Otherwise we risk that existing setups break when upgrading to the latest
minor version.

+1 for the outreach.

Cheers,
Till

On Wed, Oct 23, 2019 at 1:11 PM Zili Chen <wander4...@gmail.com> wrote:

> Thanks for your clarification Till.
>
> For terminology pluggable and customizable, I am mainly concerning about
> interface audience issue. Pluggable means we have multiple
> high-availability
> implementation but closed to extend in user scope; customizable means
> high-availability interface are stable and user-facing.
>
> I agree that we should try to keep backward compatibility if possible. I
> start
> this thread due to being confused how I progress FLINK-10333. Specifically,
> how to deal with compatibility things.
>
> Given that it is an internal interface I think it is reasonable we
> evolve it for
> supporting leader store based high-availability storage in a minor version
> bump. I'm going to start a discuss thread next week for gathering wider
> feedbacks beyond the original (maybe limited) JIRA, which also calls of
> review among community members. What do you think?
>
> Best,
> tison.
>
>
> Till Rohrmann <trohrm...@apache.org> 于2019年10月21日周一 下午5:21写道:
>
> > Hi Tison,
> >
> > I'm not sure whether I fully understand your distinction between
> > customizable and pluggable. Maybe you could clarify your ideas a bit
> > because you seem to favour support for pluggable implementations.
> >
> > Maybe let me try to answer some other questions you raised. With the
> > HighAvailabilityServices interface and the functionality to load custom
> > implementations specified via `high-availability: FQDN` it is indeed
> > possible to provide a custom implementation of the HA services. This is,
> > however, pretty much a power user feature where users have to implement
> > against an internal API. As such, it can be subject to change and we
> don't
> > give guarantees that these interfaces won't change. Of course, if
> possible,
> > we should extend/change it in a way that we guarantee backwards
> > compatibility.
> >
> > You are right that at the moment this interface is not stable enough for
> > being public API. Once this changes and we are happy with it, then we can
> > think about making it a public API and documenting it properly. Afaik,
> > there is no documentation how to implement your own HA services at the
> > moment. This underlines as well that this interface is an internal API.
> >
> > Cheers,
> > Till
> >
> > On Fri, Oct 18, 2019 at 5:56 AM Zili Chen <wander4...@gmail.com> wrote:
> >
> > > Another perspective is that a stable, carefully-designed interface with
> > > clear semantic
> > > could be safer to customize.
> > >
> > > Following the discussion in FLINK-10333 our JobGraphStore is actually
> > > required
> > > performing write operation only with leadership,  which is a basic
> > > requirement
> > > for coordination rather than an implementation detail.
> > > Thus it depends on LeaderElectionService(in the design, we narrow the
> > > specific interface
> > > as LeaderStore). HighAvailabilityServices#getJobGraphStore() infers a
> > > implicit field for
> > > that which is hard to express the relationship between them.
> > >
> > > If the interface is unstable(also we introduce a ClientHAService for
> > > separate concern and
> > > have to keep b/w comp. for customized), we'd better keep it internal
> for
> > > freely evolution.
> > > And when we try to support customized, it would be helpful to start a
> > > proposal to revisit
> > > the interface to be well-designed and stable. ref[2].
> > >
> > > In short, current high-availability services as well as
> > > runtime/coordination is still under
> > > development and active evolution. It is possibly not a good time for
> make
> > > it public and
> > > customizable.
> > >
> > > Best,
> > > tison.
> > >
> > > [1] https://issues.apache.org/jira/browse/FLINK-10333
> > > [2]
> > >
> > >
> >
> https://github.com/apache/pulsar/wiki/PIP-45%3A-Pluggable-metadata-interface
> > >
> > >
> > > Zili Chen <wander4...@gmail.com> 于2019年10月17日周四 下午8:13写道:
> > >
> > > > A challenge is how we ensure the support for customized
> implementation.
> > > > When
> > > > we introduce JobGraphStore#releaseJobGraph we actually change quite a
> > bit
> > > > codepath
> > > > in Dispatcher. While we are unable to test arbitrarily customized
> > > > implementation our
> > > > compatibility promise is actually no more than compilation
> compatible.
> > > >
> > > > Customer should still be required to be familiar with implementation
> > > > details to figure
> > > > out the fitment when they bump Flink version. This effort requires
> also
> > > > and no extra
> > > > when we support pluggable strategy. In another word, a customized
> > support
> > > > tends
> > > > to hide the challenge when customer want to use their own
> > implementation.
> > > >
> > >
> >
>

Reply via email to