Skip to main content

Re: Findbugs exception

  • From: John Wells <john.wells@...>
  • To: dev@...
  • Subject: Re: Findbugs exception
  • Date: Fri, 19 Apr 2013 08:07:00 -0400
  • Organization: Oracle Corporation

No, it needs to be done lazily, only when needed. In particular, it is not yet ready when the constructor is called.

On 4/19/2013 7:06 AM, Liang Zhao wrote:
Is it available to move
                controller = controllerProvider.get();
to constructor so that it will be initialized only once?

Sent from my iPhone

On Apr 19, 2013, at 6:42 PM, John Wells <john.wells@...> wrote:

I would like an exception for the following "findbugs" find:

I have a method like this:

    private RunLevelController getController() {
            if (controller != null) return controller;

            synchronized (this) {
                if (controller != null) return controller;

                controller = controllerProvider.get();
                return controller;
            }
        }

What I get from findbugs is this:

jwells: 
nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/server/AppServerStartup.java:590:
 DC_DOUBLECHECK: Possible doublecheck on 
com.sun.enterprise.v3.server.AppServerStartup$AppInstanceListener.controller 
in 
com.sun.enterprise.v3.server.AppServerStartup$AppInstanceListener.getController()
jwells: 
nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/server/AppServerStartup.java:590:
 IS2_INCONSISTENT_SYNC: Inconsistent synchronization of 
com.sun.enterprise.v3.server.AppServerStartup$AppInstanceListener.controller; 
locked 57% of time
jwells: 
nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/server/AppServerStartup.java:590:
 IS2_INCONSISTENT_SYNC: Inconsistent synchronization of 
com.sun.enterprise.v3.server.AppServerStartup$AppInstanceListener.controller; 
locked 57% of time
jwells: 
nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/server/AppServerStartup.java:593:
 IS2_INCONSISTENT_SYNC: Inconsistent synchronization of 
com.sun.enterprise.v3.server.AppServerStartup$AppInstanceListener.controller; 
locked 57% of time
jwells: 
nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/server/AppServerStartup.java:593:
 IS2_INCONSISTENT_SYNC: Inconsistent synchronization of 
com.sun.enterprise.v3.server.AppServerStartup$AppInstanceListener.controller; 
locked 57% of time
jwells: 
nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/server/AppServerStartup.java:595:
 IS2_INCONSISTENT_SYNC: Inconsistent synchronization of 
com.sun.enterprise.v3.server.AppServerStartup$AppInstanceListener.controller; 
locked 57% of time
jwells: 
nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/server/AppServerStartup.java:596:
 IS2_INCONSISTENT_SYNC: Inconsistent synchronization of 
com.sun.enterprise.v3.server.AppServerStartup$AppInstanceListener.controller; 
locked 57% of time

This is the only thing in the file that ever sets the controller variable, 
and the variable never becomes unset.  To me this is valid java...

John Wells
john.wells@oracle.comNOSPAM





Findbugs exception

John Wells 04/19/2013

Re: Findbugs exception

Liang Zhao 04/19/2013

Re: Findbugs exception

John Wells 04/19/2013

Re: Findbugs exception

Bobby Bissett 04/19/2013

Re: Findbugs exception

John Wells 04/19/2013

Re: Findbugs exception

Bobby Bissett 04/19/2013

Re: Findbugs exception

Byron Nevins 04/19/2013

Re: Findbugs exception

Brian Goetz 04/19/2013

Re: Findbugs exception

Byron Nevins 04/19/2013
 
 
Close
loading
Please Confirm
Close