*/
@Override
public void processRequest(Request rq) {
LSNRange request = (LSNRange) rq.getRequestMessage();
final LSN start = new LSN(request.getStart().getViewId(),
request.getStart().getSequenceNo());
final LSN end = new LSN(request.getEnd().getViewId(),
request.getEnd().getSequenceNo());
LogEntries.Builder result = LogEntries.newBuilder();
ReusableBuffer resultPayLoad = BufferPool.allocate(0);
Logging.logMessage(Logging.LEVEL_INFO, this, "REQUEST received " +
"(start: %s, end: %s) from %s", start.toString(),
end.toString(), rq.getSenderAddress().toString());
// enhancement to prevent slaves from loading the DB from the master unnecessarily
if (start.equals(lastOnView.get())) {
Logging.logMessage(Logging.LEVEL_INFO, this,
"REQUEST answer is empty (there has been a failover only).");
rq.sendSuccess(result.build());
return;
}
final LSN firstEntry = new LSN(start.getViewId(),
start.getSequenceNo() + 1L);
assert (firstEntry.compareTo(end) < 0) :
"At least one LogEntry has to be requested!";
DiskLogIterator it = null;
LogEntry le = null;
synchronized (babuInterface.getCheckpointerLock()) {