You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2006/11/13 11:27:30 UTC

svn commit: r474234 - /jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/fs/local/HandleMonitor.java

Author: tripod
Date: Mon Nov 13 02:27:30 2006
New Revision: 474234

URL: http://svn.apache.org/viewvc?view=rev&rev=474234
Log:
JCR-628: OutOfMemory problem: HandleMonitor does not release closed input streams

Modified:
    jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/fs/local/HandleMonitor.java

Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/fs/local/HandleMonitor.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/fs/local/HandleMonitor.java?view=diff&rev=474234&r1=474233&r2=474234
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/fs/local/HandleMonitor.java (original)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/fs/local/HandleMonitor.java Mon Nov 13 02:27:30 2006
@@ -21,8 +21,8 @@
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
-import java.io.FileDescriptor;
 import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.io.InputStream;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -133,7 +133,7 @@
          * Creates a new handle for a file
          * @param file
          */
-        public Handle(File file) {
+        private Handle(File file) {
             this.file = file;
         }
 
@@ -142,7 +142,7 @@
          * @return
          * @throws FileNotFoundException
          */
-        public InputStream open() throws FileNotFoundException {
+        private InputStream open() throws FileNotFoundException {
             Handle.MonitoredInputStream in = new Handle.MonitoredInputStream(file);
             streams.add(in);
             return in;
@@ -152,7 +152,7 @@
          * Closes a stream
          * @param in
          */
-        public void close(MonitoredInputStream in) {
+        private void close(MonitoredInputStream in) {
             streams.remove(in);
             if (streams.isEmpty()) {
                 HandleMonitor.this.close(file);
@@ -162,14 +162,14 @@
         /**
          * Dumps this handle
          */
-        public void dump() {
+        private void dump() {
             dump(false);
         }
 
         /**
          * Dumps this handle
          */
-        public void dump(boolean detailed) {
+        private void dump(boolean detailed) {
             if (detailed) {
                 log.info("- " + file.getPath() + ", " + streams.size());
                 Iterator iter = streams.iterator();
@@ -191,52 +191,29 @@
             /**
              * throwable of the time, the stream was created
              */
-            private final Throwable throwable;
+            private final Throwable throwable = new Exception();
 
             /**
              * {@inheritDoc}
              */
-            public MonitoredInputStream(File file) throws FileNotFoundException {
+            private MonitoredInputStream(File file) throws FileNotFoundException {
                 super(file);
-                // register the throwable
-                try {
-                    throw new Exception();
-                } catch (Exception e) {
-                    throwable = e;
-                }
             }
 
             /**
-             * {@inheritDoc}
+             * dumps this stream
              */
-            public MonitoredInputStream(FileDescriptor fdObj) {
-                super(fdObj);
-                // register the throwable
-                try {
-                    throw new Exception();
-                } catch (Exception e) {
-                    throwable = e;
-                }
+            private void dump() {
+                log.info("- opened by : ", throwable);
             }
 
             /**
              * {@inheritDoc}
              */
-            public MonitoredInputStream(String name) throws FileNotFoundException {
-                super(name);
-                // register the throwable
-                try {
-                    throw new Exception();
-                } catch (Exception e) {
-                    throwable = e;
-                }
-            }
-
-            /**
-             * dumps this stream
-             */
-            public void dump() {
-                log.info("- opened by : ", throwable);
+            public void close() throws IOException {
+                // remove myself from the set
+                Handle.this.close(this);
+                super.close();
             }
 
         }