[ https://issues.apache.org/jira/browse/IGNITE-1108?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Semen Boikov updated IGNITE-1108: --------------------------------- Fix Version/s: (was: 1.6) > Additional lifecycle callbacks in PluginProvider interface. > ----------------------------------------------------------- > > Key: IGNITE-1108 > URL: https://issues.apache.org/jira/browse/IGNITE-1108 > Project: Ignite > Issue Type: Task > Components: general > Affects Versions: 1.1.4 > Reporter: Vladimir Ozerov > Assignee: Nikolay Tikhonov > Priority: Critical > Attachments: ignite-1108.patch > > > 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. > Proposed design: > 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 methods will be no-op. This way user > plugins will continue compile in case of further changes to PluginProvider > interfaces provided that method names are unchanged. -- This message was sent by Atlassian JIRA (v6.3.4#6332)