activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Petr Nídl (JIRA) <j...@apache.org>
Subject [jira] [Commented] (AMQ-1529) The blob of a blob-message will never be deleted
Date Tue, 13 Nov 2012 09:39:12 GMT

    [ https://issues.apache.org/jira/browse/AMQ-1529?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13496062#comment-13496062
] 

Petr Nídl commented on AMQ-1529:
--------------------------------

This issue is not fixed in 5.7.0.
org.apache.activemq.command.ActiveMQBlobMessage.deleteFile() method is the only (and I suppose
that advisable) way to delete the actual BLOB but it is never called from ActiveMQ classes
(not even for messages marked as "deletedByBroker").
For acknowledged messages you can use simple workaround and define custom acknowledge callback
that calls the delete method. But for expired messages I see no elegant way to force ActiveMQ
to delete the BLOB. Marco's patch could work but it is not used in 5.7.0 release.
Is there some other way that broker deletes BLOB messages or am I right that this feature
doesn't work?
                
> The blob of a blob-message will never be deleted
> ------------------------------------------------
>
>                 Key: AMQ-1529
>                 URL: https://issues.apache.org/jira/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
>            Assignee: Claus Ibsen
>             Fix For: 5.6.0
>
>         Attachments: ASF.LICENSE.NOT.GRANTED--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.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message