4 Replies Latest reply on Mar 5, 2013 8:15 PM by tobysaville

    Dead EPRs in jUDDI DB not removed

    tobysaville

      Hello,

       

      I struggled to have dead EPRs removed from my jUDDI db.

       

      i followed the forum's suggestions re adding the property org.jboss.soa.esb.failure.detect.removeDeadEPR=true to the core section of jbossesb-properties.xml.

       

      In the end i had to manually remove the entries with the following SQL.

       

      Any other suggestions as to why the EPRs arent being removed?

       

      Additional info: the "dead" EPRs are actually EPRs from servers in another environment that uses the same jUDDI DB. I execute locally and in a dev environment. Theoretically, the dev EPRs are live in the dev environment and really, should be accessible from my local machine (telnet to the dev-ip jndi-port works). So i am a little confused as to why traffic isnt routed to the dev EPR but its not my primary concern. Really, i want to know why these EPRs aren't removed with the correct config above.

       

      cheers

      toby

       

      SQL:

       

      DELETE FROM J3_BINDING_DESCR WHERE ENTITY_KEY = 'uddi:juddi.apache.org:7810ce1b-f961-4d17-945f-4af411627582';

      DELETE FROM J3_TMODEL_INSTANCE_INFO WHERE ENTITY_KEY = 'uddi:juddi.apache.org:7810ce1b-f961-4d17-945f-4af411627582';

      DELETE FROM J3_BINDING_TEMPLATE WHERE ENTITY_KEY = 'uddi:juddi.apache.org:7810ce1b-f961-4d17-945f-4af411627582'

      DELETE FROM J3_UDDI_ENTITY WHERE ENTITY_KEY = 'uddi:juddi.apache.org:7810ce1b-f961-4d17-945f-4af411627582';

       

       

      jbossesb-properties.xml snippet:

       

      <properties name="core">

        <property name="org.jboss.soa.esb.failure.detect.removeDeadEPR" value="true"/>

      </properties>

        • 1. Re: Dead EPRs in jUDDI DB not removed
          tcunning

          Toby,

           

          How are you invoking the service?    ServiceInvoker?      Listeners?

          • 2. Re: Dead EPRs in jUDDI DB not removed
            tobysaville

            Hi Tom,

             

            I have two services, service A is invoked as a webservice which in turn invokes service B via the ServiceInvoker. The issue occurs with both services.

             

            my jboss instance is SOA-P 5.3.0 with HornetQ and CXF WS. Services are listening on jms qs. The database is DB2. jdk is 1.6. os is Windows.

             

            More information: I have two esb jvms in my local test env, esb1 (has service A) and esb2 (has service B). esb1 has its juddi db configured to be inprocess hsql (db contents ignored during testing) and esb.juddi.client.xml points to esb2. esb2 is configured to use a juddi db. this db is the one that has endpoints from both my local env and my dev env (this is a side effect of the development process and not how we plan to operate but this dev / local db overlap has produced this interesting situation).  Both esb1 and 2 have removeDeadEPR=true (i assume its only required on esb2).

             

            when i submit the ws request, sometimes i see the following error:

             

            Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:esb_1_dev_host:1099#queue/serviceA/>

             

            And other times i see

             

            Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:esb_2_dev_host:1099#queue/serviceB/>

             

            In this second situation, there are still invalid EPRs for serviceA in the DB. I assume this means that the service invoker has used one of the valid esb_1_local_host EPRs.

             

            What behaviour should i expect to see when using removeDeadEPR=true? Should the invalid entries be removed from the db immediately after they are tried? Will execution continue successfully if there is another valid EPR entry for the same service, or will the request have to be resubmitted?

             

            cheers

            toby

            • 3. Re: Dead EPRs in jUDDI DB not removed
              tcunning

              Are you seeing Dead EPRs being retained, or are you seeing valid - but duplicate EPRs retained?

               

              Dead EPRs should be cleared.     Valid duplicates are a nastier case and stick around.      You may see the unresponsive EPR message under a lot of load due to timeout, even if the EPR is valid.

              • 4. Re: Dead EPRs in jUDDI DB not removed
                tobysaville

                Hi Tom,

                 

                i was seeing Dead EPRs being retained.

                 

                i did more testing and i was successfully seeing dead EPRs be removed when removeDeadEPR=true.

                 

                As the documentation stated, this turned out to be a bigger problem for us as services were timing out and being removed. so we decided to turn that off and use the manual SQL above where necessary.

                 

                thanks for your assistance.

                 

                cheers

                toby