ctf: Fixed leaked file handle when calling CTFTraceReader.update
authorMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Fri, 11 Dec 2015 17:37:09 +0000 (12:37 -0500)
committerMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Sat, 12 Dec 2015 16:17:07 +0000 (11:17 -0500)
If an instance of CTFStreamInputReader already existed in a
CTFTraceReader, it was not getting closed after checking whether or not
it existed. This was causing a test failure on Windows in
CTFTraceGrowingTest.

Change-Id: Ia064d3270882515b32834456771a108970ce8f8e
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/62515
Reviewed-by: Hudson CI
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
ctf/org.eclipse.tracecompass.ctf.core/src/org/eclipse/tracecompass/ctf/core/trace/CTFTraceReader.java

index 805c7a9a41a8ad5ba55cf9185ddc0d2df28e92aa..905856dbb20859dd36bf5ee71ed80a5c2e5a4078 100644 (file)
@@ -244,18 +244,17 @@ public class CTFTraceReader implements AutoCloseable {
             Set<CTFStreamInput> streamInputs = stream.getStreamInputs();
             for (CTFStreamInput streamInput : streamInputs) {
                 /*
-                 * Create a reader.
+                 * Create a reader to check if it already exists in the list. If it doesn't, add it.
                  */
-                CTFStreamInputReader streamInputReader = new CTFStreamInputReader(checkNotNull(streamInput));
-
-
-                /*
-                 * Add it to the group.
-                 */
-                if (!fStreamInputReaders.contains(streamInputReader)) {
-                    streamInputReader.readNextEvent();
-                    fStreamInputReaders.add(streamInputReader);
-                    readers.add(streamInputReader);
+                try (CTFStreamInputReader streamInputReader = new CTFStreamInputReader(checkNotNull(streamInput))) {
+                    if (!fStreamInputReaders.contains(streamInputReader)) {
+                        CTFStreamInputReader streamInputReaderToAdd = new CTFStreamInputReader(checkNotNull(streamInput));
+                        streamInputReaderToAdd.readNextEvent();
+                        fStreamInputReaders.add(streamInputReaderToAdd);
+                        readers.add(streamInputReaderToAdd);
+                    }
+                } catch (IOException e) {
+                    Activator.logError(e.getMessage(), e);
                 }
             }
         }
This page took 0.02654 seconds and 5 git commands to generate.