myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Freedman (JIRA)" <...@myfaces.apache.org>
Subject [jira] Resolved: (PORTLETBRIDGE-159) Race condition in GenericFacesPortlet: mFacesBridge
Date Thu, 19 Aug 2010 21:13:17 GMT

     [ https://issues.apache.org/jira/browse/PORTLETBRIDGE-159?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Michael Freedman resolved PORTLETBRIDGE-159.
--------------------------------------------

    Fix Version/s: 1.0.1
                   2.0.0
       Resolution: Fixed

Removed lazy initialization

> Race condition in GenericFacesPortlet: mFacesBridge 
> ----------------------------------------------------
>
>                 Key: PORTLETBRIDGE-159
>                 URL: https://issues.apache.org/jira/browse/PORTLETBRIDGE-159
>             Project: MyFaces Portlet Bridge
>          Issue Type: Bug
>          Components: API
>            Reporter: Karl Krukow
>            Assignee: Michael Freedman
>             Fix For: 1.0.1, 2.0.0
>
>
> GenericFacesPortlet contains an instance variable of type Bridge
> private Bridge mFacesBridge = null;
> this is "lazily" initialized in "initBridge" called in "" called in ""
> initBridge uses the broken "double checked locking" idiom
> private void initBridge() throws PortletException
>   {
>     // Ensure te Bridge has been constrcuted and initialized
>     if (mFacesBridge == null)
>     {
>       try
>       {
>         // ensure we only ever create/init one bridge per portlet
>         synchronized(mLock)
>         {
>           if (mFacesBridge == null)
>           {
>             mFacesBridge = mFacesBridgeClass.newInstance();
>             mFacesBridge.init(getPortletConfig());
>           }
>         }
>       }
>       catch (Exception e)
>       {
>         throw new PortletException("doBridgeDisptach:  error instantiating the bridge
class", e);
>       }
>     }
>   }
> On Java 1.5+ this can be made safe by changing the declaration to:
> private volatile Bridge mFacesBridge = null;
> at a small synchronization cost. Alternatively consider if a version of Josh Bloch's
static initialization "on demand" could be used

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message