none
Reliable messaging and process restart RRS feed

  • Question

  • Hi!

    When reliable session is created (with CreateSequence message) it should stay open until it is closed with TerminateSequence messages. Or at least this what our client expects. But in WCF the session is aborted also if the process is killed for some reason (application crash, server crash etc.), so there is now way to recover and continue with earlier sessions after restart. Is this behavior against WS-RM  standard?

    Thursday, December 5, 2013 3:27 PM

All replies

  • Hi,

    The WCF service (Reliable Messaging Destination) requires closeSequence before TerminateSequence for graceful way of closing out the sequence. If WCF receives TerminateSequence without closeSequence then the sequence will be terminated immediately by Reliable Messaging Destination (RMD) with a TerminateSequenceResponse message. As per my research, reliable session will not end based on inactive timeout.

    #ReliableSession.InactivityTimeout:
    http://msdn.microsoft.com/en-us/library/system.servicemodel.reliablesession.inactivitytimeout.aspx .

    If the sending application has no messages to send then the reliable session is normally not faulted because of inactivity; instead a keep-alive mechanism keeps the session active indefinitely. Note that the dispatcher could independently abort the reliable session if no application messages are sent or received. Thus, the inactivity timeout typically expires if network conditions are such that no messages of any sort are received or if there is a failure on the sender.

    Best Regards,
    Amy Peng


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    Friday, December 6, 2013 9:00 AM
    Moderator
  • Thank you for this answer but I think you misunderstood my question. The problem is this:

    1. client starts rm session (Create Sequence)

    2. Service acks.

    3. Power outage happens and server (and service) is shut down.

    4. Server and service starts up

    Now we enter a situation where client thinks that there is an open session and server does not remember it any more.

    Our customer thinks that this situation violates the standard. Service should keep the session open which means that then we should be able to store the session information to database etc. and continue with this information after restart.

    Microsoft does not store Sequence id to any persistent memory, like database, and hence WCF cannot recover service restarts. My question is, what is microsoft opinion, is this violating WS-RM standard or not? And is there any possibility to get this to WCF?

    • Edited by MarkoRe Wednesday, December 11, 2013 1:31 PM
    Tuesday, December 10, 2013 9:21 AM