There looks to be a slight concurrency problem in ReplicationQueue in the flush method (in HEAD).
cache.callRemoteMethods(null, // send to all live nodes in the cluster
TreeCache.replicateAllMethod, new Object[]{l}, false, true, 5000);
elements.clear();
public void flush() {
List l;
synchronized(elements) {
if(log.isInfoEnabled())
log.info("flush(): flushing repl queue (num elements=" + elements.size() + ")");
l=(List)elements.clone();
elements.clear();
}
try {
cache.callRemoteMethods(null, // send to all live nodes in the cluster
TreeCache.replicateAllMethod, new Object[]{l}, false, true, 5000);
}
catch(Throwable t) {
log.error("failed replicating " + l.size() + " elements in replication queue", t);
}
}
Thanks Jeff,
done in CVS head.
Happy holidays,
Bela