// add blocking consumer to slave, this will block on the first non-empty sync()
BlockingConsumer consumer = new BlockingConsumer();
slave.getJournal().register(consumer);
// add first entry
LockEvent event = new LockEvent(NodeId.randomId(), true, "admin");
channel.create(event.getNodeId(), event.isDeep(), event.getUserId()).ended(true);
// start a manual sync on the slave and ...
Thread syncOnce = new Thread(new Runnable() {
public void run() {
try {
slave.sync();
} catch (ClusterException e) {
/* ignore */
}
}
});
syncOnce.start();
// ... wait until it blocks
consumer.waitUntilBlocked();
// add second entry
event = new LockEvent(NodeId.randomId(), true, "admin");
channel.create(event.getNodeId(), event.isDeep(), event.getUserId()).ended(true);
// now unblock slave
consumer.unblock();
// wait for the sync to finish