You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Kim van der Riet (JIRA)" <ji...@apache.org> on 2017/10/18 13:42:00 UTC

[jira] [Commented] (QPID-7975) [linearstore] Sending durable messages using AMQP 1.0 and 0-10 concurrently causes high latency for 1.0 messages

    [ 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: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org