[jira] [Commented] (OFBIZ-10638) The ‘StartupLoader’ interface should be removed

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (OFBIZ-10638) The ‘StartupLoader’ interface should be removed

Nicolas Malin (Jira)

    [ https://issues.apache.org/jira/browse/OFBIZ-10638?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16754876#comment-16754876 ]

Mathieu Lirzin commented on OFBIZ-10638:
----------------------------------------

Hello Taher,

After studying “Java concurrency in practice” by Brian Goetz, I have updated  [^OFBIZ-10638_Remove-StartupLoader-interface.patch]  with the following change. The initial code for {{loadStartupLoaders}} with multiple loaders was the following:
{code:java}
        synchronized (loaders) {
            if (serverState.get() == ServerState.STOPPING) {
                return;
            }
            try {
                Class<?> loaderClass = classloader.loadClass(startupLoaderName);
                StartupLoader loader = (StartupLoader) loaderClass.newInstance();
                loaders.add(loader); // add before loading, so unload can occur if error during loading
                loader.load(config, ofbizCommands);
            } catch (ReflectiveOperationException e) {
                throw new StartupException(e);
            }
        }
{code}

my first patch was relaxing the invariants by removing the synchronization between the check of the server state and the loading of the component container:
{code:java}
        if (serverState.get() == ServerState.STOPPING) {
            return;
        }
        loader.load(config, ofbizCommands);
{code}

the updated patch reintroduce that invariant to preserve the initial concurrency semantics
{code:java}
        synchronized (StartupControlPanel.class) {
            if (serverState.get() == ServerState.STOPPING) {
                return;
            }
            loader.load(config, ofbizCommands);
        }
{code}

To avoid delaying the close of that ticket, I have removed the extra refactoring patches which I keep for a later ticket.

> The ‘StartupLoader’ interface should be removed
> -----------------------------------------------
>
>                 Key: OFBIZ-10638
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-10638
>             Project: OFBiz
>          Issue Type: Improvement
>    Affects Versions: Trunk
>            Reporter: Mathieu Lirzin
>            Assignee: Taher Alkhateeb
>            Priority: Minor
>             Fix For: Upcoming Branch
>
>         Attachments: OFBIZ-10638_Remove-StartupLoader-interface.patch
>
>
> OFBiz used to provide alternate Startup loaders. Nowadays only the container loaders is used. As suggested by Taher [on the dev mailing list|https://lists.apache.org/thread.html/f99d6f661eb8197df8eac6d8ba7db3fa9b7fe2569a4a24ef2fef5cae@%3Cdev.ofbiz.apache.org%3E], the {{StartupLoader}} interface should be removed and startup code using it should be adapted.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)