On Sun, Oct 26, 2008 at 5:55 PM, Edwin Fine
<rabbitmq-di...@usa.net> wrote:
> Should there be a handle_info clause for this in amqp_connection, or is it
> something I need to code for somehow?
This is a bug in the amqp_connection module, it should be handling
this message from the broker. I have started to fix this (19625
refers), but I'm going to have to think about the event propagation.
The current patch will at least handle the message.
HTH,
Ben
_______________________________________________
rabbitmq-discuss mailing list
rabbitmq...@lists.rabbitmq.com
http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
On Mon, Oct 27, 2008 at 2:06 PM, Edwin Fine
<rabbitmq-di...@usa.net> wrote:
> Do you have any general suggestions as to how to recover cleanly from
> multiple connections dying in an application because the broker went down?
> Ideally, I'd like to be able to recover gracefully and not have to crash
> processes unnecessarily.
When you say multiple connections in an application, are you referring
to multiple TCP connections or multiple AMQP channels?
Valentino started a thread on a related topic so he may be able to
chime in here: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2008-October/002105.html
I'm not quite sure whether the discussion was about how to supervise
client connections using an OTP tree or whether I had that discussion
with somebody else.....if it was, could that person please chip in
here?
Edwin,
On Mon, Oct 27, 2008 at 2:06 PM, Edwin Fine
<rabbitmq-di...@usa.net> wrote:
> Do you have any general suggestions as to how to recover cleanly fromWhen you say multiple connections in an application, are you referring
> multiple connections dying in an application because the broker went down?
> Ideally, I'd like to be able to recover gracefully and not have to crash
> processes unnecessarily.
to multiple TCP connections or multiple AMQP channels?
Valentino started a thread on a related topic so he may be able to
chime in here: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2008-October/002105.html
On Mon, Oct 27, 2008 at 3:08 PM, Edwin Fine
<rabbitmq-di...@usa.net> wrote:
> Both, actually. I have a connection pool of TCP connections to a rabbit
> broker, each connection of which supports multiple channels.
One thing that the Erlang client doesn't have which the other clients
do is a facility to register a shutdown handler with the AMQP
connection. Maybe we should look into doing this.
Edwin,
On Mon, Oct 27, 2008 at 3:08 PM, Edwin Fine
<rabbitmq-di...@usa.net> wrote:
> Both, actually. I have a connection pool of TCP connections to a rabbitOne thing that the Erlang client doesn't have which the other clients
> broker, each connection of which supports multiple channels.
do is a facility to register a shutdown handler with the AMQP
connection. Maybe we should look into doing this.
Ben
On Mon, Oct 27, 2008 at 3:33 PM, Edwin Fine
<rabbitmq-di...@usa.net> wrote:
> Music to my ears. I would really, really appreciate something like that.
Ok, I've roadmapped it for consideration in the 1.0 release of the
Erlang client (when a patch transpires 19630 will refer).
Valentino started a thread on a related topic so he may be able to
chime in here: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2008-October/002105.html
I'll take a look.
On Mon, Oct 27, 2008 at 11:01 PM, Valentino Volonghi <dial...@gmail.com> wrote:
> Speaking of which... Is there any way (donations, manual labor, slavery or
> such) that
> I can be of help to change the queue state to a new object that knows how to
> persist
> without using all the memory up?
In general, you can help by either contributing code yourself or by
financing the reprioritization of the roadmap.
Disk overflow or queue paging is on the mid term roadmap as something
we are going to do, but we still need to gather requirements.
Here are a few examples:
- When do you decide to page things to disk?
- Is it done on memory consumption or queue depth?
- Is this configurable per queue or across the broker?
- What are sensible defaults so that people who haven't even though
about paging don't get affected by overly-agressive defaults?
- When and how do you swap back in - is this automatic or manual?
- How do you decide when the low water mark has been reached after
having commenced the page-in? Do you resume flow control at this point?
- If you do page, are you interested in last image caching?
- Do you want to apply application level heuristics to selectively purge
overflowed queues?
- What role do TTLs play in this scenario?
- Furthermore, we do already have a fast message persister - it's just
that it's geared to write as quickly as possible, not read.
- Ask yourself, if we implement paging, is are we potentially reinventing
a wheel that the OS has already invented?
- And as always, what do you do when your SAN fills up?
One suggestion to kick things off is to begin a more structured
analysis of the whole problem on the wiki and start a dedicated
discussion thread around this. For example, one could start a document
highlighting the motivation and requirements and let interested
parties comment on this.
> From what I see by reading the code I think that the change would be
> isolated inside
> rabbit_amqqueue_process.erl and the exact variable is message_buffer. An
> object
> with a similar API but a different storage strategy could maybe be swapped
> in instead
> of the current queue.
True - the intention is to have a code base that is as short as
possible so that it can be easily understood and adapted.
Having said that, whilst it may be straight forward to do a hello
world overflow, the devil is in the detail of all of the moving parts
and different scenarios that you have to account for whilst maintaing
the clarity of the code base. And testing it of course.
HTH,
Ben
In general, you can help by either contributing code yourself or by
financing the reprioritization of the roadmap.
Disk overflow or queue paging is on the mid term roadmap as something
we are going to do, but we still need to gather requirements.
Here are a few examples:
- When do you decide to page things to disk?
- Is it done on memory consumption or queue depth?
- Is this configurable per queue or across the broker?
- What are sensible defaults so that people who haven't even though
about paging don't get affected by overly-agressive defaults?
- When and how do you swap back in - is this automatic or manual?
- How do you decide when the low water mark has been reached after
having commenced the page-in? Do you resume flow control at this point?
- If you do page, are you interested in last image caching?
- Do you want to apply application level heuristics to selectively purge
overflowed queues?
- What role do TTLs play in this scenario?
- Furthermore, we do already have a fast message persister - it's just
that it's geared to write as quickly as possible, not read.
- Ask yourself, if we implement paging, is are we potentially reinventing
a wheel that the OS has already invented?
- And as always, what do you do when your SAN fills up?
One suggestion to kick things off is to begin a more structured
analysis of the whole problem on the wiki and start a dedicated
discussion thread around this. For example, one could start a document
highlighting the motivation and requirements and let interested
parties comment on this.
Having said that, whilst it may be straight forward to do a hello
world overflow, the devil is in the detail of all of the moving parts
and different scenarios that you have to account for whilst maintaing
the clarity of the code base. And testing it of course.
One suggestion to kick things off is to begin a more structured
analysis of the whole problem on the wiki and start a dedicated
discussion thread around this. For example, one could start a document
highlighting the motivation and requirements and let interested
parties comment on this.
On Thu, Oct 30, 2008 at 7:22 PM, Valentino Volonghi <dial...@gmail.com> wrote:
> I've started doing this in the rabbitmq wiki, hopefully nobody will
> complain about it.
> Here's a link to the page: https://dev.rabbitmq.com/wiki/DiskOverflow
> Anyway should feel free to comment, edit, add new stuff, their usecases
> etc etc.
This is exactly what the wiki is for - to be able to transition
loosely structured discussions about new features into something
cohesive that you can use to implement the feature, as opposed to just
hacking it down.
I've just commented on this inline:
For the information of others, you can subscribe to the page to
receive update notifications.
And BTW, thanks for making the effort, this kind of thing helps us out a lot.
On Mon, Oct 27, 2008 at 4:30 PM, Ben Hood <0x6e...@gmail.com> wrote:
> On Mon, Oct 27, 2008 at 3:33 PM, Edwin Fine
> <rabbitmq-di...@usa.net> wrote:
>> Music to my ears. I would really, really appreciate something like that.
>
> Ok, I've roadmapped it for consideration in the 1.0 release of the
> Erlang client (when a patch transpires 19630 will refer).
I forgot to mention the other day that the handling for this has been
updated with the latest mainline.
It is known as 19625 and basically handles a forced connection more gracefully.
It still doesn't contain a shutdown handler, which will be in a
seperate branch (19630) when something gets done on this.
On Wed, Dec 10, 2008 at 12:30 PM, Edwin Fine
<rabbitmq-di...@usa.net> wrote:
> One more question: Without using transactions, is there a way to
> basic.publish using a call (and getting either a positive or negative
> response from the server), rather than just doing a "blind" cast? I think we
> talked about this but I can't fully recall the conclusion. IIRC, you said
> you would add a call for it?
Yep, I've added this in 19560 (which also has some descendents as well
e.g. 19334, 19625, 19373).
HTH,