[
https://issues.apache.org/jira/browse/POLYGENE-295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16413380#comment-16413380
]
Niclas Hedhman commented on POLYGENE-295:
-----------------------------------------
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)