You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2011/11/30 23:24:30 UTC
svn commit: r1208845 - in /jmeter/trunk/src:
core/org/apache/jmeter/gui/action/ActionRouter.java
reports/org/apache/jmeter/gui/ReportGuiPackage.java
reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
Author: pmouawad
Date: Wed Nov 30 22:24:29 2011
New Revision: 1208845
URL: http://svn.apache.org/viewvc?rev=1208845&view=rev
Log:
Fixed Double Checked Locking Issue
Modified:
jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java
jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java
jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java?rev=1208845&r1=1208844&r2=1208845&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java Wed Nov 30 22:24:29 2011
@@ -43,7 +43,7 @@ public final class ActionRouter implemen
private static final Object LOCK = new Object();
- private static ActionRouter router;
+ private static volatile ActionRouter router;
private Map<String, Set<Command>> commands = new HashMap<String, Set<Command>>();
Modified: jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java?rev=1208845&r1=1208844&r2=1208845&view=diff
==============================================================================
--- jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java (original)
+++ jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java Wed Nov 30 22:24:29 2011
@@ -57,7 +57,7 @@ public final class ReportGuiPackage impl
private static final Object LOCK = new Object();
/** Singleton instance. */
- private static ReportGuiPackage guiPack;
+ private static volatile ReportGuiPackage guiPack;
/**
* Flag indicating whether or not parts of the tree have changed since they
Modified: jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java?rev=1208845&r1=1208844&r2=1208845&view=diff
==============================================================================
--- jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java (original)
+++ jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java Wed Nov 30 22:24:29 2011
@@ -42,7 +42,7 @@ import org.apache.log.Logger;
public final class ReportActionRouter implements ActionListener {
private Map<String, Set<Command>> commands = new HashMap<String, Set<Command>>();
- private static ReportActionRouter router;
+ private static volatile ReportActionRouter router;
private static final Logger log = LoggingManager.getLoggerForClass();
Re: svn commit: r1208845 - in /jmeter/trunk/src: core/org/apache/jmeter/gui/action/ActionRouter.java
reports/org/apache/jmeter/gui/ReportGuiPackage.java reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
Posted by sebb <se...@gmail.com>.
On 1 December 2011 09:02, Philippe Mouawad <ph...@gmail.com> wrote:
> See my comment below.
> Regards
> Philippe
>
> On Thu, Dec 1, 2011 at 1:07 AM, sebb <se...@gmail.com> wrote:
>
>> On 30 November 2011 22:24, <pm...@apache.org> wrote:
>> > Author: pmouawad
>> > Date: Wed Nov 30 22:24:29 2011
>> > New Revision: 1208845
>> >
>> > URL: http://svn.apache.org/viewvc?rev=1208845&view=rev
>> > Log:
>> > Fixed Double Checked Locking Issue
>>
>> Not sure that the multi-threading fixes were needed, but if they are,
>> it might be better to use the Initialisation on Demand idiom.
>>
>> It would be OK if init method did not throw, but as populateCommandMap()
> can throw this would introduce a NoClassDefFoundError
> so I think it's better like this:
>
> - http://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom (When
> not to use it)
I'm not sure that is a problem here, because JMeter cannot really
continue if the populate method fails.
So it would just change the exception, which could anyway be caught
and converted.
But probably not worth changing now.
>
>
>> Modified:
>> > jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java
>> > jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java
>> >
>> jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
>> >
>> > Modified:
>> jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java
>> > URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java?rev=1208845&r1=1208844&r2=1208845&view=diff
>> >
>> ==============================================================================
>> > --- jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java
>> (original)
>> > +++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java
>> Wed Nov 30 22:24:29 2011
>> > @@ -43,7 +43,7 @@ public final class ActionRouter implemen
>> >
>> > private static final Object LOCK = new Object();
>> >
>> > - private static ActionRouter router;
>> > + private static volatile ActionRouter router;
>> >
>> > private Map<String, Set<Command>> commands = new HashMap<String,
>> Set<Command>>();
>> >
>> >
>> > Modified:
>> jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java
>> > URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java?rev=1208845&r1=1208844&r2=1208845&view=diff
>> >
>> ==============================================================================
>> > --- jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java
>> (original)
>> > +++ jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java
>> Wed Nov 30 22:24:29 2011
>> > @@ -57,7 +57,7 @@ public final class ReportGuiPackage impl
>> > private static final Object LOCK = new Object();
>> >
>> > /** Singleton instance. */
>> > - private static ReportGuiPackage guiPack;
>> > + private static volatile ReportGuiPackage guiPack;
>> >
>> > /**
>> > * Flag indicating whether or not parts of the tree have changed
>> since they
>> >
>> > Modified:
>> jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
>> > URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java?rev=1208845&r1=1208844&r2=1208845&view=diff
>> >
>> ==============================================================================
>> > ---
>> jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
>> (original)
>> > +++
>> jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
>> Wed Nov 30 22:24:29 2011
>> > @@ -42,7 +42,7 @@ import org.apache.log.Logger;
>> > public final class ReportActionRouter implements ActionListener {
>> > private Map<String, Set<Command>> commands = new HashMap<String,
>> Set<Command>>();
>> >
>> > - private static ReportActionRouter router;
>> > + private static volatile ReportActionRouter router;
>> >
>> > private static final Logger log = LoggingManager.getLoggerForClass();
>> >
>> >
>> >
>>
>
>
>
> --
> Cordialement.
> Philippe Mouawad.
Re: svn commit: r1208845 - in /jmeter/trunk/src: core/org/apache/jmeter/gui/action/ActionRouter.java
reports/org/apache/jmeter/gui/ReportGuiPackage.java reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
Posted by Philippe Mouawad <ph...@gmail.com>.
See my comment below.
Regards
Philippe
On Thu, Dec 1, 2011 at 1:07 AM, sebb <se...@gmail.com> wrote:
> On 30 November 2011 22:24, <pm...@apache.org> wrote:
> > Author: pmouawad
> > Date: Wed Nov 30 22:24:29 2011
> > New Revision: 1208845
> >
> > URL: http://svn.apache.org/viewvc?rev=1208845&view=rev
> > Log:
> > Fixed Double Checked Locking Issue
>
> Not sure that the multi-threading fixes were needed, but if they are,
> it might be better to use the Initialisation on Demand idiom.
>
> It would be OK if init method did not throw, but as populateCommandMap()
can throw this would introduce a NoClassDefFoundError
so I think it's better like this:
- http://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom (When
not to use it)
> Modified:
> > jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java
> > jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java
> >
> jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
> >
> > Modified:
> jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java
> > URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java?rev=1208845&r1=1208844&r2=1208845&view=diff
> >
> ==============================================================================
> > --- jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java
> (original)
> > +++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java
> Wed Nov 30 22:24:29 2011
> > @@ -43,7 +43,7 @@ public final class ActionRouter implemen
> >
> > private static final Object LOCK = new Object();
> >
> > - private static ActionRouter router;
> > + private static volatile ActionRouter router;
> >
> > private Map<String, Set<Command>> commands = new HashMap<String,
> Set<Command>>();
> >
> >
> > Modified:
> jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java
> > URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java?rev=1208845&r1=1208844&r2=1208845&view=diff
> >
> ==============================================================================
> > --- jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java
> (original)
> > +++ jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java
> Wed Nov 30 22:24:29 2011
> > @@ -57,7 +57,7 @@ public final class ReportGuiPackage impl
> > private static final Object LOCK = new Object();
> >
> > /** Singleton instance. */
> > - private static ReportGuiPackage guiPack;
> > + private static volatile ReportGuiPackage guiPack;
> >
> > /**
> > * Flag indicating whether or not parts of the tree have changed
> since they
> >
> > Modified:
> jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
> > URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java?rev=1208845&r1=1208844&r2=1208845&view=diff
> >
> ==============================================================================
> > ---
> jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
> (original)
> > +++
> jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
> Wed Nov 30 22:24:29 2011
> > @@ -42,7 +42,7 @@ import org.apache.log.Logger;
> > public final class ReportActionRouter implements ActionListener {
> > private Map<String, Set<Command>> commands = new HashMap<String,
> Set<Command>>();
> >
> > - private static ReportActionRouter router;
> > + private static volatile ReportActionRouter router;
> >
> > private static final Logger log = LoggingManager.getLoggerForClass();
> >
> >
> >
>
--
Cordialement.
Philippe Mouawad.
Re: svn commit: r1208845 - in /jmeter/trunk/src: core/org/apache/jmeter/gui/action/ActionRouter.java
reports/org/apache/jmeter/gui/ReportGuiPackage.java reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
Posted by sebb <se...@gmail.com>.
On 30 November 2011 22:24, <pm...@apache.org> wrote:
> Author: pmouawad
> Date: Wed Nov 30 22:24:29 2011
> New Revision: 1208845
>
> URL: http://svn.apache.org/viewvc?rev=1208845&view=rev
> Log:
> Fixed Double Checked Locking Issue
Not sure that the multi-threading fixes were needed, but if they are,
it might be better to use the Initialisation on Demand idiom.
> Modified:
> jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java
> jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java
> jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
>
> Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java?rev=1208845&r1=1208844&r2=1208845&view=diff
> ==============================================================================
> --- jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java (original)
> +++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionRouter.java Wed Nov 30 22:24:29 2011
> @@ -43,7 +43,7 @@ public final class ActionRouter implemen
>
> private static final Object LOCK = new Object();
>
> - private static ActionRouter router;
> + private static volatile ActionRouter router;
>
> private Map<String, Set<Command>> commands = new HashMap<String, Set<Command>>();
>
>
> Modified: jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java?rev=1208845&r1=1208844&r2=1208845&view=diff
> ==============================================================================
> --- jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java (original)
> +++ jmeter/trunk/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java Wed Nov 30 22:24:29 2011
> @@ -57,7 +57,7 @@ public final class ReportGuiPackage impl
> private static final Object LOCK = new Object();
>
> /** Singleton instance. */
> - private static ReportGuiPackage guiPack;
> + private static volatile ReportGuiPackage guiPack;
>
> /**
> * Flag indicating whether or not parts of the tree have changed since they
>
> Modified: jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java?rev=1208845&r1=1208844&r2=1208845&view=diff
> ==============================================================================
> --- jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java (original)
> +++ jmeter/trunk/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java Wed Nov 30 22:24:29 2011
> @@ -42,7 +42,7 @@ import org.apache.log.Logger;
> public final class ReportActionRouter implements ActionListener {
> private Map<String, Set<Command>> commands = new HashMap<String, Set<Command>>();
>
> - private static ReportActionRouter router;
> + private static volatile ReportActionRouter router;
>
> private static final Logger log = LoggingManager.getLoggerForClass();
>
>
>