[
https://issues.apache.org/jira/browse/OFBIZ-5710?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Justen Walker updated OFBIZ-5710:
---------------------------------
Attachment: daemon-start.png
static-start.png
> Running OFBIZ with jsvc (Commons Daemon) Breaks JobPoller
> ---------------------------------------------------------
>
> Key: OFBIZ-5710
> URL: https://issues.apache.org/jira/browse/OFBIZ-5710
> Project: OFBiz
> Issue Type: Bug
> Components: framework
> Affects Versions: Release Branch 13.07
> Reporter: Justen Walker
> Labels: jsvc
> Attachments: daemon-start.png, static-start.png
>
>
> {{org.ofbiz.base.start.Start}} implements a Singleton pattern but Commons
> Daemon breaks the singleton contract by instantiating it through reflection.
> This means that there are 2 instances of {{Start}} in a running application
> using {{jsvc}}
> When running a heap dump of an OFBiz server running with {{jsvc}} Two
> instances of {{Start}} are present: *#1* (which was created by
> {{DaemonLoader}}) and *#2* (created during static init)
> From the attached screenshots, you can see that the static {{instance}}
> variable points to *#2* instead of *#1*.
> This is a problem because *#1* actually contains the correct application
> state, but anyone using {{Start.getInstance()}} will get *#2* which has not
> been initialized and doesn't contain any relevant data.
> At least one service suffering from this is the {{JobPoller}} which has a few
> lines in the polling code:
> {code:java}
> while (Start.getInstance().getCurrentState() !=
> Start.ServerState.RUNNING) {
> Thread.sleep(1000);
> }
> {code}
> Which will never be able to exit - thus all scheduled jobs will never be run.
> I noticed this in 13.07 but it could affect other versions - I have not
> checked them.
--
This message was sent by Atlassian JIRA
(v6.2#6252)