changeset 20:51fb566e27dc

Close file descriptors when done with them
author Omair Majid <omajid@redhat.com>
date Tue, 13 Dec 2011 11:56:52 -0500
parents cb8e7d5966f9
children f495dd894e0c
files src/com/redhat/thermostat/backend/system/CpuStatBuilder.java src/com/redhat/thermostat/backend/system/DistributionIdentity.java src/com/redhat/thermostat/backend/system/HostInfoBuilder.java src/com/redhat/thermostat/backend/system/MemoryStatBuilder.java
diffstat 4 files changed, 42 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/com/redhat/thermostat/backend/system/CpuStatBuilder.java	Tue Dec 13 11:56:12 2011 -0500
+++ b/src/com/redhat/thermostat/backend/system/CpuStatBuilder.java	Tue Dec 13 11:56:52 2011 -0500
@@ -23,9 +23,9 @@
         double load5 = CpuStat.INVALID_LOAD;
         double load10 = CpuStat.INVALID_LOAD;
         double load15 = CpuStat.INVALID_LOAD;
-
+        BufferedReader reader = null;
         try {
-            BufferedReader reader = new BufferedReader(new FileReader(LOAD_FILE));
+            reader = new BufferedReader(new FileReader(LOAD_FILE));
             String[] loadAvgParts = reader.readLine().split(" +");
             if (loadAvgParts.length >= 3) {
                 load5 = Double.valueOf(loadAvgParts[0]);
@@ -36,6 +36,14 @@
             logger.log(Level.WARNING, "error extracting load from " + LOAD_FILE);
         } catch (IOException e) {
             logger.log(Level.WARNING, "unable to read " + LOAD_FILE);
+        } finally {
+            if (reader != null) {
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                    logger.log(Level.WARNING, "unable to close " + LOAD_FILE);
+                }
+            }
         }
 
         return new CpuStat(timestamp, load5, load10, load15);
--- a/src/com/redhat/thermostat/backend/system/DistributionIdentity.java	Tue Dec 13 11:56:12 2011 -0500
+++ b/src/com/redhat/thermostat/backend/system/DistributionIdentity.java	Tue Dec 13 11:56:52 2011 -0500
@@ -25,10 +25,11 @@
     public DistributionIdentity() {
         String tempName = "Unknown Distribution";
         String tempVersion = "Unknown";
+        BufferedReader reader = null;
         try {
             Process lsbProc = Runtime.getRuntime().exec(new String[] { "lsb_release", "-a" });
             InputStream progOutput = lsbProc.getInputStream();
-            BufferedReader reader = new BufferedReader(new InputStreamReader(progOutput));
+            reader = new BufferedReader(new InputStreamReader(progOutput));
             String line;
             while ((line = reader.readLine()) != null) {
                 int sepLocation = line.indexOf(":");
@@ -43,6 +44,14 @@
             }
         } catch (IOException e) {
             logger.log(Level.WARNING, "unable to identify distribution");
+        } finally {
+            if (reader != null) {
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                    logger.log(Level.WARNING, "unable to close a child's output stream");
+                }
+            }
         }
         name = tempName;
         version = tempVersion;
--- a/src/com/redhat/thermostat/backend/system/HostInfoBuilder.java	Tue Dec 13 11:56:12 2011 -0500
+++ b/src/com/redhat/thermostat/backend/system/HostInfoBuilder.java	Tue Dec 13 11:56:52 2011 -0500
@@ -50,8 +50,9 @@
         logger.log(Level.FINEST, "cpuCount: " + cpuCount);
 
         long totalMemory = -1;
+        BufferedReader reader = null;
         try {
-            BufferedReader reader = new BufferedReader(new FileReader("/proc/meminfo"));
+            reader = new BufferedReader(new FileReader(MEMINFO_FILE));
             String[] memTotalParts = reader.readLine().split(" +");
             long data = Long.valueOf(memTotalParts[1]);
             String units = memTotalParts[2];
@@ -59,7 +60,15 @@
                 totalMemory = data * Constants.KILOBYTES_TO_BYTES;
             }
         } catch (IOException e) {
-            logger.log(Level.WARNING, "unable to read /proc/meminfo");
+            logger.log(Level.WARNING, "unable to read " + MEMINFO_FILE);
+        } finally {
+            if (reader != null) {
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                    logger.log(Level.WARNING, "unable to close " + MEMINFO_FILE);
+                }
+            }
         }
         logger.log(Level.FINEST, "totalMemory: " + totalMemory + " bytes");
 
--- a/src/com/redhat/thermostat/backend/system/MemoryStatBuilder.java	Tue Dec 13 11:56:12 2011 -0500
+++ b/src/com/redhat/thermostat/backend/system/MemoryStatBuilder.java	Tue Dec 13 11:56:52 2011 -0500
@@ -40,8 +40,9 @@
         long buffers = UNAVAILABLE;
         long cached = UNAVAILABLE;
         long commitLimit = UNAVAILABLE;
+        BufferedReader reader = null;
         try {
-            BufferedReader reader = new BufferedReader(new FileReader(MEMINFO_FILE));
+            reader = new BufferedReader(new FileReader(MEMINFO_FILE));
             String line = null;
             while ((line = reader.readLine()) != null) {
                 String[] parts = line.split(":");
@@ -68,6 +69,15 @@
             }
         } catch (IOException e) {
             logger.log(Level.WARNING, "unable to read " + MEMINFO_FILE);
+        } finally {
+            if (reader != null) {
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                    logger.log(Level.WARNING, "unable to close " + MEMINFO_FILE);
+
+                }
+            }
         }
         return new MemoryStat(timestamp, total, free, buffers, cached, swapTotal, swapFree, commitLimit);
     }