LogFile logFile;
LogFileNode logFileState = getLogFileWithId(location.getLogFileId());
if( logFileState !=null ) {
// There can be no record at the append offset.
if (logFileState.getAppendOffset() == location.getLogFileOffset()) {
throw new InvalidRecordLocationException("No record at (" + location
+ ") found. Location past end of logged data.");
}
logFile = logFileState.getLogFile();
} else {
if( archiveDirectory==null ) {
throw new InvalidRecordLocationException("Log file: " + location.getLogFileId() + " is not active.");
} else {
logFile = getArchivedLogFile(location.getLogFileId());
}
}
// Is there a record header at the seeked location?
try {
Record header = new Record();
logFile.readRecordHeader(location.getLogFileOffset(), header);
return new RecordInfo(location, header, logFileState, logFile);
} catch (IOException e) {
throw new InvalidRecordLocationException("No record at (" + location + ") found.");
}
}