diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java b/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java index bbb03d2e8b8954b306cc4529687a29e24d7c5610..e8cd7e17b5bd2b2fc15ee0db4f5c0bf27cd3dc15 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java @@ -304,6 +304,7 @@ public class StatSummarizer implements Runnable { long period = 60*1000; long start = end - period*periodCount; //long begin = System.currentTimeMillis(); + ImageOutputStream ios = null; try { RrdGraphDef def = new RrdGraphDef(); def.setTimeSpan(start/1000, end/1000); @@ -356,7 +357,7 @@ public class StatSummarizer implements Runnable { BufferedImage img = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_USHORT_565_RGB); Graphics gfx = img.getGraphics(); graph.render(gfx); - ImageOutputStream ios = new MemoryCacheImageOutputStream(out); + ios = new MemoryCacheImageOutputStream(out); ImageIO.write(img, "png", ios); //File t = File.createTempFile("jrobinData", ".xml"); @@ -373,6 +374,9 @@ public class StatSummarizer implements Runnable { } catch (OutOfMemoryError oom) { _log.error("Error rendering", oom); throw new IOException("Error plotting: " + oom.getMessage()); + } finally { + // this does not close the underlying stream + if (ios != null) try {ios.close();} catch (IOException ioe) {} } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java index a0349aa7114776ce09c55f638fad2986ee2ff92d..2e0c44fed10aacae98015b55d0f238909a91c444 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java @@ -99,6 +99,7 @@ class SummaryRenderer { periodCount = _listener.getRows(); long start = end - (period * periodCount); //long begin = System.currentTimeMillis(); + ImageOutputStream ios = null; try { RrdGraphDef def = new RrdGraphDef(); def.setTimeSpan(start/1000, end/1000); @@ -186,7 +187,7 @@ class SummaryRenderer { BufferedImage img = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_USHORT_565_RGB); Graphics gfx = img.getGraphics(); graph.render(gfx); - ImageOutputStream ios = new MemoryCacheImageOutputStream(out); + ios = new MemoryCacheImageOutputStream(out); ImageIO.write(img, "png", ios); //System.out.println("Graph created"); @@ -203,6 +204,9 @@ class SummaryRenderer { } catch (OutOfMemoryError oom) { _log.error("Error rendering", oom); throw new IOException("Error plotting: " + oom.getMessage()); + } finally { + // this does not close the underlying stream + if (ios != null) try {ios.close();} catch (IOException ioe) {} } }