This commit is contained in:
didfet
2015-06-05 18:45:25 +02:00
parent 56b932ee2e
commit a9b7c96178
3 changed files with 20 additions and 13 deletions

View File

@@ -63,20 +63,25 @@ public class FileReader extends Reader {
}
private int readFile(FileState state, int spaceLeftInSpool) {
int eventListSizeBefore = eventList.size();
File file = state.getFile();
long pointer = state.getPointer();
if(logger.isTraceEnabled()) {
logger.trace("File : " + file + " pointer : " + pointer);
logger.trace("Space left in spool : " + spaceLeftInSpool);
}
if(isCompressedFile(state)) {
pointer = file.length();
if(state.isDeleted() || state.getRandomAccessFile() == null) { // Don't try to read this file
pointerMap.put(file, pointer);
return 0;
} else {
pointer = readLines(state, spaceLeftInSpool);
int eventListSizeBefore = eventList.size();
if(logger.isTraceEnabled()) {
logger.trace("File : " + file + " pointer : " + pointer);
logger.trace("Space left in spool : " + spaceLeftInSpool);
}
if(isCompressedFile(state)) {
pointer = file.length();
} else {
pointer = readLines(state, spaceLeftInSpool);
}
pointerMap.put(file, pointer);
return eventList.size() - eventListSizeBefore; // Return number of events read
}
pointerMap.put(file, pointer);
return eventList.size() - eventListSizeBefore; // Return number of events read
}
private boolean isCompressedFile(FileState state) {

View File

@@ -64,7 +64,7 @@ public class FileState {
private void setFileFromDirectoryAndName() throws FileNotFoundException {
file = new File(directory + File.separator + fileName);
if(file.exists()) {
randomAccessFile = new RandomAccessFile(file, "r");
randomAccessFile = null;
lastModified = file.lastModified();
size = file.length();
} else {

View File

@@ -314,6 +314,9 @@ public class FileWatcher {
List<File> markedList = null;
for(File file : oldWatchMap.keySet()) {
FileState state = oldWatchMap.get(file);
if(state.getRandomAccessFile() == null) {
state.setDeleted();
}
if(state.isDeleted()) {
if(! file.exists()) {
if(markedList == null) {
@@ -328,8 +331,7 @@ public class FileWatcher {
}
if(markedList != null) {
for(File file : markedList) {
FileState state = oldWatchMap.remove(file);
oldWatchMap.remove(file);
logger.trace("\tFile : " + file + " removed");
}
}