GitHub user shoukunhuai opened a pull request:
https://github.com/apache/activemq-artemis/pull/1742
ARTEMIS-1570 Flush appendExecutor before take journal snapshot
When live start replication, it must make sure there is
no pending write in message & bindings journal, or we may
lost journal records during initial replication.
So we need flush append executor after acquire StorageManager's
write lock, before Journal's write lock.
Also we set a 10 seconds timeout when flush, the same as
Journal::flushExecutor. If we failed to flush in 10 seconds,
we abort replication, backup will try again later.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/shoukunhuai/activemq-artemis
flush-journal-executor
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/activemq-artemis/pull/1742.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 #1742
----
commit 3d4c45925f2fe274579b262cedd63103ef29cb4e
Author: shoukun <shoukunhuai@...>
Date: 2017-12-27T02:23:33Z
Flush appendExecutor before take journal snapshot
When live start replication, it must make sure there is
no pending write in message & bindings journal, or we may
lost journal records during initial replication.
So we need flush append executor after acquire StorageManager's
write lock, before Journal's write lock.
Also we set a 10 seconds timeout when flush, the same as
Journal::flushExecutor. If we failed to flush in 10 seconds,
we abort replication, backup will try again later.
----
---