Browse Source

Corrected memory leak issue #4.

didfet 10 năm trước cách đây
mục cha
commit
12c17e63b2

+ 1 - 1
pom.xml

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

+ 7 - 0
src/main/java/info/fetter/logstashforwarder/FileState.java

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

+ 3 - 6
src/main/java/info/fetter/logstashforwarder/FileWatcher.java

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