Uploaded image for project: 'Application Server 7'
  1. Application Server 7
  2. AS7-3919

Invalid PageSize and blocking could lead to collateral issues

    XMLWordPrintable

Details

    • Bug
    • Resolution: Cannot Reproduce
    • Minor
    • 7.1.3.Final (EAP)
    • 7.1.0.Final
    • JMS
    • None
    • Compatibility/Configuration
    • Workaround Exists
    • Hide

      Configure the pagesize < max-size as it's been defined on the user manual

      Show
      Configure the pagesize < max-size as it's been defined on the user manual

    Description

      Page-size should be ignored on blocking. If the pageSize is configured beyond or the same as max-size, the constructor will throw an exception what could cause collateral damage since some state will be left unfilled.

      The user has initially described this issue.

      I have journal-file-size set to 10 Mb and max-size-bytes set 10 Mb, with a address policy of BLOCK. When my sendMailQueue reaches its limit a deadlock occurs. This is further emphasized in the JBossAS Forum reference.

      Here's a snippet from jstack after HornetQ crashes.

      Found one Java-level deadlock:
      =============================
      "Thread-878 (HornetQ-client-global-threads-1151364488)":
        waiting to lock monitor 0x0000000041df8640 (object 0x00000000ea17d6e0, a java.lang.Object),
        which is held by "Thread-873 (HornetQ-client-global-threads-1151364488)"
      "Thread-873 (HornetQ-client-global-threads-1151364488)":
        waiting to lock monitor 0x000000004107c8b8 (object 0x00000000ea17d6d0, a java.lang.Object),
        which is held by "Thread-878 (HornetQ-client-global-threads-1151364488)"
      
      Java stack information for the threads listed above:
      ===================================================
      "Thread-878 (HornetQ-client-global-threads-1151364488)":
      	at org.hornetq.core.client.impl.ClientSessionFactoryImpl.close(ClientSessionFactoryImpl.java:461)
      	- waiting to lock <0x00000000ea17d6e0> (a java.lang.Object)
      	- locked <0x00000000ea17d6d0> (a java.lang.Object)
      	at org.hornetq.core.client.impl.ServerLocatorImpl.doClose(ServerLocatorImpl.java:1294)
      	at org.hornetq.core.client.impl.ServerLocatorImpl.close(ServerLocatorImpl.java:1238)
      	at org.hornetq.jms.server.recovery.HornetQXAResourceWrapper.close(HornetQXAResourceWrapper.java:392)
      	at org.hornetq.jms.server.recovery.HornetQXAResourceWrapper.connectionFailed(HornetQXAResourceWrapper.java:232)
      	at org.hornetq.core.client.impl.ClientSessionFactoryImpl.callFailureListeners(ClientSessionFactoryImpl.java:905)
      	at org.hornetq.core.client.impl.ClientSessionFactoryImpl.failoverOrReconnect(ClientSessionFactoryImpl.java:690)
      	- locked <0x00000000f0222060> (a java.lang.Object)
      	at org.hornetq.core.client.impl.ClientSessionFactoryImpl.handleConnectionFailure(ClientSessionFactoryImpl.java:556)
      	at org.hornetq.core.client.impl.ClientSessionFactoryImpl.access$000(ClientSessionFactoryImpl.java:79)
      	at org.hornetq.core.client.impl.ClientSessionFactoryImpl$1.run(ClientSessionFactoryImpl.java:386)
      	at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:100)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      	at java.lang.Thread.run(Thread.java:662)
      "Thread-873 (HornetQ-client-global-threads-1151364488)":
      	at org.hornetq.core.client.impl.ClientSessionFactoryImpl.close(ClientSessionFactoryImpl.java:458)
      	- waiting to lock <0x00000000ea17d6d0> (a java.lang.Object)
      	at org.hornetq.jms.server.recovery.HornetQXAResourceWrapper.close(HornetQXAResourceWrapper.java:391)
      	at org.hornetq.jms.server.recovery.HornetQXAResourceWrapper.connectionFailed(HornetQXAResourceWrapper.java:232)
      	at org.hornetq.core.client.impl.ClientSessionFactoryImpl.callFailureListeners(ClientSessionFactoryImpl.java:905)
      	at org.hornetq.core.client.impl.ClientSessionFactoryImpl.failoverOrReconnect(ClientSessionFactoryImpl.java:690)
      	- locked <0x00000000ea17d6e0> (a java.lang.Object)
      	at org.hornetq.core.client.impl.ClientSessionFactoryImpl.handleConnectionFailure(ClientSessionFactoryImpl.java:556)
      	at org.hornetq.core.client.impl.ClientSessionFactoryImpl.access$000(ClientSessionFactoryImpl.java:79)
      	at org.hornetq.core.client.impl.ClientSessionFactoryImpl$1.run(ClientSessionFactoryImpl.java:386)
      	at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:100)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      	at java.lang.Thread.run(Thread.java:662)
      
      Found 1 deadlock.
      

      Attachments

        Activity

          People

            jmesnil1@redhat.com Jeff Mesnil
            oranheim Ove Ranheim (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: