[
https://issues.apache.org/jira/browse/ARTEMIS-1220?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16063121#comment-16063121
]
ASF GitHub Bot commented on ARTEMIS-1220:
-----------------------------------------
Github user clebertsuconic commented on a diff in the pull request:
https://github.com/apache/activemq-artemis/pull/1351#discussion_r124018115
--- 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 --
hmmm.. nice one!
> 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)