polygene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Niclas Hedhman (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (POLYGENE-295) Activation broken
Date Mon, 26 Mar 2018 05:15:00 GMT

    [ 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

View raw message