You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@polygene.apache.org by "Niclas Hedhman (JIRA)" <ji...@apache.org> on 2018/03/26 06:15:00 UTC

[jira] [Comment Edited] (POLYGENE-295) Activation broken

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

Niclas Hedhman edited comment on POLYGENE-295 at 3/26/18 6:14 AM:
------------------------------------------------------------------

Further investigation; For the broken case I am looking at, the ServiceInstance.activate() ends up being called during the activation of the application (instantiateOnStartup() is present). And that method is NOOP... What is going on? It seems like the whole "activate Mixin" business is not there anymore...


was (Author: niclas):
Further investigation; For the broken case I am looking at, the ServiceInstance.activate() ends up being called during the activation of the application (instantiateOnStartup() is present). And that method is NOOP... What is going on?

> Activation broken
> -----------------
>
>                 Key: POLYGENE-295
>                 URL: https://issues.apache.org/jira/browse/POLYGENE-295
>             Project: Polygene
>          Issue Type: Bug
>    Affects Versions: 2.0, 2.1, 3.0.0
>            Reporter: Niclas Hedhman
>            Priority: Major
>
> It is quite possible to get service calls before the activate() method has been called. For instance, inject a Service into the constructor of an Object and call objectFactory.newObject(). Even if instantiateOnStartup(), the activation is not called first.
> On top of that, we have a general issue that the bootstrap code is not really thread-safe (no effort was made on that), and lazy-initialization may cause model corruption due to that, which kind of ties in with the Activation system. I suspect that the above problem is some kind of mixing of concerns and it gets messed up what is supposed to have happened already.
> Step 1; Fix that activation is ALWAYS called before method calls.
> Step 2; Discuss how to deal with lazy initialization. Either make sure that everything in Core Runtime is thread-safe, or drop the current lazy initialization, and possibly replace with a Concern instead (which intercepts the activate() call, and make that happen upon next method call to the service. That seems to be a lot more straight forward and also inline with Polygene principles (eat your own dog food).
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)