You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by "Justen Walker (JIRA)" <ji...@apache.org> on 2014/08/14 01:42:11 UTC

[jira] [Created] (OFBIZ-5710) Running OFBIZ with jsvc (Commons Daemon) Breaks JobPoller

Justen Walker created OFBIZ-5710:
------------------------------------

             Summary: 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
         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)