< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index Next in Thread >

RE: [reSIProcate] Unable to shutdown DUM during retransmission ofMESSAGE requests


Ah, yes - I see the problem.  Calling end() while retransmissioning
causes the following to occur:

Calling end() will cause ClientPagerMessage to be destructed.  The
BaseUsage base class will end up calling DialogSet::possiblyDie().  The
DialogSet::possiblyDie() method checks the state of the DialogSet and
will not destroy itself if the DialogSet state is Initial.  Thus the
DialogSet never get's deleted - and Dum will not shutdown.

Conversely, if you call end() in onFailure() the DialogSet state is
changed to Established and possiblyDie ends up allowing the DialogSet to
be deleted.  Shutdown works fine.

I'll have talk to the other developers on how to best fix this.  Should
the DialogSet stay around until the final response?  If so, we need to
handle self deletion if there are no usages or Dialogs existing on the
DialogSet.

Thanks,

Scott

-----Original Message-----
From: Dmitry Semyonov [mailto:dsemyonov@xxxxxxx] 
Sent: Wednesday, August 10, 2005 6:37 AM
To: Scott Godin
Cc: resiprocate-devel@xxxxxxxxxxxxxxxxxxx
Subject: RE: [reSIProcate] Unable to shutdown DUM during retransmission
ofMESSAGE requests

Scott,

If I call end() inside onFailure() DUM shuts down indeed. But when 
end() is called during MESSAGE retransmissions, the retransmissions 
continue, (they even continue after shutdown()) and after that I 
can see in the trace that there is no "Destroying usage" line for 
MESSAGE DialogSet after retransmissions timeout.

See attached logs with two cases described above.


On Tue, 9 Aug 2005, Scott Godin wrote:

> I can understand why it would not shutdown if you don't call end() -
> since nothing would destroy the usage.  
> 
> But if you call end() before shutdown, then it SHOULD shutdown OK.  To
> figure this one out - you will likely need to walk through a trace to
> find out what usages/handles are still around.
> 
> Scott
> 
> -----Original Message-----
> From: resiprocate-devel-bounces@xxxxxxxxxxxxxxxxxxx
> [mailto:resiprocate-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of
> Dmitry Semyonov
> Sent: Tuesday, August 09, 2005 1:00 PM
> To: resiprocate-devel@xxxxxxxxxxxxxxxxxxx
> Subject: [reSIProcate] Unable to shutdown DUM during retransmission
> ofMESSAGE requests
> 
> Hello.
> 
> Consider the following scenario.
>  * Send MESSAGE to nowhere.
>  * DUM starts the series of retransmissions.
>  * Shutdown DUM before onFailure() is called due to retransmissions 
> timeout.
> 
> In this case DUM never exits.
> 
> I even tried to call ClientPagerMsgHandle->end() before shutting DUM 
> down with no luck. (I.e. I was not able to force transaction end.)

-- 
...Bye..Dmitry.