You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by eg...@apache.org on 2006/11/06 17:50:22 UTC

svn commit: r471790 - in /incubator/cxf/trunk: rt/core/src/main/java/org/apache/cxf/endpoint/ rt/transports/http/src/main/java/org/apache/cxf/transport/http/ rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ rt/ws/addr/src/main/java/org/apache/cxf...

Author: eglynn
Date: Mon Nov  6 08:50:21 2006
New Revision: 471790

URL: http://svn.apache.org/viewvc?view=rev&rev=471790
Log:
Fix for race condition around full responses overtaking partial responses
so that the exchange in message is intermittently over-written.

Modified:
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
    incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java
    incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addressing/HeaderVerifier.java

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java?view=diff&rev=471790&r1=471789&r2=471790
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java Mon Nov  6 08:50:21 2006
@@ -232,6 +232,7 @@
             synchronized (message.getExchange()) {
                 if (!isPartialResponse(message)) {
                     message.getExchange().put(FINISHED, Boolean.TRUE);
+                    message.getExchange().setInMessage(message);
                     message.getExchange().notifyAll();
                 }
             }

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java?view=diff&rev=471790&r1=471789&r2=471790
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java Mon Nov  6 08:50:21 2006
@@ -565,7 +565,7 @@
             InputStream responseStream = req.getInputStream();
             Message inMessage = new MessageImpl();
             // disposable exchange, swapped with real Exchange on correlation
-            new ExchangeImpl().setInMessage(inMessage);
+            inMessage.setExchange(new ExchangeImpl());
             // REVISIT: how to get response headers?
             //inMessage.put(Message.PROTOCOL_HEADERS, req.getXXX());
             setHeaders(inMessage);

Modified: incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java?view=diff&rev=471790&r1=471789&r2=471790
==============================================================================
--- incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java (original)
+++ incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java Mon Nov  6 08:50:21 2006
@@ -348,7 +348,9 @@
                     
                     partialResponse.getInterceptorChain().reset();
                     exchange.setConduit(null);
-                    exchange.setOutMessage(fullResponse);
+                    if (fullResponse != null) {
+                        exchange.setOutMessage(fullResponse);
+                    }
                 }
             } catch (Exception e) {
                 LOG.log(Level.WARNING, "SERVER_TRANSPORT_REBASE_FAILURE_MSG", e);

Modified: incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java?view=diff&rev=471790&r1=471789&r2=471790
==============================================================================
--- incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java (original)
+++ incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java Mon Nov  6 08:50:21 2006
@@ -454,7 +454,7 @@
                 uncorrelatedExchanges.get(maps.getRelatesTo().getValue());
             if (correlatedExchange != null) {
                 synchronized (correlatedExchange) {
-                    correlatedExchange.setInMessage(message);
+                    message.setExchange(correlatedExchange);
                 }
             }
         }

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addressing/HeaderVerifier.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addressing/HeaderVerifier.java?view=diff&rev=471790&r1=471789&r2=471790
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addressing/HeaderVerifier.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addressing/HeaderVerifier.java Mon Nov  6 08:50:21 2006
@@ -66,15 +66,19 @@
     }
 
     public void handleMessage(SoapMessage message) {
+        mediate(message);
+    }
+
+    public void handleFault(SoapMessage message) {
+        mediate(message);
+    }
+    
+    private void mediate(SoapMessage message) {
         boolean outgoingPartialResponse = isOutgoingPartialResponse(message);
         if (outgoingPartialResponse) {
             addPartialResponseHeader(message);
         }
         verify(message, outgoingPartialResponse);
-    }
-
-    public void handleFault(SoapMessage message) {
-        verify(message, isOutgoingPartialResponse(message));
     }
 
     private void addPartialResponseHeader(SoapMessage message) {



Re: svn commit: r471790 - in /incubator/cxf/trunk: rt/core/src/main/java/org/apache/cxf/endpoint/ rt/transports/http/src/main/java/org/apache/cxf/transport/http/ rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ rt/ws/addr/src/main/java/org/apache/cxf...

Posted by Daniel Kulp <da...@iona.com>.
Eoghan,

I'm still getting a failure in the MAP test:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
[surefire] Running org.apache.cxf.systest.ws.addressing.MAPTest
[surefire] Tests run: 3, Failures: 1, Errors: 0, Time elapsed: 8.161 sec
[surefire]
[surefire] testImplicitMAPs(org.apache.cxf.systest.ws.addressing.MAPTest)  
Time elapsed: 1.7 sec  <<< FAILURE!
junit.framework.ComparisonFailure: unexpected response received from 
service expected:<Hello implicit1> but was:<null>
        at junit.framework.Assert.assertEquals(Assert.java:81)
        at 
org.apache.cxf.systest.ws.addressing.MAPTest.testImplicitMAPs(MAPTest.java:138)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)


That's only one test failing instead of two, so there is definitely an 
improvement.


Also, the Sequence test is spitting out:
Started server
Created client bus
Created GreeterService
Created Greeter
Invoking greetMeOneWay ...


Thanks!
Dan






On Monday November 06 2006 11:50 am, eglynn@apache.org wrote:
> Author: eglynn
> Date: Mon Nov  6 08:50:21 2006
> New Revision: 471790
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=471790
> Log:
> Fix for race condition around full responses overtaking partial
> responses so that the exchange in message is intermittently
> over-written.
>
> Modified:
>    
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/Clien
>tImpl.java
> incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/tra
>nsport/http/HTTPConduit.java
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/ContextUtils.java
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/soap/MAPCodec.java
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/ad
>dressing/HeaderVerifier.java
>
> Modified:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/Clien
>tImpl.java URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/
>org/apache/cxf/endpoint/ClientImpl.java?view=diff&rev=471790&r1=471789&r
>2=471790
> =======================================================================
>======= ---
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/Clien
>tImpl.java (original) +++
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/Clien
>tImpl.java Mon Nov  6 08:50:21 2006 @@ -232,6 +232,7 @@
>              synchronized (message.getExchange()) {
>                  if (!isPartialResponse(message)) {
>                      message.getExchange().put(FINISHED, Boolean.TRUE);
> +                    message.getExchange().setInMessage(message);
>                      message.getExchange().notifyAll();
>                  }
>              }
>
> Modified:
> incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/tra
>nsport/http/HTTPConduit.java URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src
>/main/java/org/apache/cxf/transport/http/HTTPConduit.java?view=diff&rev=
>471790&r1=471789&r2=471790
> =======================================================================
>======= ---
> incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/tra
>nsport/http/HTTPConduit.java (original) +++
> incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/tra
>nsport/http/HTTPConduit.java Mon Nov  6 08:50:21 2006 @@ -565,7 +565,7
> @@
>              InputStream responseStream = req.getInputStream();
>              Message inMessage = new MessageImpl();
>              // disposable exchange, swapped with real Exchange on
> correlation -            new ExchangeImpl().setInMessage(inMessage);
> +            inMessage.setExchange(new ExchangeImpl());
>              // REVISIT: how to get response headers?
>              //inMessage.put(Message.PROTOCOL_HEADERS, req.getXXX());
>              setHeaders(inMessage);
>
> Modified:
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/ContextUtils.java URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/main/ja
>va/org/apache/cxf/ws/addressing/ContextUtils.java?view=diff&rev=471790&r
>1=471789&r2=471790
> =======================================================================
>======= ---
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/ContextUtils.java (original) +++
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/ContextUtils.java Mon Nov  6 08:50:21 2006 @@ -348,7 +348,9 @@
>
>                      partialResponse.getInterceptorChain().reset();
>                      exchange.setConduit(null);
> -                    exchange.setOutMessage(fullResponse);
> +                    if (fullResponse != null) {
> +                        exchange.setOutMessage(fullResponse);
> +                    }
>                  }
>              } catch (Exception e) {
>                  LOG.log(Level.WARNING,
> "SERVER_TRANSPORT_REBASE_FAILURE_MSG", e);
>
> Modified:
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/soap/MAPCodec.java URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/main/ja
>va/org/apache/cxf/ws/addressing/soap/MAPCodec.java?view=diff&rev=471790&
>r1=471789&r2=471790
> =======================================================================
>======= ---
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/soap/MAPCodec.java (original) +++
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/soap/MAPCodec.java Mon Nov  6 08:50:21 2006 @@ -454,7 +454,7 @@
>                 
> uncorrelatedExchanges.get(maps.getRelatesTo().getValue()); if
> (correlatedExchange != null) {
>                  synchronized (correlatedExchange) {
> -                    correlatedExchange.setInMessage(message);
> +                    message.setExchange(correlatedExchange);
>                  }
>              }
>          }
>
> Modified:
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/ad
>dressing/HeaderVerifier.java URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java
>/org/apache/cxf/systest/ws/addressing/HeaderVerifier.java?view=diff&rev=
>471790&r1=471789&r2=471790
> =======================================================================
>======= ---
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/ad
>dressing/HeaderVerifier.java (original) +++
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/ad
>dressing/HeaderVerifier.java Mon Nov  6 08:50:21 2006 @@ -66,15 +66,19
> @@
>      }
>
>      public void handleMessage(SoapMessage message) {
> +        mediate(message);
> +    }
> +
> +    public void handleFault(SoapMessage message) {
> +        mediate(message);
> +    }
> +
> +    private void mediate(SoapMessage message) {
>          boolean outgoingPartialResponse =
> isOutgoingPartialResponse(message); if (outgoingPartialResponse) {
>              addPartialResponseHeader(message);
>          }
>          verify(message, outgoingPartialResponse);
> -    }
> -
> -    public void handleFault(SoapMessage message) {
> -        verify(message, isOutgoingPartialResponse(message));
>      }
>
>      private void addPartialResponseHeader(SoapMessage message) {

-- 
J. Daniel Kulp
Principal Engineer
IONA
P: 781-902-8727    C: 508-380-7194   F:781-902-8001
daniel.kulp@iona.com

Re: svn commit: r471790 - in /incubator/cxf/trunk: rt/core/src/main/java/org/apache/cxf/endpoint/ rt/transports/http/src/main/java/org/apache/cxf/transport/http/ rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ rt/ws/addr/src/main/java/org/apache/cxf...

Posted by Daniel Kulp <da...@iona.com>.
Eoghan,

I'm still getting a failure in the MAP test:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
[surefire] Running org.apache.cxf.systest.ws.addressing.MAPTest
[surefire] Tests run: 3, Failures: 1, Errors: 0, Time elapsed: 8.161 sec
[surefire]
[surefire] testImplicitMAPs(org.apache.cxf.systest.ws.addressing.MAPTest)  
Time elapsed: 1.7 sec  <<< FAILURE!
junit.framework.ComparisonFailure: unexpected response received from 
service expected:<Hello implicit1> but was:<null>
        at junit.framework.Assert.assertEquals(Assert.java:81)
        at 
org.apache.cxf.systest.ws.addressing.MAPTest.testImplicitMAPs(MAPTest.java:138)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)


That's only one test failing instead of two, so there is definitely an 
improvement.


Also, the Sequence test is spitting out:
Started server
Created client bus
Created GreeterService
Created Greeter
Invoking greetMeOneWay ...


Thanks!
Dan






On Monday November 06 2006 11:50 am, eglynn@apache.org wrote:
> Author: eglynn
> Date: Mon Nov  6 08:50:21 2006
> New Revision: 471790
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=471790
> Log:
> Fix for race condition around full responses overtaking partial
> responses so that the exchange in message is intermittently
> over-written.
>
> Modified:
>    
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/Clien
>tImpl.java
> incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/tra
>nsport/http/HTTPConduit.java
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/ContextUtils.java
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/soap/MAPCodec.java
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/ad
>dressing/HeaderVerifier.java
>
> Modified:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/Clien
>tImpl.java URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/
>org/apache/cxf/endpoint/ClientImpl.java?view=diff&rev=471790&r1=471789&r
>2=471790
> =======================================================================
>======= ---
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/Clien
>tImpl.java (original) +++
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/Clien
>tImpl.java Mon Nov  6 08:50:21 2006 @@ -232,6 +232,7 @@
>              synchronized (message.getExchange()) {
>                  if (!isPartialResponse(message)) {
>                      message.getExchange().put(FINISHED, Boolean.TRUE);
> +                    message.getExchange().setInMessage(message);
>                      message.getExchange().notifyAll();
>                  }
>              }
>
> Modified:
> incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/tra
>nsport/http/HTTPConduit.java URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src
>/main/java/org/apache/cxf/transport/http/HTTPConduit.java?view=diff&rev=
>471790&r1=471789&r2=471790
> =======================================================================
>======= ---
> incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/tra
>nsport/http/HTTPConduit.java (original) +++
> incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/tra
>nsport/http/HTTPConduit.java Mon Nov  6 08:50:21 2006 @@ -565,7 +565,7
> @@
>              InputStream responseStream = req.getInputStream();
>              Message inMessage = new MessageImpl();
>              // disposable exchange, swapped with real Exchange on
> correlation -            new ExchangeImpl().setInMessage(inMessage);
> +            inMessage.setExchange(new ExchangeImpl());
>              // REVISIT: how to get response headers?
>              //inMessage.put(Message.PROTOCOL_HEADERS, req.getXXX());
>              setHeaders(inMessage);
>
> Modified:
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/ContextUtils.java URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/main/ja
>va/org/apache/cxf/ws/addressing/ContextUtils.java?view=diff&rev=471790&r
>1=471789&r2=471790
> =======================================================================
>======= ---
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/ContextUtils.java (original) +++
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/ContextUtils.java Mon Nov  6 08:50:21 2006 @@ -348,7 +348,9 @@
>
>                      partialResponse.getInterceptorChain().reset();
>                      exchange.setConduit(null);
> -                    exchange.setOutMessage(fullResponse);
> +                    if (fullResponse != null) {
> +                        exchange.setOutMessage(fullResponse);
> +                    }
>                  }
>              } catch (Exception e) {
>                  LOG.log(Level.WARNING,
> "SERVER_TRANSPORT_REBASE_FAILURE_MSG", e);
>
> Modified:
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/soap/MAPCodec.java URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/main/ja
>va/org/apache/cxf/ws/addressing/soap/MAPCodec.java?view=diff&rev=471790&
>r1=471789&r2=471790
> =======================================================================
>======= ---
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/soap/MAPCodec.java (original) +++
> incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressi
>ng/soap/MAPCodec.java Mon Nov  6 08:50:21 2006 @@ -454,7 +454,7 @@
>                 
> uncorrelatedExchanges.get(maps.getRelatesTo().getValue()); if
> (correlatedExchange != null) {
>                  synchronized (correlatedExchange) {
> -                    correlatedExchange.setInMessage(message);
> +                    message.setExchange(correlatedExchange);
>                  }
>              }
>          }
>
> Modified:
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/ad
>dressing/HeaderVerifier.java URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java
>/org/apache/cxf/systest/ws/addressing/HeaderVerifier.java?view=diff&rev=
>471790&r1=471789&r2=471790
> =======================================================================
>======= ---
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/ad
>dressing/HeaderVerifier.java (original) +++
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/ad
>dressing/HeaderVerifier.java Mon Nov  6 08:50:21 2006 @@ -66,15 +66,19
> @@
>      }
>
>      public void handleMessage(SoapMessage message) {
> +        mediate(message);
> +    }
> +
> +    public void handleFault(SoapMessage message) {
> +        mediate(message);
> +    }
> +
> +    private void mediate(SoapMessage message) {
>          boolean outgoingPartialResponse =
> isOutgoingPartialResponse(message); if (outgoingPartialResponse) {
>              addPartialResponseHeader(message);
>          }
>          verify(message, outgoingPartialResponse);
> -    }
> -
> -    public void handleFault(SoapMessage message) {
> -        verify(message, isOutgoingPartialResponse(message));
>      }
>
>      private void addPartialResponseHeader(SoapMessage message) {

-- 
J. Daniel Kulp
Principal Engineer
IONA
P: 781-902-8727    C: 508-380-7194   F:781-902-8001
daniel.kulp@iona.com