[ https://issues.apache.org/jira/browse/IGNITE-1108?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14681781#comment-14681781 ]
Nikolay Tikhonov commented on IGNITE-1108: ------------------------------------------ Vladimir, Thanks for your review! I've fixed notes. Pls, look again. > 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 > Fix For: ignite-1.4 > > 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)