Reviewers: zundel,
Description:
SpeedTracerLogger: Don't throw exceptions on missed events. Instead, try
to recover gracefully.
Review by: [email protected]
Please review this at http://gwt-code-reviews.appspot.com/674805/show
Affected files:
M
dev/core/src/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLogger.java
Index:
dev/core/src/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLogger.java
===================================================================
---
dev/core/src/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLogger.java
(revision 8450)
+++
dev/core/src/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLogger.java
(working copy)
@@ -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,26 +296,21 @@
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