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

ASF GitHub Bot commented on ARTEMIS-1220:
-----------------------------------------

Github user gaohoward commented on a diff in the pull request:

    https://github.com/apache/activemq-artemis/pull/1351#discussion_r124035898
  
    --- Diff: 
artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/LargeServerMessageImpl.java
 ---
    @@ -282,7 +282,7 @@ public Message copy(final long newID) {
                 byte[] bufferToWrite;
                 if (bytesRead <= 0) {
                    break;
    -            } else if (bytesRead == bufferBytes.length) {
    +            } else if (bytesRead == bufferBytes.length && 
!this.storageManager.isReplicated()) {
    --- End diff --
    
    thanks. :)


> Diverted LargeMessage file corrupted during replication
> -------------------------------------------------------
>
>                 Key: ARTEMIS-1220
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-1220
>             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 being diverted, a new copy of the original message is 
> created and replicated (if there is a backup) to the backup. 
> In LargeServerMessageImpl.copy(long) it reuse a byte array to copy message 
> body. It is possible that one block of date is read into the byte array 
> before the previous read has been replicated, causing the replicated bytes to 
> corrupt.
> If we make a copy of the byte array before replication, the corruption of 
> data will be avoided.



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

Reply via email to