Some updates...

On 11/06/2013 11:09 PM, Jakub Scholz wrote:
1) Why is the page file created as executable?
-rwx------. 1 qpidd qpidd 110592000 Nov  6 19:07 my-test-queue-2

Fixed (QPID-5309)

[...]
5) It would be great to have a broker configuration option "--paging-dir"
to be able to specify the directory for the page files should be created.
Right now it seems to use the "--data-dir" parameter.

I've got a patch up for review for this one: https://reviews.apache.org/r/15353/

[...]
7) The purge QMF method doesn't seem to work. When I call it for the first
time, it seem to always purge only the messages from the loaded pages. When
I try to call it again I get the following error:
Connection closed by peer with amqp:internal-error: Queue
"my-test-queue-2": Dequeuing message with null persistence Id.
(/home/jakub/qpid/qpid-trunk/cpp/src/qpid/legacystore/MessageStoreImpl.cpp:1372)

(the queue configuration: durable=true, max_pages_loaded=1, page_factor=1).
In fact with the queue configured as above, this happens to receiver as
well - when reading the queue for the first time it gets only the messages
from the loaded page. When read for the second time, it creates the same
error.

I also tried to change the values of max_pages_loaded and page_factor ...
but that doesn't seem to change much. I can read/purge more messages before
seeing the error. But it still seems to occur regularly.

Fixed (QPID-5315).

8) When the queue is created as above (max_pages_loaded=1, page_factor=1),
but as non-durable, purging and reading still doesn't work properly. It
always reads / purges only the loaded pages. But of course I do not get the
error from the persistent message store. However, with increase
max_pages_loaded and/or page_factor (e.g. 10 and 10), the problem seems to
be resolved (for non-persistent queues).

It seems to me that when the pages are too small / only few pages are
loaded, the broker doesn't manage to load the pages quickly enough from
disk and that some kind of "starves" the receiver. Perhaps setting minimal
values for the page_factor / max_pages_loaded can help here?

Should be fixed by QPID-5312.

9) I know that the paged queues don't support LVQ functionality and
probably also message priorities. But it seems that paged queues don't
really support filters / selectors as well, or? The client using selector
always receives only the messages which match the selector and are in the
loaded pages. I guess it makes sense - since the broker doesn't keep
complete message headers, it cannot easily match
the selectors. But in that case, I would suggest to raise an error if a
consumer with filter/selector is created.

I believe this was the same issue as above (i.e. QPID-5312), though it could occur even with max_pages_loaded > 1.

10) When I try to send a message bigger than the page size, I get following
error:
Link detached by peer with amqp:precondition-failed: precondition-failed:
Message is larger than page size for queue backed by
/home/qpidd/qpid/0000/data/broker/my-test-queue-2
(/home/jakub/qpid/qpid-trunk/cpp/src/qpid/broker/PagedQueue.cpp:107)

Is it intentional to include the full path to the page file? I would
definitely prefer to show just the file name or a queue name.

Fixed (QPID-5314)

I haven't forgotten about (4) and (5) in your original mail, but they will take a bit more effort and thought. Could you raise JIRAs for those two?

Thanks again for the feedback!

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

Reply via email to