Revision: 8462
Author: [email protected]
Date: Mon Aug 2 14:49:52 2010
Log: SpeedTracerLogger: Don't throw exceptions on missed events. Instead,
try to recover gracefully.
Review at http://gwt-code-reviews.appspot.com/674805
Review by: [email protected]
http://code.google.com/p/google-web-toolkit/source/detail?r=8462
Modified:
/trunk/dev/core/src/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLogger.java
=======================================
---
/trunk/dev/core/src/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLogger.java
Thu Jul 29 04:13:58 2010
+++
/trunk/dev/core/src/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLogger.java
Mon Aug 2 14:49:52 2010
@@ -82,7 +82,7 @@
/**
* @param data key/value pairs to add to JSON object.
*/
- public void addData(String[] data) {
+ public void addData(String ...data) {
if (data != null) {
assert (data.length % 2 == 0);
this.data = Lists.addAll(this.data, data);
@@ -296,27 +296,22 @@
assert (endTimeNanos >= currentEvent.startTimeNanos);
currentEvent.durationNanos = endTimeNanos -
currentEvent.startTimeNanos;
- List<Event> missedEvents = Lists.create();
-
- // TODO(zundel): Why not just assert in this case?
while (currentEvent.type != type && !threadPendingEvents.isEmpty()) {
// Missed a closing end for one or more frames! Try to sync back up.
- missedEvents = Lists.add(missedEvents, currentEvent);
+ currentEvent.addData("Missed", "This event was closed without an
explicit call to SpeedTracerLogger.end()");
currentEvent = threadPendingEvents.pop();
+ assert (endTimeNanos >= currentEvent.startTimeNanos);
currentEvent.durationNanos = endTimeNanos -
currentEvent.startTimeNanos;
}
+
+ if (threadPendingEvents.isEmpty() && currentEvent.type != type) {
+ currentEvent.addData("Missed", "Fell off the end of the
threadPending events");
+ }
+
currentEvent.addData(data);
if (threadPendingEvents.isEmpty()) {
eventsToWrite.add(currentEvent);
}
- if (missedEvents.size() > 0) {
- StringBuilder sb = new StringBuilder();
- sb.append("SpeedTracerLogger missing end() calls for the following
events: ");
- for (Event event : missedEvents) {
- sb.append(event.type.getName());
- }
- throw new IllegalStateException(sb.toString());
- }
}
/**
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors