sailfin
  1. sailfin
  2. SAILFIN-1675

saveDialogFragment fails for outbound requests as failover server instance not found. Reason: bekey is null.

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: 2.0
    • Fix Version/s: milestone 1
    • Component/s: session_replication
    • Labels:
      None
    • Environment:

      Operating System: All
      Platform: All

    • Issuezilla Id:
      1,675

      Description

      Build 06

      Scenario:
      Server receives a Http request
      Server sends INVITE to a SIP client
      Receives 200 Ok.
      Sends ACK

      At this point SAS, SS and DF are to be save to the replica instance. SAS and SS
      get saved to the replica instance but DF save fails with the following expection
      in the logs:

      *************
      [#|2009-03-24T14:58:17.842+0530|SEVERE|sun-glassfish-comms-server1.5|grizzly|_ThreadID=35;_ThreadName=SipContainer-serversWorkerThread-5060-3;_RequestID=2793eca5-f5a7-4bab-8e4d-d7d6bb47cc4b;|WorkerThreadImpl
      unexpected exception:
      java.lang.IllegalArgumentException: Null key provided to lookup failover server
      instance at
      org.jvnet.glassfish.comms.clb.core.sip.DataCentricUtilImpl.getFailoverServerInstance(DataCentricUtilImpl.java:161)
      at
      com.ericsson.ssa.sip.SipApplicationSessionUtil.getFailoverServerInstanceForBeKey(SipApplicationSessionUtil.java:108)
      at
      org.jvnet.glassfish.comms.replication.sessmgmt.ExtendedReplicationUtil.getFailoverServerInstanceForBeKey(ExtendedReplicationUtil.java:109)
      at
      com.sun.enterprise.ee.web.sessmgmt.JxtaReplicationSender.sendReplicationState(JxtaReplicationSender.java:396)
      at
      com.sun.enterprise.ee.web.sessmgmt.JxtaBackingStoreImpl.doTransmit(JxtaBackingStoreImpl.java:764)
      at
      com.sun.enterprise.ee.web.sessmgmt.JxtaBackingStoreImpl.saveSimple(JxtaBackingStoreImpl.java:315)
      at
      com.sun.enterprise.ee.web.sessmgmt.JxtaBackingStoreImpl.save(JxtaBackingStoreImpl.java:261)
      at
      org.jvnet.glassfish.comms.replication.dialogmgmt.DialogFragmentStoreImpl.doSave(DialogFragmentStoreImpl.java:538)
      at
      org.jvnet.glassfish.comms.replication.dialogmgmt.DialogFragmentStoreImpl.save(DialogFragmentStoreImpl.java:434)
      at
      org.jvnet.glassfish.comms.replication.dialogmgmt.ReplicationDialogFragmentManager.saveDialogFragment(ReplicationDialogFragmentManager.java:813)
      at
      org.jvnet.glassfish.comms.replication.dialogmgmt.HADialogFragment.save(HADialogFragment.java:497)
      at
      com.ericsson.ssa.sip.persistence.ReplicationUnitOfWork.save(ReplicationUnitOfWork.java:119)
      at
      com.ericsson.ssa.sip.persistence.ReplicationUnitOfWork.save(ReplicationUnitOfWork.java:151)
      at
      com.ericsson.ssa.sip.dialog.DialogLifeCycle.save(DialogLifeCycle.java:219)
      at
      com.ericsson.ssa.sip.persistence.ReplicationManager.replicateOnOutboundRequest(ReplicationManager.java:178)
      at
      com.ericsson.ssa.sip.persistence.ReplicationManager.dispatch(ReplicationManager.java:165)
      at
      com.ericsson.ssa.sip.dns.ResolverManager.dispatch(ResolverManager.java:219)
      at com.ericsson.ssa.sip.DialogManager.dispatch(DialogManager.java:805)
      at
      com.ericsson.ssa.sip.LocalRouteManager.dispatch(LocalRouteManager.java:148)
      at
      com.ericsson.ssa.container.sim.ApplicationDispatcher.dispatchViaStatelessProxy(ApplicationDispatcher.java:801)
      at
      com.ericsson.ssa.container.sim.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:348)
      at com.ericsson.ssa.sip.FSM$1.call(FSM.java:132)
      at
      com.sun.grizzly.util.WorkerThreadImpl.processTask(WorkerThreadImpl.java:325)
      at com.sun.grizzly.util.WorkerThreadImpl.run(WorkerThreadImpl.java:184)

      #]

      ******************

      You can use the ShortInstanceFailure test case under SSR FTs converged tests to
      try your fix out. Use the following in your test list.
      package=com.sun.asqe.systemtests.sessionreplication.converged
      ShortInstanceFailure

        Activity

        Hide
        Mahesh Kannan added a comment -

        DialogFaragmentStoreImpl.doSave() creates a ReplicationState and sets the BEKEY
        property by calling haDialogFragment.getBeKey().

        Looks like haDialogFragment.getBeKey() is returning null in this case.

        Show
        Mahesh Kannan added a comment - DialogFaragmentStoreImpl.doSave() creates a ReplicationState and sets the BEKEY property by calling haDialogFragment.getBeKey(). Looks like haDialogFragment.getBeKey() is returning null in this case.
        Hide
        varunrupela added a comment -

        Created an attachment (id=989)
        attaching the application source

        Show
        varunrupela added a comment - Created an attachment (id=989) attaching the application source
        Hide
        varunrupela added a comment -

        Attached the application source.
        See file
        convergedapp/src/com/sun/asqe/sessionreplication/convergedapp/ClickToDialServlet.java

        after unzipping the attachment

        Show
        varunrupela added a comment - Attached the application source. See file convergedapp/src/com/sun/asqe/sessionreplication/convergedapp/ClickToDialServlet.java after unzipping the attachment
        Hide
        erikvandervelden added a comment -

        Assigning to myself

        Show
        erikvandervelden added a comment - Assigning to myself
        Hide
        erikvandervelden added a comment -

        The problem is that for a newly created request, created via the factory and not
        via the B2BUAHelper, the bekey is not initialised.

        Added a line to the SipFactoryImpl.java that initialises the bekey of the
        request to the bekey of the SipApplicationSession.
        This is then later used to set the BeKey on the DS and finally on the DF.

        checkin details:

        Index: src/java/com/ericsson/ssa/sip/SipFactoryImpl.java
        ===================================================================
        RCS file: /cvs/sailfin/sip-stack/src/java/com/ericsson/ssa/sip/SipFactoryImpl.java,v
        retrieving revision 1.36
        diff -w -r1.36 SipFactoryImpl.java
        225a226
        > req.setBeKey(appSession.getBeKey());

        ***
        cvs ci -m "Issue number: 1675
        Reviewed by: bhavani

        Initialise bekey of newly created requests with the bekey of the SAS.

        Ran all the usual tests." -l "/Sailfin
        sip-stack/src/java/com/ericsson/ssa/sip/SipFactoryImpl.java"
        Checking in src/java/com/ericsson/ssa/sip/SipFactoryImpl.java;
        /cvs/sailfin/sip-stack/src/java/com/ericsson/ssa/sip/SipFactoryImpl.java,v
        <-- SipFactoryImpl.java
        new revision: 1.37; previous revision: 1.36
        done
        ok (took 0:06.455)
        ***

        Show
        erikvandervelden added a comment - The problem is that for a newly created request, created via the factory and not via the B2BUAHelper, the bekey is not initialised. Added a line to the SipFactoryImpl.java that initialises the bekey of the request to the bekey of the SipApplicationSession. This is then later used to set the BeKey on the DS and finally on the DF. checkin details: Index: src/java/com/ericsson/ssa/sip/SipFactoryImpl.java =================================================================== RCS file: /cvs/sailfin/sip-stack/src/java/com/ericsson/ssa/sip/SipFactoryImpl.java,v retrieving revision 1.36 diff -w -r1.36 SipFactoryImpl.java 225a226 > req.setBeKey(appSession.getBeKey()); *** cvs ci -m "Issue number: 1675 Reviewed by: bhavani Initialise bekey of newly created requests with the bekey of the SAS. Ran all the usual tests." -l "/Sailfin sip-stack/src/java/com/ericsson/ssa/sip/SipFactoryImpl.java" Checking in src/java/com/ericsson/ssa/sip/SipFactoryImpl.java; /cvs/sailfin/sip-stack/src/java/com/ericsson/ssa/sip/SipFactoryImpl.java,v <-- SipFactoryImpl.java new revision: 1.37; previous revision: 1.36 done ok (took 0:06.455) ***

          People

          • Assignee:
            erikvandervelden
            Reporter:
            varunrupela
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: