Uploaded image for project: 'ActiveMQ C++ Client'
  1. ActiveMQ C++ Client
  2. AMQCPP-543

message producer send never blocking when using producer flow control

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 3.8.2
    • 3.9.0
    • Openwire
    • None

    Description

      For testing,
      message producer is set to non-persisted mode, with the connection producer window size to 1MB. (the broker enables the producer flow control and set the memory limit to ~10MB with vm only storage)

      I notice that when i don't have any message consumer, the broker notify me that the memory limit is reached, that the producer will be throttled (as i would expect), however the producer never blocks on a send, as if the window size has no effect.

      while digging into ActiveMQProducerKernel.cpp,
      I notice the private member memoryUsage (auto_ptr) is never initialized. and there's a TODO in the code ?

      ActiveMQProducerKernel::ActiveMQProducerKernel(
      
      [...]
      
          // TODO - Check for need of MemoryUsage if there's a producer Windows size
          //        and the Protocol version is greater than 3.
      }
      

      I tried initializing the memoryUsage, and producer seem to block as expected on a send, when the limit is reached.

      ActiveMQProducerKernel::ActiveMQProducerKernel(
      
      [...]
      
          // TODO - Check for need of MemoryUsage if there's a producer Windows size
          //        and the Protocol version is greater than 3.
      
          if (session->getConnection()->getProducerWindowSize()) { 
                  this->memoryUsage.reset( new MemoryUsage(session->getConnection()->getProducerWindowSize()) );
          }
      }
      

      I'm not sure what is the proper fix,

      Attachments

        1. activemq-cpp_AMQCPP-543_v0.patch
          5 kB
          Christian Mamen

        Activity

          People

            tabish Timothy A. Bish
            cmamen Christian Mamen
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: