[
https://issues.apache.org/jira/browse/ARTEMIS-1353?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16129311#comment-16129311
]
ASF GitHub Bot commented on ARTEMIS-1353:
-----------------------------------------
GitHub user jbertram opened a pull request:
https://github.com/apache/activemq-artemis/pull/1466
ARTEMIS-1353 ensure replication packet order
Incorrect ordering of replication packets may happen because of
useExecutor parameter in the sendReplicatePacket method.
ReplicationStartSyncMessage packets are sent as first, but they are sent
with useExecutor=true. Although ReplicationSyncFileMessage packets are
sent after ReplicationStartSyncMessage packets, they are sent with
useExecutor=false. So sending of ReplicationStartSyncMessage packets is
scheduled to executor and there is no guarantee when the task will be
executed, whereas ReplicationStartSyncMessage packets are sent
immediately.
The solution is to wait for an ack for ReplicationStartSyncMessages.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/jbertram/activemq-artemis ARTEMIS-1353
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/activemq-artemis/pull/1466.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #1466
----
commit a9f3dcfb10314763d5feeff6d56de9694cc0ede1
Author: Justin Bertram <[email protected]>
Date: 2017-08-16T17:08:31Z
ARTEMIS-1353 ensure replication packet order
Incorrect ordering of replication packets may happen because of
useExecutor parameter in the sendReplicatePacket method.
ReplicationStartSyncMessage packets are sent as first, but they are sent
with useExecutor=true. Although ReplicationSyncFileMessage packets are
sent after ReplicationStartSyncMessage packets, they are sent with
useExecutor=false. So sending of ReplicationStartSyncMessage packets is
scheduled to executor and there is no guarantee when the task will be
executed, whereas ReplicationStartSyncMessage packets are sent
immediately.
The solution is to wait for an ack for ReplicationStartSyncMessages.
----
> Replication packets can get out of order
> ----------------------------------------
>
> Key: ARTEMIS-1353
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1353
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Affects Versions: 2.2.0
> Reporter: Justin Bertram
> Assignee: Justin Bertram
> Fix For: 2.3.0
>
>
> {{ReplicationEndpoint}} my throw a {{NullPointerException}} during initial
> synchronization.
> The issue is caused by incorrect ordering of replication packets. The NPE
> arises when {{ReplicationSyncFileMessage}} packets are sent before
> {{ReplicationStartSyncMessage}} packets.
> Incorrect ordering of replication packets may happen because of
> {{useExecutor}} parameter in the {{sendReplicatePacket}} method.
> {{ReplicationStartSyncMessage}} packets are sent as first, but they are sent
> with {{useExecutor=true}}. Although {{ReplicationSyncFileMessage}} packets
> are sent after {{ReplicationStartSyncMessage}} packets, they are sent with
> {{useExecutor=false}}. So sending of {{ReplicationStartSyncMessage}} packets
> is scheduled to executor and there is no guarantee when the task will be
> executed, whereas {{ReplicationStartSyncMessage}} packets are sent
> immediately.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)