Error Reporting groups errors which are considered to have the same root cause.
Before grouping
Before Error Reporting evaluates any error for grouping, it decides the following:
- On App Engine standard environment, errors logged with a severity lower than
ERROR
are ignored. - Stack frames which are not owned by the user are ignored (for instance, those that belong to public libraries).
- Any repeating sequence of one or more stack frames is replaced by a single occurrence of that sequence.
- Compiler-introduced methods and symbols are removed.
Grouping
When the system is evaluating errors, it follows these general patterns:
- Exceptions are grouped together if they have the same exception type and similar stacks.
- The stack trace is ignored for exceptions that are typically unrelated to the source location where they occur.
- Errors without an exception stack are grouped together if they were created by
the same log statement, approximated by the source location it was reported
from (
reportLocation
).
Specifically, the following grouping rules are applied in this order:
Error type | Grouped by |
---|---|
Errors caused by a general problem in the environment.
For example, App Engine specific problems: com.google.apphosting.runtime.HardDeadlineExceededError com.google.appengine.api.datastore.DatastoreTimeoutException Java problems: java.util.concurrent.CancellationException | Grouped by exception type. |
Errors with a stack trace. In the case of nested exceptions, the
innermost exception is considered.
For example: runtime error: index out of range package1.func1() file1:20 package2.func2() file2:33 | Grouped by exception type and the 5 top-most frames. |
Errors without a stack trace, but with a message.
For example: runtime error: index out of range func1() | Grouped by message and (if present) function name. Only the first 3 literal
tokens of the message are considered. In the example to the left, these
are runtime , error , and index .
|