One thing I'm more concerned about is whether this only relates to statistics or is more insidious.

Gordon Sim spoke of a bug whereby the maximum queue size was 4GB due to the use of a uint32. Apparently this has been resolved for Qpid 0.12 (though I've not tried this myself) but I'm interested about other uin32s around. For example it's possible to trigger an event if a queue threshold has been exceeded I'm hoping that the attribute used to hold that threshold got changes to a uin64 at the same time as the attribute used to hold the queue size otherwise the events are going to bear no relationship to real triggers for large queues.

I noticed the same thing as you Jakub and I got distracted before I got round to posting. Time for a jolly big grep of uin32 usage I think :-)

The Java client runtime has a fair few ints and Integers around too where longs would probably be better

Frase

Jakub Scholz wrote:
Hi,

The current schema (well, current ... Qpid 0.10 / MRG 2.0) for a queue
seems to handle byteDepth only as uint32:

qpid: schema queue
Object Class: Table Class:
org.apache.qpid.broker:queue:_data(bfd4d378-c6e6-efb6-f0d0-963252cedfaa)
    Element                Type          Access      Unit  Notes
Description
    
=======================================================================================================
    vhostRef               reference     ReadCreate        index
    name                   short-string  ReadCreate        index
    durable                boolean       ReadCreate
    autoDelete             boolean       ReadCreate
    exclusive              boolean       ReadCreate
    arguments              field-table   ReadOnly
Arguments supplied in queue.declare
    altExchange            reference     ReadOnly          optional
    msgTotalEnqueues       uint64
    msgTotalDequeues       uint64
    msgTxnEnqueues         uint64
    msgTxnDequeues         uint64
    msgPersistEnqueues     uint64
    msgPersistDequeues     uint64
    msgDepth               uint32
    byteDepth              uint32
    byteTotalEnqueues      uint64
    byteTotalDequeues      uint64
    byteTxnEnqueues        uint64
    byteTxnDequeues        uint64
    bytePersistEnqueues    uint64
    bytePersistDequeues    uint64
    consumerCount          uint32
    consumerCountHigh      uint32
    consumerCountLow       uint32
    bindingCount           uint32
    bindingCountHigh       uint32
    bindingCountLow        uint32
    unackedMessages        uint32
    unackedMessagesHigh    uint32
    unackedMessagesLow     uint32
    messageLatencySamples  delta-time
    messageLatencyMin      delta-time
    messageLatencyMax      delta-time
    messageLatencyAverage  delta-time
    flowStopped            boolean
    flowStoppedCount       uint32

Given the possibilities of Qpid, the uint32 seems to be a limitation.
I already got into situations, where uint32 is not sufficient and one
has to use the enqueue and dequeue statistics to calculate the actual
byte depth:

    msgDepth               30000155
    byteDepth              3421958148
    byteTotalEnqueues      24896794628
    byteTotalDequeues      0

I entered a JIRA QPID-3465 for this problem.

Regards
Jakub

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]




---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to