On Wed, Mar 11, 2009 at 6:47 PM, Andrew K Gatford <[email protected]>wrote:

>
> Hi Amila
>
> Thanks for the exception.  I managed to recreate the problem by modifying
> the Sandesha unit tests.  I think I have fixed it by making a change to the
> InMemoryTransaction to only add a bean to the locked list if it really did
> lock it (revision 752438)  .  This means that the catch (RuntimeException)
> could be removed.
> Do you want to give it a try ?


Now it is working .

thanks,
Amila.

>
>
> Thanks
>
> Andrew Gatford
> Technical Project Lead
> Websphere ESB Foundation Technologies
> Hursley MP211
> IBM United Kingdom Laboratories, Hursley Park, Winchester, SO21 2JN
> Telephone :
> Internal (7) 245743
> External 01962 815743
> Internet : [email protected]
>
>
>  From: Amila Suriarachchi <[email protected]>
> To: Andrew K Gatford/UK/i...@ibmgb Cc: "[email protected]" <
> [email protected]> Date: 11/03/2009 08:06 Subject: Re: Fw: svn
> commit: r747405 -
> /webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/storage/inmemory/InMemoryTransaction.java
> ------------------------------
>
>
>
> Here is the exception. which I got just putting a e.printStcktrance() at
> the empty catch block you have mentioned.
>
> java.lang.IllegalMonitorStateException
>     at
> java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:125)
>     at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1137)
>     at
> java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:431)
>     at
> org.apache.sandesha2.storage.inmemory.InMemoryTransaction.releaseLocks(InMemoryTransaction.java:192)
>     at
> org.apache.sandesha2.storage.inmemory.InMemoryTransaction.commit(InMemoryTransaction.java:87)
>     at
> org.apache.sandesha2.handlers.SandeshaGlobalInHandler.processApplicationMessage(SandeshaGlobalInHandler.java:264)
>     at
> org.apache.sandesha2.handlers.SandeshaGlobalInHandler.invoke(SandeshaGlobalInHandler.java:152)
>     at org.apache.axis2.engine.Phase.invoke(Phase.java:318)
>     at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:252)
>     at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:161)
>     at
> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:167)
>     at
> org.apache.axis2.transport.http.HTTPWorker.service(HTTPWorker.java:267)
>     at
> org.apache.axis2.transport.http.server.AxisHttpService.doService(AxisHttpService.java:281)
>     at
> org.apache.axis2.transport.http.server.AxisHttpService.handleRequest(AxisHttpService.java:187)
>     at
> org.apache.axis2.transport.http.server.HttpServiceProcessor.run(HttpServiceProcessor.java:82)
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>     at java.lang.Thread.run(Thread.java:595)
>
>
> thanks,
> Amila.
> On Wed, Mar 11, 2009 at 10:40 AM, Amila Suriarachchi <*
> [email protected]* <[email protected]>> wrote:
> Hi,
>
> Sorry for late reply.
>
> On Tue, Mar 3, 2009 at 5:00 PM, Andrew K Gatford 
> <*[email protected]*<[email protected]>>
> wrote:
>
> Hi,
>
> I've been looking at this change for a while and trying to work out what
> you were trying to achieve as at the moment as I really don't like catching
> a (RuntimeException).
> I agree with you. As I have describes in the commit message I did this to
> stop the fault message thrown to the client.
>
> This is my scenario. I think you can easily reproduce this.
>
> Write a service which which delays 60s in its service method. Then invoke
> this method using RM where retransmission interval is set to 15s.
>
> When the first message comes it goes to the service and and hangs 60s. Then
> the other messages hangs at the Sandesha2 In handler level and after the
> waiting period, Inmemory storage throws and exception. (I'll forward the
> whole stack trace)
> Then this causes an *soap fault* to send to client. And that causes some
> other exceptions at the client side.
>
>
> At the very least we should log the exception that was caught.  The best
> solution would be to catch the actual exception that was thrown.
>
> Do you think is it correct to send a soap fault to client? when there is a
> problem with the server side.
> Even so - as you said, we probably have a problem with the InMemory
> transaction model and we are now simply hiding this.  This leads me onto
> another question.  What was the exception thrown ?
>
> Andrew Gatford
> Technical Project Lead
> Websphere ESB Foundation Technologies
> Hursley MP211
> IBM United Kingdom Laboratories, Hursley Park, Winchester, SO21 2JN
> Telephone :
> Internal (7) 245743
> External 01962 815743
> Internet : *[email protected]* <[email protected]>
> ----- Forwarded by Andrew K Gatford/UK/IBM on 03/03/2009 11:26 -----
> From: *[email protected]* <[email protected]>  To: *
> [email protected]* <[email protected]>  Date: 24/02/2009
> 15:39  Subject: svn commit: r747405 -
> /webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/storage/inmemory/InMemoryTransaction.java
>
>  ------------------------------
>
>
>
> Author: amilas
> Date: Tue Feb 24 15:38:33 2009
> New Revision: 747405
>
> URL: 
> *http://svn.apache.org/viewvc?rev=747405&view=rev*<http://svn.apache.org/viewvc?rev=747405&view=rev>
> Log:
> when handling duplicate messages. i.e if the services blocks the thread for
> 60 seconds, then there is a possiblity
> that RMS sends duplicate messages. these duplcate messages are locked in
> the GloblaInHander util first message clear
> the service. Then when after processing these messages they going to
> commit. At this commit release locks method
> throws a Runtime Exception which causes a soap fault message. this can be
> avoided by catching this exception at this
> level. But how ever there may be an error with the InMemory Transaction
> model.
>
> Modified:
>
>  
> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/storage/inmemory/InMemoryTransaction.java
>
> Modified:
> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/storage/inmemory/InMemoryTransaction.java
> URL: *
> http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/storage/inmemory/InMemoryTransaction.java?rev=747405&r1=747404&r2=747405&view=diff
> *<http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/storage/inmemory/InMemoryTransaction.java?rev=747405&r1=747404&r2=747405&view=diff>
>
> ==============================================================================
> ---
> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/storage/inmemory/InMemoryTransaction.java
> (original)
> +++
> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/storage/inmemory/InMemoryTransaction.java
> Tue Feb 24 15:38:33 2009
> @@ -81,12 +81,15 @@
>                                   this.useSerialization = useSerialization;
>                                   if(LoggingControl.isAnyTracingEnabled()
> && log.isDebugEnabled()) log.debug("Exit: InMemoryTransaction::<init>, " +
> this);
>                  }
> -
> -                 public void commit() {
> -                                  releaseLocks();
> -                                  if(sentMessages && useSerialization)
> manager.getSender().wakeThread();
> -                                  active = false;
> -                 }
> +
> +    public void commit() {
> +        try {
> +            releaseLocks();
> +        } catch (RuntimeException e) {
> +        }
> +        if (sentMessages && useSerialization)
> manager.getSender().wakeThread();
> +        active = false;
> +    }
>
>                  public void rollback() {
>                                   releaseLocks();
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: 
> *[email protected]*<[email protected]>
> For additional commands, e-mail: 
> *[email protected]*<[email protected]>
>
>
>
>
>
>  ------------------------------
> *
> *
>
> *Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with number
> 741598.
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
> *
>
>
>
>
>
>
>
>
> --
> Amila Suriarachchi
> WSO2 Inc.
> blog: 
> *http://amilachinthaka.blogspot.com/*<http://amilachinthaka.blogspot.com/>
>
>
>
> --
> Amila Suriarachchi
> WSO2 Inc.
> blog: 
> *http://amilachinthaka.blogspot.com/*<http://amilachinthaka.blogspot.com/>
>
>
>
>
>  ------------------------------
>
> *
> *
>
> *Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with number
> 741598.
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
> *
>
>
>
>
>
>
>


-- 
Amila Suriarachchi
WSO2 Inc.
blog: http://amilachinthaka.blogspot.com/

Reply via email to