Uploaded image for project: 'Spring AMQP'
  1. Spring AMQP
  2. AMQP-708

AutorecoveringConnection.consumers leaked when killed a node of rabbitmq cluster

    XMLWordPrintable

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Complete
    • 1.7 GA
    • 1.7.1, 1.6.8, 2.0 M3
    • RabbitMQ
    • spring-amqp-1.7.0.RELEASE
      spring-rabbit-1.7.0.RELEASE
      amqp-client-4.0.2
      rabbitmq_server-3.6.6_2

    Description

      Process:
      1. Start rabbitmq cluster: node1, node2
      2. Kill node1(the spring amqp client is connected to this node)
      3. org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer#restart was invoked, and the consumer was deleted from the SimpleMessageListenerContainer.
      4. org.springframework.amqp.rabbit.connection.CachingConnectionFactory.CachedChannelInvocationHandler#physicalClose:1040 was invoked.
      BUT the channel.isOpen() is false(as the pictures), so the com.rabbitmq.client.impl.recovery.AutorecoveringChannel#close() was NOT called.
      5. com.rabbitmq.client.impl.recovery.AutorecoveringConnection#recoverConsumers was invoked

      After the process above, the dead consumer was re-actived without the SimpleMessageListenerContainer.
      Message was send to this consumer, but SimpleMessageListenerContainer can't consume it. So there was a message keeping in unacked until the client was restarted.

      Attachments

        Activity

          People

            grussell Gary Russell
            chrootweili WEI
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: