Limit nodes of invocation sequence to reduce the risk of out-of-memory on the system under diagnosis


Migrated from NovaTec Jira. Original ticket: INSPECTIT-424

Currently invocation sequence data is kept thread-locally until the invocation sequence is finished (meaning until the method that initialized the invocation returns). For some methods (e.g. batch processing) this can take a high amount of time.

We had this situation at the IVV, that we instrumented a batch in a wrong way and this batch took a long time. This batch accumulated 1,9 GB of invocation data which in the end resulted in an out of memory error on the system under diagnosis.

In order to be safe(r) from such problems we should limit the size of a invocation sequence and completely drop the invocation sequence if this size is exceeded.

  • The size should be set to 100.000 by default but should be modifyable (e.g. some configuration file or a startup parameter if something other than the default setting is desired)

  • The invocation should be dropped completely (we cannot handle incomplete invocation sequences yet)

  • An error log must be written indicating that an invocation sequence is dropped (which methods dropped it, why was it dropped).

This should be an option of the invocation sensor in the configuration interface Environment page.






Stefan Siegl