jmeter-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Philippe Mouawad <philippe.moua...@gmail.com>
Subject Re: svn commit: r1490281 - /jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerProxy.java
Date Thu, 06 Jun 2013 19:55:08 GMT
Hello sebb,
I don't understand your change.

What do you mean by:
+            // This class is cloned per thread, and testIterationStart is
called from a different thread from samplers
+            // so we need to fetch the implementation separately

What is the regression introduced by my commit ?

For me it's the same thread which calls testIterationStart and sample ?
I would like to understand what was wrong in the code I commited.

Thanks for clarifications.
Regards
Philippe

On Thu, Jun 6, 2013 at 3:43 PM, <sebb@apache.org> wrote:

> Author: sebb
> Date: Thu Jun  6 13:43:02 2013
> New Revision: 1490281
>
> URL: http://svn.apache.org/r1490281
> Log:
> Fix bug introduced in http://svn.apache.org/r1489603
> The testIterationStart method is called from a different thread from any
> of the samples
>
> Modified:
>
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerProxy.java
>
> Modified:
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerProxy.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerProxy.java?rev=1490281&r1=1490280&r2=1490281&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerProxy.java
> (original)
> +++
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerProxy.java
> Thu Jun  6 13:43:02 2013
> @@ -36,8 +36,6 @@ public final class HTTPSamplerProxy exte
>
>      private transient HTTPAbstractImpl impl;
>
> -    private transient Exception initException;
> -
>      public HTTPSamplerProxy(){
>          super();
>      }
> @@ -55,11 +53,14 @@ public final class HTTPSamplerProxy exte
>      /** {@inheritDoc} */
>      @Override
>      protected HTTPSampleResult sample(URL u, String method, boolean
> areFollowingRedirect, int depth) {
> -        if(impl != null) {
> -            return impl.sample(u, method, areFollowingRedirect, depth);
> -        } else {
> -            return errorResult(initException, new HTTPSampleResult());
> +        if (impl == null) { // Not called from multiple threads, so this
> is OK
> +            try {
> +                impl =
> HTTPSamplerFactory.getImplementation(getImplementation(), this);
> +            } catch (Exception ex) {
> +                return errorResult(ex, new HTTPSampleResult());
> +            }
>          }
> +        return impl.sample(u, method, areFollowingRedirect, depth);
>      }
>
>      // N.B. It's not possible to forward threadStarted() to the
> implementation class.
> @@ -85,17 +86,13 @@ public final class HTTPSamplerProxy exte
>       */
>      @Override
>      public void testIterationStart(LoopIterationEvent event) {
> -        if (impl == null) { // Not called from multiple threads, so this
> is OK
> -            try {
> -                impl =
> HTTPSamplerFactory.getImplementation(getImplementation(), this);
> -                initException=null;
> -            } catch (Exception ex) {
> -                initException = ex;
> -            }
> -        }
> -        if(impl != null) {
> +        try {
> +            // This class is cloned per thread, and testIterationStart is
> called from a different thread from samplers
> +            // so we need to fetch the implementation separately
> +            HTTPAbstractImpl temp =
> HTTPSamplerFactory.getImplementation(getImplementation(), this);
>              // see
> https://issues.apache.org/bugzilla/show_bug.cgi?id=51380
> -            impl.testIterationStart(event);
> +            temp.testIterationStart(event);
> +        } catch (Exception ex) {
>          }
>      }
>  }
>
>
>


-- 
Cordialement.
Philippe Mouawad.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message