You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by Philippe Mouawad <ph...@gmail.com> on 2016/01/01 18:50:04 UTC

Re: svn commit: r1722493 - in /jmeter/trunk: src/components/org/apache/jmeter/visualizers/ src/core/org/apache/jmeter/util/ src/protocol/http/org/apache/jmeter/protocol/http/proxy/ xdocs/

Hi Felix,
First Happy new year !

Then , are you sure about your true parameter where you expect async ?
I think except for ProxyControl you meant to call
JMeterUtils.runSafe(false, new Runnable() {...}) . no ?

Thanks

On Fri, Jan 1, 2016 at 1:51 PM, <fs...@apache.org> wrote:

> Author: fschumacher
> Date: Fri Jan  1 12:51:20 2016
> New Revision: 1722493
>
> URL: http://svn.apache.org/viewvc?rev=1722493&view=rev
> Log:
> Make JMeterUtils#runSafe sync/async awt invocation configurable and
> change the visualizers to use the async version.
>
> Bugzilla Id: 58784
>
> Modified:
>
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/AssertionVisualizer.java
>
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ComparisonVisualizer.java
>
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/DistributionGraphVisualizer.java
>
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/GraphVisualizer.java
>
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java
>
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java
>
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SplineVisualizer.java
>
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java
>
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
>
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java
>
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java
>
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
>     jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java
>
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
>     jmeter/trunk/xdocs/changes.xml
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/AssertionVisualizer.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/AssertionVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/AssertionVisualizer.java
> (original)
> +++
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/AssertionVisualizer.java
> Fri Jan  1 12:51:20 2016
> @@ -57,7 +57,7 @@ public class AssertionVisualizer extends
>          sb.append(sample.getSampleLabel());
>          sb.append(getAssertionResult(sample));
>          sb.append("\n"); // $NON-NLS-1$
> -        JMeterUtils.runSafe(new Runnable() {
> +        JMeterUtils.runSafe(true, new Runnable() {
>              @Override
>              public void run() {
>                  synchronized (textArea) {
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ComparisonVisualizer.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/ComparisonVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ComparisonVisualizer.java
> (original)
> +++
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ComparisonVisualizer.java
> Fri Jan  1 12:51:20 2016
> @@ -60,7 +60,7 @@ public class ComparisonVisualizer extend
>
>      @Override
>      public void add(final SampleResult sample) {
> -        JMeterUtils.runSafe(new Runnable() {
> +        JMeterUtils.runSafe(true, new Runnable() {
>              @Override
>              public void run() {
>                  DefaultMutableTreeNode currNode = new
> DefaultMutableTreeNode(sample);
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/DistributionGraphVisualizer.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/DistributionGraphVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/DistributionGraphVisualizer.java
> (original)
> +++
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/DistributionGraphVisualizer.java
> Fri Jan  1 12:51:20 2016
> @@ -108,7 +108,7 @@ public class DistributionGraphVisualizer
>
>      @Override
>      public void add(final SampleResult res) {
> -        JMeterUtils.runSafe(new Runnable() {
> +        JMeterUtils.runSafe(true, new Runnable() {
>              @Override
>              public void run() {
>                  // made currentSample volatile
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/GraphVisualizer.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/GraphVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/GraphVisualizer.java
> (original)
> +++
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/GraphVisualizer.java
> Fri Jan  1 12:51:20 2016
> @@ -131,7 +131,7 @@ public class GraphVisualizer extends Abs
>
>      @Override
>      public void add(final SampleResult res) {
> -        JMeterUtils.runSafe(new Runnable() {
> +        JMeterUtils.runSafe(true, new Runnable() {
>              @Override
>              public void run() {
>                  updateGui(model.addSample(res));
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java
> (original)
> +++
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java
> Fri Jan  1 12:51:20 2016
> @@ -122,7 +122,7 @@ public class MailerVisualizer extends Ab
>      @Override
>      public void add(final SampleResult res) {
>          if (getModel() != null) {
> -            JMeterUtils.runSafe(new Runnable() {
> +            JMeterUtils.runSafe(true, new Runnable() {
>                  @Override
>                  public void run() {
>                      MailerModel model = ((MailerResultCollector)
> getModel()).getMailerModel();
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java
> (original)
> +++
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java
> Fri Jan  1 12:51:20 2016
> @@ -299,7 +299,7 @@ public class RespTimeGraphVisualizer ext
>          if ((matcher == null) || (matcher.find())) {
>              final long startTimeMS = sampleResult.getStartTime();
>              final long startTimeInterval = startTimeMS / intervalValue;
> -            JMeterUtils.runSafe(new Runnable() {
> +            JMeterUtils.runSafe(true, new Runnable() {
>                  @Override
>                  public void run() {
>                      synchronized (lock) {
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SplineVisualizer.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SplineVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SplineVisualizer.java
> (original)
> +++
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SplineVisualizer.java
> Fri Jan  1 12:51:20 2016
> @@ -94,7 +94,7 @@ public class SplineVisualizer extends Ab
>
>      @Override
>      public void add(final SampleResult res) {
> -        JMeterUtils.runSafe(new Runnable() {
> +        JMeterUtils.runSafe(true, new Runnable() {
>              @Override
>              public void run() {
>                  model.add(res);
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java
> (original)
> +++
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java
> Fri Jan  1 12:51:20 2016
> @@ -361,7 +361,7 @@ public class StatGraphVisualizer extends
>              matcher = pattern.matcher(sampleLabel);
>          }
>          if ((matcher == null) || (matcher.find())) {
> -            JMeterUtils.runSafe(new Runnable() {
> +            JMeterUtils.runSafe(true, new Runnable() {
>                  @Override
>                  public void run() {
>                      SamplingStatCalculator row = null;
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
> (original)
> +++
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
> Fri Jan  1 12:51:20 2016
> @@ -114,7 +114,7 @@ public class StatVisualizer extends Abst
>
>      @Override
>      public void add(final SampleResult res) {
> -        JMeterUtils.runSafe(new Runnable() {
> +        JMeterUtils.runSafe(true, new Runnable() {
>              @Override
>              public void run() {
>                  SamplingStatCalculator row = null;
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java
> (original)
> +++
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java
> Fri Jan  1 12:51:20 2016
> @@ -177,7 +177,7 @@ public class SummaryReport extends Abstr
>      @Override
>      public void add(final SampleResult res) {
>          final String sampleLabel =
> res.getSampleLabel(useGroupName.isSelected());
> -        JMeterUtils.runSafe(new Runnable() {
> +        JMeterUtils.runSafe(true, new Runnable() {
>              @Override
>              public void run() {
>                  Calculator row = null;
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java
> (original)
> +++
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java
> Fri Jan  1 12:51:20 2016
> @@ -166,7 +166,7 @@ public class TableVisualizer extends Abs
>
>      @Override
>      public void add(final SampleResult res) {
> -        JMeterUtils.runSafe(new Runnable() {
> +        JMeterUtils.runSafe(true, new Runnable() {
>              @Override
>              public void run() {
>                  if (childSamples.isSelected()) {
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
> (original)
> +++
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
> Fri Jan  1 12:51:20 2016
> @@ -131,7 +131,7 @@ implements ActionListener, TreeSelection
>      /** {@inheritDoc} */
>      @Override
>      public void add(final SampleResult sample) {
> -        JMeterUtils.runSafe(new Runnable() {
> +        JMeterUtils.runSafe(true, new Runnable() {
>              @Override
>              public void run() {
>                  updateGui(sample);
>
> Modified: jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> --- jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java
> (original)
> +++ jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java Fri Jan
> 1 12:51:20 2016
> @@ -1306,15 +1306,30 @@ public class JMeterUtils implements Unit
>       * @param runnable {@link Runnable}
>       */
>      public static final void runSafe(Runnable runnable) {
> +        runSafe(true, runnable);
> +    }
> +
> +    /**
> +     * Run the runnable in AWT Thread if current thread is not AWT thread
> +     * otherwise runs call {@link SwingUtilities#invokeAndWait(Runnable)}
> +     * @param synchronous flag, whether we will wait for the AWT Thread
> to finish its job.
> +     * @param runnable {@link Runnable}
> +     */
> +    public static final void runSafe(boolean synchronous, Runnable
> runnable) {
>          if(SwingUtilities.isEventDispatchThread()) {
>              runnable.run();
>          } else {
> -            try {
> -                SwingUtilities.invokeAndWait(runnable);
> -            } catch (InterruptedException e) {
> -                log.warn("Interrupted in thread
> "+Thread.currentThread().getName(), e);
> -            } catch (InvocationTargetException e) {
> -                throw new Error(e);
> +            if (synchronous) {
> +                try {
> +                    SwingUtilities.invokeAndWait(runnable);
> +                } catch (InterruptedException e) {
> +                    log.warn("Interrupted in thread "
> +                            + Thread.currentThread().getName(), e);
> +                } catch (InvocationTargetException e) {
> +                    throw new Error(e);
> +                }
> +            } else {
> +                SwingUtilities.invokeLater(runnable);
>              }
>          }
>      }
>
> Modified:
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
> (original)
> +++
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
> Fri Jan  1 12:51:20 2016
> @@ -846,7 +846,7 @@ public class ProxyControl extends Generi
>          final GenericController sc = new GenericController();
>          sc.setProperty(TestElement.GUI_CLASS, LOGIC_CONTROLLER_GUI);
>          sc.setName("-------------------"); // $NON-NLS-1$
> -        JMeterUtils.runSafe(new Runnable() {
> +        JMeterUtils.runSafe(false, new Runnable() {
>              @Override
>              public void run() {
>                  try {
> @@ -876,7 +876,7 @@ public class ProxyControl extends Generi
>          final GenericController sc = new GenericController();
>          sc.setProperty(TestElement.GUI_CLASS, LOGIC_CONTROLLER_GUI);
>          sc.setName(name);
> -        JMeterUtils.runSafe(new Runnable() {
> +        JMeterUtils.runSafe(false, new Runnable() {
>              @Override
>              public void run() {
>                  try {
> @@ -907,7 +907,7 @@ public class ProxyControl extends Generi
>          sc.setIncludeTimers(false);
>          sc.setProperty(TestElement.GUI_CLASS, TRANSACTION_CONTROLLER_GUI);
>          sc.setName(name);
> -        JMeterUtils.runSafe(new Runnable() {
> +        JMeterUtils.runSafe(false, new Runnable() {
>              @Override
>              public void run() {
>                   try {
> @@ -1145,7 +1145,7 @@ public class ProxyControl extends Generi
>              final long deltaTFinal = deltaT;
>              final boolean firstInBatchFinal = firstInBatch;
>              final JMeterTreeNode myTargetFinal = myTarget;
> -            JMeterUtils.runSafe(new Runnable() {
> +            JMeterUtils.runSafe(false, new Runnable() {
>                  @Override
>                  public void run() {
>                      try {
>
> Modified: jmeter/trunk/xdocs/changes.xml
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1722493&r1=1722492&r2=1722493&view=diff
>
> ==============================================================================
> --- jmeter/trunk/xdocs/changes.xml (original)
> +++ jmeter/trunk/xdocs/changes.xml Fri Jan  1 12:51:20 2016
> @@ -161,6 +161,7 @@ Summary
>  <li><bug>58772</bug>Deprecate MongoDB related elements</li>
>  <li><bug>58782</bug>ThreadGroup : Improve ergonomy</li>
>  <li><bug>58165</bug>Show the time elapsed since the start of the load
> test in GUI mode. Partly based on a contribution from Maxime Chassagneux
> (maxime.chassagneux at gmail.com)</li>
> +<li><bug>58784</bug>Make JMeterUtils#runSafe sync/async awt invocation
> configurable and change the visualizers to use the async version.</li>
>  </ul>
>  <ch_section>Non-functional changes</ch_section>
>  <ul>
>
>
>


-- 
Cordialement.
Philippe Mouawad.

Re: svn commit: r1722493 - in /jmeter/trunk: src/components/org/apache/jmeter/visualizers/ src/core/org/apache/jmeter/util/ src/protocol/http/org/apache/jmeter/protocol/http/proxy/ xdocs/

Posted by Felix Schumacher <fe...@internetallee.de>.
Am 01.01.2016 um 18:50 schrieb Philippe Mouawad:
> Hi Felix,
> First Happy new year !
Happy new year.
>
> Then , are you sure about your true parameter where you expect async ?
> I think except for ProxyControl you meant to call
> JMeterUtils.runSafe(false, new Runnable() {...}) . no ?
You are right, the flags have to be reverted. (see r1722543)

Thanks,
  Felix
>
> Thanks
>
> On Fri, Jan 1, 2016 at 1:51 PM, <fs...@apache.org> wrote:
>
>> Author: fschumacher
>> Date: Fri Jan  1 12:51:20 2016
>> New Revision: 1722493
>>
>> URL: http://svn.apache.org/viewvc?rev=1722493&view=rev
>> Log:
>> Make JMeterUtils#runSafe sync/async awt invocation configurable and
>> change the visualizers to use the async version.
>>
>> Bugzilla Id: 58784
>>
>> Modified:
>>
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/AssertionVisualizer.java
>>
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ComparisonVisualizer.java
>>
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/DistributionGraphVisualizer.java
>>
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/GraphVisualizer.java
>>
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java
>>
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java
>>
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SplineVisualizer.java
>>
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java
>>
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
>>
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java
>>
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java
>>
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
>>      jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java
>>
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
>>      jmeter/trunk/xdocs/changes.xml
>>
>> Modified:
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/AssertionVisualizer.java
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/AssertionVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> ---
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/AssertionVisualizer.java
>> (original)
>> +++
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/AssertionVisualizer.java
>> Fri Jan  1 12:51:20 2016
>> @@ -57,7 +57,7 @@ public class AssertionVisualizer extends
>>           sb.append(sample.getSampleLabel());
>>           sb.append(getAssertionResult(sample));
>>           sb.append("\n"); // $NON-NLS-1$
>> -        JMeterUtils.runSafe(new Runnable() {
>> +        JMeterUtils.runSafe(true, new Runnable() {
>>               @Override
>>               public void run() {
>>                   synchronized (textArea) {
>>
>> Modified:
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ComparisonVisualizer.java
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/ComparisonVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> ---
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ComparisonVisualizer.java
>> (original)
>> +++
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ComparisonVisualizer.java
>> Fri Jan  1 12:51:20 2016
>> @@ -60,7 +60,7 @@ public class ComparisonVisualizer extend
>>
>>       @Override
>>       public void add(final SampleResult sample) {
>> -        JMeterUtils.runSafe(new Runnable() {
>> +        JMeterUtils.runSafe(true, new Runnable() {
>>               @Override
>>               public void run() {
>>                   DefaultMutableTreeNode currNode = new
>> DefaultMutableTreeNode(sample);
>>
>> Modified:
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/DistributionGraphVisualizer.java
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/DistributionGraphVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> ---
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/DistributionGraphVisualizer.java
>> (original)
>> +++
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/DistributionGraphVisualizer.java
>> Fri Jan  1 12:51:20 2016
>> @@ -108,7 +108,7 @@ public class DistributionGraphVisualizer
>>
>>       @Override
>>       public void add(final SampleResult res) {
>> -        JMeterUtils.runSafe(new Runnable() {
>> +        JMeterUtils.runSafe(true, new Runnable() {
>>               @Override
>>               public void run() {
>>                   // made currentSample volatile
>>
>> Modified:
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/GraphVisualizer.java
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/GraphVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> ---
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/GraphVisualizer.java
>> (original)
>> +++
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/GraphVisualizer.java
>> Fri Jan  1 12:51:20 2016
>> @@ -131,7 +131,7 @@ public class GraphVisualizer extends Abs
>>
>>       @Override
>>       public void add(final SampleResult res) {
>> -        JMeterUtils.runSafe(new Runnable() {
>> +        JMeterUtils.runSafe(true, new Runnable() {
>>               @Override
>>               public void run() {
>>                   updateGui(model.addSample(res));
>>
>> Modified:
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> ---
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java
>> (original)
>> +++
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java
>> Fri Jan  1 12:51:20 2016
>> @@ -122,7 +122,7 @@ public class MailerVisualizer extends Ab
>>       @Override
>>       public void add(final SampleResult res) {
>>           if (getModel() != null) {
>> -            JMeterUtils.runSafe(new Runnable() {
>> +            JMeterUtils.runSafe(true, new Runnable() {
>>                   @Override
>>                   public void run() {
>>                       MailerModel model = ((MailerResultCollector)
>> getModel()).getMailerModel();
>>
>> Modified:
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> ---
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java
>> (original)
>> +++
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java
>> Fri Jan  1 12:51:20 2016
>> @@ -299,7 +299,7 @@ public class RespTimeGraphVisualizer ext
>>           if ((matcher == null) || (matcher.find())) {
>>               final long startTimeMS = sampleResult.getStartTime();
>>               final long startTimeInterval = startTimeMS / intervalValue;
>> -            JMeterUtils.runSafe(new Runnable() {
>> +            JMeterUtils.runSafe(true, new Runnable() {
>>                   @Override
>>                   public void run() {
>>                       synchronized (lock) {
>>
>> Modified:
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SplineVisualizer.java
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SplineVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> ---
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SplineVisualizer.java
>> (original)
>> +++
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SplineVisualizer.java
>> Fri Jan  1 12:51:20 2016
>> @@ -94,7 +94,7 @@ public class SplineVisualizer extends Ab
>>
>>       @Override
>>       public void add(final SampleResult res) {
>> -        JMeterUtils.runSafe(new Runnable() {
>> +        JMeterUtils.runSafe(true, new Runnable() {
>>               @Override
>>               public void run() {
>>                   model.add(res);
>>
>> Modified:
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> ---
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java
>> (original)
>> +++
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java
>> Fri Jan  1 12:51:20 2016
>> @@ -361,7 +361,7 @@ public class StatGraphVisualizer extends
>>               matcher = pattern.matcher(sampleLabel);
>>           }
>>           if ((matcher == null) || (matcher.find())) {
>> -            JMeterUtils.runSafe(new Runnable() {
>> +            JMeterUtils.runSafe(true, new Runnable() {
>>                   @Override
>>                   public void run() {
>>                       SamplingStatCalculator row = null;
>>
>> Modified:
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> ---
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
>> (original)
>> +++
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
>> Fri Jan  1 12:51:20 2016
>> @@ -114,7 +114,7 @@ public class StatVisualizer extends Abst
>>
>>       @Override
>>       public void add(final SampleResult res) {
>> -        JMeterUtils.runSafe(new Runnable() {
>> +        JMeterUtils.runSafe(true, new Runnable() {
>>               @Override
>>               public void run() {
>>                   SamplingStatCalculator row = null;
>>
>> Modified:
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> ---
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java
>> (original)
>> +++
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java
>> Fri Jan  1 12:51:20 2016
>> @@ -177,7 +177,7 @@ public class SummaryReport extends Abstr
>>       @Override
>>       public void add(final SampleResult res) {
>>           final String sampleLabel =
>> res.getSampleLabel(useGroupName.isSelected());
>> -        JMeterUtils.runSafe(new Runnable() {
>> +        JMeterUtils.runSafe(true, new Runnable() {
>>               @Override
>>               public void run() {
>>                   Calculator row = null;
>>
>> Modified:
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> ---
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java
>> (original)
>> +++
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java
>> Fri Jan  1 12:51:20 2016
>> @@ -166,7 +166,7 @@ public class TableVisualizer extends Abs
>>
>>       @Override
>>       public void add(final SampleResult res) {
>> -        JMeterUtils.runSafe(new Runnable() {
>> +        JMeterUtils.runSafe(true, new Runnable() {
>>               @Override
>>               public void run() {
>>                   if (childSamples.isSelected()) {
>>
>> Modified:
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> ---
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
>> (original)
>> +++
>> jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
>> Fri Jan  1 12:51:20 2016
>> @@ -131,7 +131,7 @@ implements ActionListener, TreeSelection
>>       /** {@inheritDoc} */
>>       @Override
>>       public void add(final SampleResult sample) {
>> -        JMeterUtils.runSafe(new Runnable() {
>> +        JMeterUtils.runSafe(true, new Runnable() {
>>               @Override
>>               public void run() {
>>                   updateGui(sample);
>>
>> Modified: jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> --- jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java
>> (original)
>> +++ jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java Fri Jan
>> 1 12:51:20 2016
>> @@ -1306,15 +1306,30 @@ public class JMeterUtils implements Unit
>>        * @param runnable {@link Runnable}
>>        */
>>       public static final void runSafe(Runnable runnable) {
>> +        runSafe(true, runnable);
>> +    }
>> +
>> +    /**
>> +     * Run the runnable in AWT Thread if current thread is not AWT thread
>> +     * otherwise runs call {@link SwingUtilities#invokeAndWait(Runnable)}
>> +     * @param synchronous flag, whether we will wait for the AWT Thread
>> to finish its job.
>> +     * @param runnable {@link Runnable}
>> +     */
>> +    public static final void runSafe(boolean synchronous, Runnable
>> runnable) {
>>           if(SwingUtilities.isEventDispatchThread()) {
>>               runnable.run();
>>           } else {
>> -            try {
>> -                SwingUtilities.invokeAndWait(runnable);
>> -            } catch (InterruptedException e) {
>> -                log.warn("Interrupted in thread
>> "+Thread.currentThread().getName(), e);
>> -            } catch (InvocationTargetException e) {
>> -                throw new Error(e);
>> +            if (synchronous) {
>> +                try {
>> +                    SwingUtilities.invokeAndWait(runnable);
>> +                } catch (InterruptedException e) {
>> +                    log.warn("Interrupted in thread "
>> +                            + Thread.currentThread().getName(), e);
>> +                } catch (InvocationTargetException e) {
>> +                    throw new Error(e);
>> +                }
>> +            } else {
>> +                SwingUtilities.invokeLater(runnable);
>>               }
>>           }
>>       }
>>
>> Modified:
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> ---
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
>> (original)
>> +++
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
>> Fri Jan  1 12:51:20 2016
>> @@ -846,7 +846,7 @@ public class ProxyControl extends Generi
>>           final GenericController sc = new GenericController();
>>           sc.setProperty(TestElement.GUI_CLASS, LOGIC_CONTROLLER_GUI);
>>           sc.setName("-------------------"); // $NON-NLS-1$
>> -        JMeterUtils.runSafe(new Runnable() {
>> +        JMeterUtils.runSafe(false, new Runnable() {
>>               @Override
>>               public void run() {
>>                   try {
>> @@ -876,7 +876,7 @@ public class ProxyControl extends Generi
>>           final GenericController sc = new GenericController();
>>           sc.setProperty(TestElement.GUI_CLASS, LOGIC_CONTROLLER_GUI);
>>           sc.setName(name);
>> -        JMeterUtils.runSafe(new Runnable() {
>> +        JMeterUtils.runSafe(false, new Runnable() {
>>               @Override
>>               public void run() {
>>                   try {
>> @@ -907,7 +907,7 @@ public class ProxyControl extends Generi
>>           sc.setIncludeTimers(false);
>>           sc.setProperty(TestElement.GUI_CLASS, TRANSACTION_CONTROLLER_GUI);
>>           sc.setName(name);
>> -        JMeterUtils.runSafe(new Runnable() {
>> +        JMeterUtils.runSafe(false, new Runnable() {
>>               @Override
>>               public void run() {
>>                    try {
>> @@ -1145,7 +1145,7 @@ public class ProxyControl extends Generi
>>               final long deltaTFinal = deltaT;
>>               final boolean firstInBatchFinal = firstInBatch;
>>               final JMeterTreeNode myTargetFinal = myTarget;
>> -            JMeterUtils.runSafe(new Runnable() {
>> +            JMeterUtils.runSafe(false, new Runnable() {
>>                   @Override
>>                   public void run() {
>>                       try {
>>
>> Modified: jmeter/trunk/xdocs/changes.xml
>> URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1722493&r1=1722492&r2=1722493&view=diff
>>
>> ==============================================================================
>> --- jmeter/trunk/xdocs/changes.xml (original)
>> +++ jmeter/trunk/xdocs/changes.xml Fri Jan  1 12:51:20 2016
>> @@ -161,6 +161,7 @@ Summary
>>   <li><bug>58772</bug>Deprecate MongoDB related elements</li>
>>   <li><bug>58782</bug>ThreadGroup : Improve ergonomy</li>
>>   <li><bug>58165</bug>Show the time elapsed since the start of the load
>> test in GUI mode. Partly based on a contribution from Maxime Chassagneux
>> (maxime.chassagneux at gmail.com)</li>
>> +<li><bug>58784</bug>Make JMeterUtils#runSafe sync/async awt invocation
>> configurable and change the visualizers to use the async version.</li>
>>   </ul>
>>   <ch_section>Non-functional changes</ch_section>
>>   <ul>
>>
>>
>>
>