qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alan Conway <acon...@redhat.com>
Subject Re: QMF creating huge durable queue causes cluster desync
Date Mon, 30 Jan 2012 18:35:07 GMT
On 01/30/2012 07:04 AM, Pavel Moravec wrote:
> Hi all,
> it seems to me that sending QMF methods to create a queue over-passes "cluster error
checking mechanism" (if a sole node detects an error, it preventive leaves the cluster).
>
> Having a simple C++ client to create a huge durable queue:
>
>          Connection connection("amqp:tcp:127.0.0.1:5672");
>          connection.open();
>          Session session = connection.createSession();
>          Sender sender = session.createSender("qmf.default.direct/broker");
>          Address responseQueue("#reply-queue; {create:always, node:{x-declare:{auto-delete:true}}}");
>          Receiver receiver = session.createReceiver(responseQueue);
>
>          Message message;
>          Variant::Map content;
> 	Variant::Map OID;
> 	Variant::Map arguments;
> 	Variant::Map properties;
>
> 	properties["durable"] = "true";
>          properties["qpid.file_count"] = "3000";
>
> 	arguments["type"] = "queue";
> 	arguments["name"] = "HugeDurableQueue";
> 	arguments["properties"] = properties;
> 	
> 	OID["_object_name"] = "org.apache.qpid.broker:broker:amqp-broker";
>          content["_object_id"] = OID;
>          content["_method_name"] = "create";
>          content["_arguments"] = arguments;
> 	
>          encode(content, message);
> 	message.setReplyTo(responseQueue);
> 	message.setProperty("x-amqp-0-10.app-id", "qmf2");
> 	message.setProperty("qmf.opcode", "_method_request");
> 	message.setContentType("amqp/map");
>
>          sender.send(message, true);
>
> and running the client to a clustered pair of brokers creates a durable queue with 3000
files in its journal.
>
> However, if one of the brokers (let say node1) has insufficient free disk space, qpid
on node1 shall shut down due to the "cluster error checking mechanism". At least, that I see
when I create the queue via qpid-config or using proper address string and spout/drain.
>
> But running the above QMF method leaves the cluster in state where node1 has not have
the queue created while node2 has it created - a substantial cluster de-sync.
>
> Did I do something wrong or is it a bug?
>
> Thanks in advance for your answers.
>

I think that is a bug. Haven't looked at the code but I would guess the QMF 
errors are sent as QMF response messages, and not raised as AMQP errors, which 
is what the cluster code is looking out for.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


Mime
View raw message