[
https://issues.apache.org/jira/browse/POLYGENE-106?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15963948#comment-15963948
]
Niclas Hedhman commented on POLYGENE-106:
-----------------------------------------
Thinking about this for another 2 seconds, I wonder if we should define a
threading model for services, since that is where the problem lies.
Perhaps the issue is actually that "instantiateOnStartup" and activation are
blurring the actual usecase that one is looking for.
instantiateOnStartup is not very Polygene-like naming, as it describes a
mechanism instead of a goal. The goal is along the way that it is a "root
service", "autonomous service", "worker" or something along those lines, and
that requires instantiation and activation, but would it not also imply its own
thread?
It is these services that gets applications going typically, so there is more
to this story than we have recognized in the past. Let's find the right names
and patterns for 3.0
> Investigate and Document the exact lifecycle of Services
> --------------------------------------------------------
>
> Key: POLYGENE-106
> URL: https://issues.apache.org/jira/browse/POLYGENE-106
> Project: Polygene
> Issue Type: Bug
> Reporter: Niclas Hedhman
>
> The Bootstrap is required to be single-threaded, no concurrency measures are
> present, and any multi-threaded code executing before the application has
> been activated, is deemed "undefined" and "potentially fatal".
> But, services are allowed to be lazy-instantiated, which is even the default,
> which means that their activation must be fully thread-safe, including the
> new activation/passivation system for services. POLYGENE-39 might indicate
> that the initialize() method hadn't been executed in full, before another
> thread is granted access to the FileEntityStore, causing "slices==0" and a
> DivideByZero exception to be thrown.
> I think it is essential that the exact details and locks involved, are fully
> investigated and documented to understand what happens during the
> instantiation/activation/initialization phase of a service, long after the
> application has been activated.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)