ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vladimir Ozerov <voze...@gridgain.com>
Subject Re: Improve plugins start/stop procedure.
Date Thu, 09 Jul 2015 06:32:49 GMT
I created the ticket for this:
https://issues.apache.org/jira/browse/IGNITE-1108

Proposed design draft:

1) Start:
PluginProvider.onBeforeStart() - called from IgnitePluginProcessor.start();
PluginProvider.start() - already exists, unchanged;
PluginProvider.onAfterStart() - just rename onIgniteStart() for consistency
with onBeforeStart();

2) Stop procedure is mirrored from start: onBeforeStop(), stop(),
onAfterStop().

3) Introduce PluginProviderAdapter where all methods will be no-op. This
way user plugins extending this class will continue compile in case of
further changes to PluginProvider interfaces provided that method names are
unchanged.

On Wed, Jul 8, 2015 at 7:05 PM, Atri Sharma <atri.jiit@gmail.com> wrote:

> +1
> On 8 Jul 2015 21:13, "Yakov Zhdanov" <yzhdanov@apache.org> wrote:
>
> > Agree with Vladimir. Start/stop order should be flexible.
> >
> > --Yakov
> >
> > 2015-07-07 10:03 GMT+03:00 Vladimir Ozerov <vozerov@gridgain.com>:
> >
> > > Igniters,
> > >
> > > Ignite allows external parties to add plugins. Currently plugins are
> > > started at the very end of start process, and they are stopped before
> all
> > > other components.
> > >
> > > This is a problem because sometimes we need to stop plugin AFTER all
> > other
> > > components. not BEFORE. E.g. consider a plugin which provides an
> > > environment for custom cache store, and this store has "write-behind"
> > > enabled. In this case we will stop plugin before write-behind store
> > flushed
> > > all data what leads to unexpected behavior.
> > >
> > > It seems that we must provide more callbacks so that plugins could be
> > > notified both before and after all other components are
> started/stopped.
> > >
> > > I looked at the code and found that IgnitePluginProcessor is a very
> good
> > > candidate for this - it starts very early and has access to all
> plugins.
> > > What if we add the following methods to PluginProvider interface:
> > > onPluginProcessorStart() - called from IgnitePluginProcessor.start();
> > > onPluginProcessorStop() - called from IgnitePluginProcessor.stop().
> > >
> > > Vladimir.
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message