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

ASF subversion and git services commented on ARTEMIS-1221:
----------------------------------------------------------

Commit d50f577cd50df37634f592db65200861fe3e13d3 in activemq-artemis's branch 
refs/heads/master from [~gaohoward]
[ https://git-wip-us.apache.org/repos/asf?p=activemq-artemis.git;h=d50f577 ]

ARTEMIS-1221 Duplicated ID causes LargeMessage lost at backup

When a large message is replicated to backup, a pendingID is generated
when the large message is finished. This pendingID is generated by a
BatchingIDGenerator at backup.

It is possible that a pendingID generated at backup may be a duplicate
to an ID generated at live server.

This can cause a problem when a large message with a messageID that is
the same as another largemessage's pendingID is replicated and stored
in the backup's journal, and then a deleteRecord for the pendingID
is appended. If backup becomes live and loads the journal, it will
drop the large message add record because there is a deleteRecord of
the same ID (even though it is a pendingID of another message).
As a result the expecting client will never get this large message.

So in summary, the root cause is that the pendingIDs for large
messages are generated at backup while backup is not alive.

The solution to this is that instead of the backup generating
the pendingID, we make them all be generated in advance
at live server and let them replicated to backup whereever needed.
The ID generater at backup only works when backup becomes live
(when it is properly initialized from journal).


> Duplicated ID causes LargeMessage lost at backup
> ------------------------------------------------
>
>                 Key: ARTEMIS-1221
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-1221
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 1.5.5, 2.1.0
>            Reporter: Howard Gao
>            Assignee: Howard Gao
>             Fix For: 1.5.6, 2.2.0
>
>
> When a large message is replicated to backup, a pendingID is generated when 
> the large message is finished. This pendingID is generated by a 
> BatchingIDGenerator at backup.
> It is possible that a pendingID generated at backup may be a duplicate to an 
> ID generated at live server. 
> This can cause a problem when a large message with a messageID that is the 
> same as another largemessage's pendingID is replicated and stored in the 
> backup's journal, and then a deleteRecord for the pendingID is appended.
> If backup becomes live and loads the journal, it will drop the large message 
> add record because there is a deleteRecord of the same ID (even though it is 
> a pendingID of another message). As a result the expecting client will never 
> get this large message.
>  



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to