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

Valentin Kulichenko commented on IGNITE-2708:
---------------------------------------------

I see your point. To make it safer, you can create a new method to 
{{IgniteSpi}} with the *final* implementation in {{IgniteSpiAdapter}} and call 
it before {{spiStart()}}. This method will try to set {{AtomicBoolean}} guard 
and throw an exception if it doesn't succeed. BTW, please make sure to throw an 
exception with proper message explaining to the user what happened and how they 
should fix it. I saw you used an assertion there, which is wrong.

Agree?

> Need to validate that SPIs are started only once
> ------------------------------------------------
>
>                 Key: IGNITE-2708
>                 URL: https://issues.apache.org/jira/browse/IGNITE-2708
>             Project: Ignite
>          Issue Type: Improvement
>          Components: general
>            Reporter: Valentin Kulichenko
>            Assignee: Ryan Zhao
>              Labels: newbie, usability
>
> User forum discussion: 
> http://apache-ignite-users.70518.x6.nabble.com/Ignite-instance-hangs-during-restart-in-client-mode-td3101.html
> If one uses the same instance of {{IgniteConfiguration}} more than once, it 
> doesn't work because SPIs have lifecycle and can be started only once. 
> Currently this causes hang on start which is counterintuitive.
> We should add a validation step to {{GridSpiAdapter}} that will check that 
> the SPI was never started before. Its {{spiStart()}} method should set some 
> flag there or throw exception if it has already been set. All internal SPI 
> implementations should be changed to call {{super.spiStart()}} as first 
> statement.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to