[ 
https://issues.apache.org/jira/browse/QPID-7975?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16209346#comment-16209346
 ] 

Kim van der Riet commented on QPID-7975:
----------------------------------------

Pavel's reproducer:

Smaller reproducer using just one queue:

1) In one terminal, run below cmds in a script:

{noformat}
rm -rf /var/lib/qpidd/*
killall qpid-send qpid-receive
service qpidd restart

# create durable queue
qpid-receive -a "DurablePerf; {create:always, node:{type:queue, durable:true}}"

# have 1.0 consumer forever
qpid-receive -a DurablePerf -m 1000000 --print-content=no --print-headers=no 
--connection-options "{protocol:'amqp1.0'}" --capacity=1 -f &

# repeatedly send a 1.0 message and print real time spent there
while true; do
        (time qpid-send -a DurablePerf --capacity=1 --durable=yes -m 1 
--content-size=$((RANDOM%500+1000)) --connection-options 
"{protocol:'amqp1.0'}") 2>&1 | grep real
        sleep 1
done &
{noformat}


2) In another terminal, send some 0-10 messages time to time to the same queue:

{noformat}
while true; do
    qpid-send -a DurablePerf --capacity=1 --durable=yes -m 10 
--content-size=$((RANDOM%1500))
    sleep 1
    ps aux | grep -v grep | grep qpid-send
    sleep 1
    ps aux | grep -v grep | grep qpid-send
    date
done
{noformat}

3) check 1st terminal output - "real" time (how long does it take each 
qpid-send to send a message and terminate) will be below 0.1s. But after a race 
condition is hit (concurrent sending 0-10 and 1.0 message?), the times start to 
be above 1s forever.

Since that time, 2nd terminal will show:

{noformat}
Tue Oct 17 12:17:30 CEST 2017
root     21615  0.0  0.0 202836  5636 pts/1    Sl   12:17   0:00 qpid-send -a 
DurablePerf --capacity=1 --durable=yes -m 1 --content-size=1206 
--connection-options {protocol:'amqp1.0'}
root     21615  0.0  0.0 202836  5636 pts/1    Sl   12:17   0:00 qpid-send -a 
DurablePerf --capacity=1 --durable=yes -m 1 --content-size=1206 
--connection-options {protocol:'amqp1.0'}
Tue Oct 17 12:17:33 CEST 2017
root     21632  0.0  0.0 202836  5640 pts/1    Sl   12:17   0:00 qpid-send -a 
DurablePerf --capacity=1 --durable=yes -m 1 --content-size=1327 
--connection-options {protocol:'amqp1.0'}
root     21632  0.0  0.0 202836  5640 pts/1    Sl   12:17   0:00 qpid-send -a 
DurablePerf --capacity=1 --durable=yes -m 1 --content-size=1327 
--connection-options {protocol:'amqp1.0'}
Tue Oct 17 12:17:35 CEST 2017
{noformat}

i.e. same qpid-send (compare PID) after 1 second sleep.


> [linearstore] Sending durable messages using AMQP 1.0 and 0-10 concurrently 
> causes high latency for 1.0 messages
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: QPID-7975
>                 URL: https://issues.apache.org/jira/browse/QPID-7975
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Broker
>            Reporter: Kim van der Riet
>
> When durable messages are sent to the same queue using both AMQP 1.0 and 0-10 
> concurrently, a condition is triggered where the store no longer flushes the 
> 1.0 messages. When this condition is triggered, the 1.0 messages are flushed 
> by the 0-10 activity on the queue, or if there is none, then the messages are 
> never flushed.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to