Announcements‎ > ‎ release notes

posted Nov 2, 2020, 8:15 AM by Scott Wells

  • Log Analyzer Profiling Enhancements - Significant Log Analyzer enhancements and new features for governor-limited resource utilization profiling, specifically for resource consumption hotspot analysis and characterization. For the best profiling experience, use the Tracing (Profile) log level preset when executing the profiled process.

    • Improved display of self/total metrics for the Database Profiling view - Previously the metrics in this view varied between total when there was no local/self activity and self when there was. This could result in lost information when additional activity occurred deeper in the call stack, e.g., when a DML operation resulted in a trigger that itself performed further DML. Now each metric is presented as Self/Total of Limit.
    • Reported vs. observed cumulative profiling metrics for the Cumulative Usage Limits and Profiling view - This view displays reported counts and durations for DML operations, SOQL operations, and method invocations for the executed process based on the corresponding metrics from the source log. In the process of implementing these enhancements and new features, I found that these metrics could be reported incorrectly, in particular SOQL operations for static SOQL queries used directly in expressions without being assigned to a variable. Now Illuminated Cloud collects its own cumulative profiling metrics for DML and SOQL operations based on observed events of the corresponding types and includes those as well as the reported metrics for a more complete and accurate view of the executed process. In addition to the aforementioned SOQL operation disparity, I've also found that there are rare situations where Illuminated Cloud will observe an operation in the log that is not reported as part of the final summary information. Conversely, the final summary information includes some system methods in its counts that do not correspond to actual DML operations or queries, e.g., event bus inspections. As a result, both of these sets of cumulative profiling metrics should be considered for the best understanding of the executed process.
    New Features
    • Smart Expand action - This new tree view toolbar action expands the selected branch—or entire tree if there's no active selection—until there are no further insights to be gained by further expansion. The exact behavior of this action varies based on the selected view, but in general it means that the resolution of the profiling metrics for that view do not change upon further tree expansion.
    • Show Callees action - This actions shows the methods, constructors, properties, triggers, etc., which were invoked from a specific selected method transitively as a flat list with merged total/self governor-limited resource consumption metrics for each context. This is useful when trying to identify resource consumption "hotspots", either as single consumers or as aggregate consumers. Once a hotspot has been identified, the Show Callers action can be used to analyze single consumers in a bottom-up fashion, or the Show Merged Callees action can be used to analyze aggregate consumers in a top-down fashion.
    • Show Callers action - This action shows all invocation paths (i.e., backtraces) leading to a specific selected line of code and the aggregate governor-limited resource utilization along each path as a proportion of the total use of that resource. This is useful when a single particularly heavy consumer of a resource has been identified—generally via the Cumulative Usage Limits and Profiling view's cumulative profiling metrics or the Show Callees action—and you need to understand the logic that ultimately leads to that resource consumption "hotspot".
    • Show Merged Callees action - This actions shows the methods, constructors, properties, triggers, etc., which were invoked from a specific selected method transitively as a merged invocation hierarchy with aggregated total/self governor-limited resource consumption metrics for each level. This is useful when a resource is used heavily starting at a particular point of execution, but there is no single specific consumer of that resource. It allows the user to understand how and where the resource is consumed across the transitive execution of the process from entry point.