Closed rju closed 11 hours ago
author André van Hoorn -- Fri, 30 Mar 2012 21:28:36 +0200
Implemented fix (and tests) in
New tests to be found in
author André van Hoorn -- Fri, 30 Mar 2012 22:22:10 +0200
The TraceAnalysisTool configures the FSReader to ignore unknown types (9f87071ae76c99bb36054f84cb6ad9ef0e50611a).
Tested by
1. Executing the main in BookstoreEventRecordFactory
1. Manipulating the kieker.map
{{
{ avanhoornavanhoorn-thinkpad:0:~/git_work/kieker <master> $ cat /tmp/kieker-20120330-201321543-UTC-avanhoorn-thinkpad-KIEKER-SINGLETON/kieker.map $0=kieker.common.record.flow.trace.TraceXY $1=kieker.common.record.flow.trace.operation.BeforeOperationEvent $2=kieker.common.record.flow.trace.operation.AfterOperationEvent $3=kieker.common.record.flow.trace.operation.CallOperationEvent }
}}
1. Executing the TraceAnalysis tool
avanhoornavanhoorn-thinkpad:0:~/git_work/kieker <master> $ bin/trace-analysis.sh -i /tmp/kieker-20120330-201321543-UTC-avanhoorn-thinkpad-KIEKER-SINGLETON/ -o tmp/ -p 23- --plot-Aggregated-Deployment-Call-Tree --plot-Aggregated-Assembly-Call-Tree # # Plugin: Aggregated call tree (deployment level) Trace processing summary: 3 total; 3 succeeded; 0 failed. Saved 1 call tree # # Plugin: Aggregated call tree (assembly level) Trace processing summary: 3 total; 3 succeeded; 0 failed. Saved 1 call tree # # Plugin: Trace reconstruction (execution records -> execution traces) Trace processing summary: 0 total; 0 succeeded; 0 failed. # # Plugin: Trace reconstruction (trace event records -> event record traces) Trace processing summary: 3 total; 3 succeeded; 0 failed. First timestamp: 7676876 (Thu, 1 Jan 1970 00:00:00 +0000 (UTC),Thu, 1 Jan 1970 01:00:00 +0100 (local time)) Last timestamp: 7678887 (Thu, 1 Jan 1970 00:00:00 +0000 (UTC),Thu, 1 Jan 1970 01:00:00 +0100 (local time)) # # Plugin: Trace reconstruction (event record traces -> execution traces) Trace processing summary: 3 total; 3 succeeded; 0 failed.
4. Inspecting the log.
avanhoornavanhoorn-thinkpad:0:~/git_work/kieker <master> $ cat kieker.log 0 INFO [Thread-2] kieker.analysis.plugin.reader.filesystem.FSDirectoryReader - < Loading /tmp/kieker-20120330-201321543-UTC-avanhoorn-thinkpad-KIEKER-SINGLETON/kieker-20120330-201321668-UTC--000-Thread-3.dat 5 ERROR [Thread-2] kieker.analysis.plugin.reader.filesystem.FSDirectoryReader - Failed to load record type kieker.common.record.flow.trace.TraceXY kieker.common.exception.MonitoringRecordException: Failed to get record type of name kieker.common.record.flow.trace.TraceXY at kieker.common.record.AbstractMonitoringRecord.classForName(AbstractMonitoringRecord.java:206) at kieker.analysis.plugin.reader.filesystem.FSDirectoryReader.processNormalInputFile(FSDirectoryReader.java:227) at kieker.analysis.plugin.reader.filesystem.FSDirectoryReader.run(FSDirectoryReader.java:120) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.ClassNotFoundException: kieker.common.record.flow.trace.TraceXY at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:169) at kieker.common.record.AbstractMonitoringRecord.classForName(AbstractMonitoringRecord.java:204) ... 3 more 33 INFO [main] kieker.analysis.AnalysisController - Terminating analysis. 33 INFO [main] kieker.analysis.plugin.reader.filesystem.FSReader - Shutting down reader. 740 INFO [main] kieker.tools.traceAnalysis.TraceAnalysisTool - Saved analysis configuration to file '/home/avanhoorn/git_work/kieker/tmp/23-traceAnalysis.kax'
JIRA Issue: KIEKER-533 FS Readers terminate immediately on unknown types Original Reporter: Andre van Hoorn
FSReaders do provide the property "readOnlyRecordsOfType"; however, this functionality doesn't work any more. Also, thanks to the new pipe-and-filter framework, it also isn't required to have this feature any longer.
1. We will remove this property
and
2. Add a new property "ignoreUnknownRecordTypes" which defaults to false. If the property is set to false, the behavior is exactly like the current one. If true, the reader ignore records of this type and proceeds.