The blob of a blob-message will never be deleted
------------------------------------------------
Key: AMQ-1529
URL: https://issues.apache.org/activemq/browse/AMQ-1529
Project: ActiveMQ
Issue Type: Bug
Components: Message Store
Affects Versions: 5.0.0, 5.1.0, 5.2.0
Environment: Windows vista, java 6
Reporter: Marco Buss
Attachments: patch.txt
In a blob-message you can specify that the broker can delete the blob if the
message is delivered or outdated.
But actual onle the message with the reference to the blob is deletet, the
use-data in the repository not. The problem is the separation of the blob from
the message itself.
My idea is to extend the persistence store to check at delete if it is a blob
message and then delete the blob from the repository. I have done this in the
jdbc- and kaha message store (see patch).
JDBC message store:
- created a new table with all blob url`s which must be delete if the message
is deleted
| ID (primary Key) | MSGID (reference to ID in MESSAGE table) | URL |
- on message add check if it is a blob-message and if the broker must delete
the message add the information to the new table
- in cleanup a query on that table finds all urls with no existing reference in
the MESSAGE table (becaus the message is deleted) and then deletes this blobs
KAHA message store:
- TopicSubAck has a new attribute remotBlobUrl
- on message add check if it is a blob-message and if the broker must delete
the message add the url to the TopicSubAck
- on acknowledge at delete check if the attribute is set an if it is set delete
the blob
THINGS TO DO
- add a similar mechanism to the other message stores
- only the first delete is successfull, every other delete request ends in an
500 errorcode from the server
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.