[
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]