Corrected memory leak issue #4.

This commit is contained in:
didfet
2015-03-24 20:47:14 +01:00
parent 055e7ae499
commit 12c17e63b2
3 changed files with 11 additions and 7 deletions

View File

@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>logstash-forwarder-java</groupId> <groupId>logstash-forwarder-java</groupId>
<artifactId>logstash-forwarder-java</artifactId> <artifactId>logstash-forwarder-java</artifactId>
<version>0.1.3</version> <version>0.1.4-SNAPSHOT</version>
<name>logstash-forwarder-java</name> <name>logstash-forwarder-java</name>
<description>Java version of logstash forwarder</description> <description>Java version of logstash forwarder</description>
<url>https://github.com/didfet/logstash-forwarder-java</url> <url>https://github.com/didfet/logstash-forwarder-java</url>

View File

@@ -157,6 +157,13 @@ public class FileState {
public void setOldFileState(FileState oldFileState) { public void setOldFileState(FileState oldFileState) {
this.oldFileState = oldFileState; this.oldFileState = oldFileState;
} }
public void deleteOldFileState() {
try {
oldFileState.getRandomAccessFile().close();
oldFileState = null;
} catch(Exception e) {}
}
public Event getFields() { public Event getFields() {
return fields; return fields;

View File

@@ -170,20 +170,17 @@ public class FileWatcher {
} }
logger.trace("Refreshing file state"); logger.trace("Refreshing file state");
for(File file : newWatchMap.keySet()) { for(FileState state : newWatchMap.values()) {
if(logger.isTraceEnabled()) { if(logger.isTraceEnabled()) {
logger.trace("Refreshing file : " + file.getCanonicalPath()); logger.trace("Refreshing file : " + state.getFile());
} }
FileState state = newWatchMap.get(file);
FileState oldState = state.getOldFileState(); FileState oldState = state.getOldFileState();
if(oldState == null) { if(oldState == null) {
logger.trace("File has been truncated or created, not retrieving pointer"); logger.trace("File has been truncated or created, not retrieving pointer");
} else { } else {
logger.trace("File has not been truncated or created, retrieving pointer"); logger.trace("File has not been truncated or created, retrieving pointer");
state.setPointer(oldState.getPointer()); state.setPointer(oldState.getPointer());
try { state.deleteOldFileState();
oldState.getRandomAccessFile().close();
} catch(Exception e) {}
} }
} }