2 Replies Latest reply on Nov 17, 2006 4:48 PM by clebert.suconic

    NullPointerException in org.jboss.remoting.Lease.notifyClien

    rtm333

      We are using Messaging 1.0.1.GA with JBoss 4.0.5.GA. We are experiencing a serious problem that prevents further client connections to JMS. It can be reproduced by the following steps:

      1. Start JBoss (standard messaging configuration).
      2. Start a JMS topic subscriber.
      3. Shutdown JBoss (client ExceptionListener is triggered, no action, client remains running).
      4. Restart JBoss.
      5. Stop JMS topic subscriber.
      6. After about a minute JBoss throws a NullPointerException.
      7. No further JMS connections will be accepted by the server.


      This is the server side exception from step 6:

      Exception in thread "Timer-1"
      java.lang.NullPointerException
       at org.jboss.remoting.Lease.notifyClientLost(Lease.java:211)
       at org.jboss.remoting.Lease.access$300(Lease.java:39)
       at org.jboss.remoting.Lease$LeaseTimerTask.run(Lease.java:242)
       at java.util.TimerThread.mainLoop(Timer.java:512)
       at java.util.TimerThread.run(Timer.java:462)
      


      This is the exception that is thrown when a new JMS client tries to connect in step 7:

       [java] java.lang.RuntimeException: Error setting up client lease upon performing connect.
       [java] at org.jboss.remoting.Client.connect(Client.java:394)
       [java] at org.jboss.remoting.Client.connect(Client.java:380)
       [java] at org.jboss.jms.client.remoting.JMSRemotingConnection.start(JMSRemotingConnection.java:99)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.invoke(ClientConnectionFactoryDelegate.java:159)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.java)
       [java] at org.jboss.jms.client.container.StateCreationAspect.handleCreateConnectionDelegate(StateCreationAspect.java:81)
       [java] at org.jboss.aop.advice.org.jboss.jms.client.container.StateCreationAspect0.invoke(StateCreationAspect0.java)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.java)
       [java] at org.jboss.jms.client.container.ExceptionInterceptor.invoke(ExceptionInterceptor.java:69)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.java)
       [java] at org.jboss.jms.client.container.ClientLogInterceptor.invoke(ClientLogInterceptor.java:107)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.java)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.createConnectionDelegate(ClientConnectionFactoryDelegate.java)
       [java] at org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:202)
       [java] at org.jboss.jms.client.JBossConnectionFactory.createTopicConnection(JBossConnectionFactory.java:120)
       [java] at org.jboss.jms.client.JBossConnectionFactory.createTopicConnection(JBossConnectionFactory.java:115)
       [java] at testjms.JmsTestDriver.<init>(JmsTestDriver.java:31)
       [java] at testjms.TestTopicSubscriber.<init>(TestTopicSubscriber.java:5)
       [java] at testjms.TestTopicSubscriber.main(TestTopicSubscriber.java:35)
       [java] Caused by: java.lang.Exception: Error setting up client lease.
       [java] at org.jboss.remoting.MicroRemoteClientInvoker.establishLease(MicroRemoteClientInvoker.java:393)
       [java] at org.jboss.remoting.Client.setupClientLease(Client.java:481)
       [java] at org.jboss.remoting.Client.connect(Client.java:390)
       [java] ... 18 more
       [java] Caused by: java.lang.IllegalStateException: Timer already cancelled.
       [java] at java.util.Timer.sched(Timer.java:354)
       [java] at java.util.Timer.schedule(Timer.java:222)
       [java] at org.jboss.remoting.util.TimerUtil.schedule(TimerUtil.java:27)
       [java] at org.jboss.remoting.Lease.startLease(Lease.java:80)
       [java] at org.jboss.remoting.ServerInvoker.updateClientLease(ServerInvoker.java:1086)
       [java] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:946)
       [java] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:857)
       [java] at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:454)
       [java] at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:541)
       [java] at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:261)
       [java] at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:172)
       [java] at org.jboss.remoting.MicroRemoteClientInvoker.establishLease(MicroRemoteClientInvoker.java:362)
       [java] ... 20 more
       [java] 16:17:41,952 ERROR [ExceptionInterceptor] Cause of exception:
       [java] java.lang.Exception: Error setting up client lease.
       [java] at org.jboss.remoting.MicroRemoteClientInvoker.establishLease(MicroRemoteClientInvoker.java:393)
       [java] at org.jboss.remoting.Client.setupClientLease(Client.java:481)
       [java] at org.jboss.remoting.Client.connect(Client.java:390)
       [java] at org.jboss.remoting.Client.connect(Client.java:380)
       [java] at org.jboss.jms.client.remoting.JMSRemotingConnection.start(JMSRemotingConnection.java:99)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.invoke(ClientConnectionFactoryDelegate.java:159)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.java)
       [java] at org.jboss.jms.client.container.StateCreationAspect.handleCreateConnectionDelegate(StateCreationAspect.java:81)
       [java] at org.jboss.aop.advice.org.jboss.jms.client.container.StateCreationAspect0.invoke(StateCreationAspect0.java)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.java)
       [java] at org.jboss.jms.client.container.ExceptionInterceptor.invoke(ExceptionInterceptor.java:69)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.java)
       [java] at org.jboss.jms.client.container.ClientLogInterceptor.invoke(ClientLogInterceptor.java:107)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.java)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.createConnectionDelegate(ClientConnectionFactoryDelegate.java)
       [java] at org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:202)
       [java] at org.jboss.jms.client.JBossConnectionFactory.createTopicConnection(JBossConnectionFactory.java:120)
       [java] at org.jboss.jms.client.JBossConnectionFactory.createTopicConnection(JBossConnectionFactory.java:115)
       [java] at testjms.JmsTestDriver.<init>(JmsTestDriver.java:31)
       [java] at testjms.TestTopicSubscriber.<init>(TestTopicSubscriber.java:5)
       [java] at testjms.TestTopicSubscriber.main(TestTopicSubscriber.java:35)
       [java] Caused by: java.lang.IllegalStateException: Timer already cancelled.
       [java] at java.util.Timer.sched(Timer.java:354)
       [java] at java.util.Timer.schedule(Timer.java:222)
       [java] at org.jboss.remoting.util.TimerUtil.schedule(TimerUtil.java:27)
       [java] at org.jboss.remoting.Lease.startLease(Lease.java:80)
       [java] at org.jboss.remoting.ServerInvoker.updateClientLease(ServerInvoker.java:1086)
       [java] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:946)
       [java] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:857)
       [java] at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:454)
       [java] at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:541)
       [java] at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:261)
       [java] at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:172)
       [java] at org.jboss.remoting.MicroRemoteClientInvoker.establishLease(MicroRemoteClientInvoker.java:362)
       [java] javax.jms.IllegalStateException: Error setting up client lease upon performing connect.
       [java] at org.jboss.jms.client.container.ExceptionInterceptor.invoke(ExceptionInterceptor.java:91)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.java)
       [java] ... 20 more
       [java] 16:17:42,718 ERROR [ExceptionInterceptor] Cause of exception:
       [java] java.lang.IllegalStateException: Timer already cancelled.
       [java] at java.util.Timer.sched(Timer.java:354)
       [java] at java.util.Timer.schedule(Timer.java:222)
       [java] at org.jboss.remoting.util.TimerUtil.schedule(TimerUtil.java:27)
       [java] at org.jboss.remoting.Lease.startLease(Lease.java:80)
       [java] at org.jboss.remoting.ServerInvoker.updateClientLease(ServerInvoker.java:1086)
       [java] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:946)
       [java] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:857)
       [java] at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:454)
       [java] at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:541)
       [java] at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:261)
       [java] at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:172)
       [java] at org.jboss.remoting.MicroRemoteClientInvoker.establishLease(MicroRemoteClientInvoker.java:362)
       [java] at org.jboss.remoting.Client.setupClientLease(Client.java:481)
       [java] at org.jboss.remoting.Client.connect(Client.java:390)
       [java] at org.jboss.remoting.Client.connect(Client.java:380)
       [java] at org.jboss.jms.client.remoting.JMSRemotingConnection.start(JMSRemotingConnection.java:99)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.invoke(ClientConnectionFactoryDelegate.java:159)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.java)
       [java] at org.jboss.jms.client.container.StateCreationAspect.handleCreateConnectionDelegate(StateCreationAspect.java:81)
       [java] at org.jboss.aop.advice.org.jboss.jms.client.container.StateCreationAspect0.invoke(StateCreationAspect0.java)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.java)
       [java] at org.jboss.jms.client.container.ExceptionInterceptor.invoke(ExceptionInterceptor.java:69)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.java)
       [java] at org.jboss.jms.client.container.ClientLogInterceptor.invoke(ClientLogInterceptor.java:107)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.java)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.createConnectionDelegate(ClientConnectionFactoryDelegate.java)
       [java] at org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:202)
       [java] at org.jboss.jms.client.JBossConnectionFactory.createTopicConnection(JBossConnectionFactory.java:120)
       [java] at org.jboss.jms.client.JBossConnectionFactory.createTopicConnection(JBossConnectionFactory.java:115)
       [java] at testjms.JmsTestDriver.<init>(JmsTestDriver.java:31)
       [java] at testjms.TestTopicSubscriber.<init>(TestTopicSubscriber.java:5)
       [java] at testjms.TestTopicSubscriber.main(TestTopicSubscriber.java:35)
       [java] at org.jboss.jms.client.container.ClientLogInterceptor.invoke(ClientLogInterceptor.java:107)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N6840474864420126404.java)
       [java] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.createConnectionDelegate(ClientConnectionFactoryDelegate.java)
       [java] at org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:202)
       [java] at org.jboss.jms.client.JBossConnectionFactory.createTopicConnection(JBossConnectionFactory.java:120)
       [java] at org.jboss.jms.client.JBossConnectionFactory.createTopicConnection(JBossConnectionFactory.java:115)
       [java] at testjms.JmsTestDriver.<init>(JmsTestDriver.java:31)
       [java] at testjms.TestTopicSubscriber.<init>(TestTopicSubscriber.java:5)
       [java] at testjms.TestTopicSubscriber.main(TestTopicSubscriber.java:35)
      


      TRACE output for remoting on the server indicates that the previous client lease is re-established early during step 4. I suppose the server's lease registration gets disturbed when the client is finally terminated in step 5.

      This is a major show stopper for us, as any client kept running during a server restart and terminated subsequently will render the JMS server unusable.

      Any suggestions appreciated.