5 Replies Latest reply on May 31, 2009 3:13 AM by gaohoward

    deathless consumer prooblem

    bodrin

      JBM.1.4.0.SP3 \ jboss-4.2.2.GA

      I have a standalone JBM client which has a consumer on queue. Sometimes if I kill/stop (not sure which one or both) its JVM process and start it again I see into the JMX console:
      ConsumerCount=2 (it should be 1)
      MessageCount=DeliveringCount=2 (for example)

      When I enter this state no messages come for processing in my consumer and I have to restart JBM.

      Seems like a bug for me, because if the process that was setup a consumer on a queue is death (no matter how it dies - closing/not closing relevant JMS objects) the consumer on the JBM server should be removed.
      Unfortunatelly I dont't know how to reproduce it..

      Can you help, please?

        • 1. Re: deathless consumer prooblem
          gaohoward

          If your client dies abruptly the consumer count will be updated at the server side after the connection timeout. Check for the leaseTimeout in your remoting config. If it is 10 second, you can wait for about 10 second or more to see the updated consumer count.

          If possible, can you provide the server.log when no messages come for processing happens?

          • 2. Re: deathless consumer prooblem
            bodrin

            Not sure which one is, but both are equal:
            leasePeriod=10000
            clientLeasePeriod=10000

            from CONFIG\deploy\jboss-messaging.sar\remoting-bisocket-service.xml

            ...
             <service-config name="jboss.messaging:service=Connector,transport=bisocket"
             delegateClass="org.jboss.services.binding.AttributeMappingDelegate">
             <delegate-config>
             <attribute name="Configuration"><![CDATA[
             <config>
             <invoker transport="bisocket">
             <attribute name="marshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
             <attribute name="unmarshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
             <attribute name="dataType" isParam="true">jms</attribute>
             <attribute name="socket.check_connection" isParam="true">false</attribute>
             <attribute name="timeout" isParam="true">0</attribute>
             <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
             <attribute name="serverBindPort">4557</attribute>
             <attribute name="leasePeriod">10000</attribute>
             <attribute name="clientSocketClass" isParam="true">org.jboss.jms.client.remoting.ClientSocketWrapper</attribute>
             <attribute name="serverSocketClass">org.jboss.jms.server.remoting.ServerSocketWrapper</attribute>
             <attribute name="numberOfCallRetries" isParam="true">1</attribute>
            <attribute name="pingFrequency" isParam="true">214748364</attribute>
            <attribute name="pingWindowFactor" isParam="true">10</attribute>
            <attribute name="onewayThreadPool">org.jboss.jms.server.remoting.DirectThreadPool</attribute>
             <!-- End immutable parameters -->
            
             <!-- Periodicity of client pings. Server window by default is twice this figure -->
             <attribute name="clientLeasePeriod" isParam="true">10000</attribute>
            ...
            
            It has happened today, but unfortunatelly the server.log is cleared on restart and the desired logs are no there..
            
            I'll provide it if it happens again.
            
            Thanks!
            


            • 3. Re: deathless consumer prooblem
              radimchatkalahari

              I'm facing exactly the same problem.
              I have 5 topics and 6 queues in my
              JBossAS 4.2.3, JBoss Messaging 1.4.2SP1, JBoss Remoting 2.2.2SP11
              and my remoting-bisocket-service.xml is configured by default from jbm1.4.2SP1
              I have tried a lot of combinations of JBossAS, JBM, JBREM but with no success.
              This issue appears irregularly with after a couple of day/weeks of jboss run.
              The only solution is then restarting jboss completely. Restarting the queue or consumer (other application using jms) does not solve the problem.


              • 4. Re: deathless consumer prooblem
                bodrin

                hi,
                I just made a mysql dump and copied also the server log when the thing happened.
                I do know some of the queues on which the deathless consumer was listenening to if you need this: profile_subscriptions_3, profiles_3,...

                I have uploaded the server log at
                http://94.26.60.24/~test/temp/dump.29.05.2009/server.zip
                and the musql dump on
                http://94.26.60.24/~test/temp/dump.29.05.2009/jbm.db.gzip

                I see a strange exception in the log


                2009-05-29 15:13:15,232 ERROR [org.jboss.remoting.ConnectionNotifier] Error notifying connection listeners of lost client connection.
                java.lang.NullPointerException
                at org.jboss.remoting.ConnectionNotifier.connectionLost(ConnectionNotifier.java:50)
                at org.jboss.remoting.Lease.notifyClientLost(Lease.java:211)
                at org.jboss.remoting.Lease.access$500(Lease.java:39)
                at org.jboss.remoting.Lease$LeaseTimerTask.run(Lease.java:249)
                at java.util.TimerThread.mainLoop(Timer.java:512)
                at java.util.TimerThread.run(Timer.java:462)


                Hope this will help to investigate the problem.
                Thanks!

                • 5. Re: deathless consumer prooblem
                  gaohoward

                  Hi,

                  I'm thinking your problem may relate to this JIRA:

                  https://jira.jboss.org/jira/browse/JBMESSAGING-1456

                  it's been fixed in 1.4.4.GA/remoting 2.2.3.

                  would you like to give it a try?

                  Thanks.