Migrated from NovaTec Jira. Original ticket: INSPECTIT-1167
I am opening the ticket for the server side instrumentation. We can discuss than here, log work amount, etc.
Short description: Idea is to change the instrumentation from agent side to the CMR side.. Agent should just send the byte code to the CMR and do nothing in addition.. CMR is responsible for inserting instrumentation in the byte code if necessary.. CMR should also keep a class hierarchy structure per agent/application, which would enable us to easily figure out what should be or would be instrumented when configuration changes as well as to speed up instrumentation of already known classes..
1st milestone: As agreed the 1st milestone should be just to enable the instrumentation via CMR.. There should be no byte code cache implemented on either Agent or CMR.. The CMR should use the configuration classes defined in the CI prototype ticket, so the work will be closely related to the ticket that s not integrated yet.. Still, we assumed this is better option, cause we would anyway soon have the CI ready.. We want to change instrumentation library to ASM and do the instrumentation on our own..
Work done so far: Currently we have fully functional and tested class parsing mechanism and class cache structure.. In addition we invested work in figuring out the instrumentation challenges with the ASM and are close to also close this part of work..
Optimize the class cache structure, so it does not occupy too much heap memory
Finalize the work on the instrumentation based on the stack tables
Check how configuration interacts with class cache and the instrumentation
Check comment on reviewable..
: Checked out your branch and played around with it.
Wanted to let you know (not sure whether you are aware of this) that changes on the Instrumentation Configuration in the UI require a restart of the CMR in order to take effect.
Just restarting the target application is not enough.
That's not how it is intended to be, right?
: Restart of the CMR should not be required.. Can you be more specific in what concretely was not working? As I fully tested this, I would really be surprised that there is a major bug in there and that it does not work..
As agreed it's still not re-based on the Gradle, so that you can quickly look and check with the old comments. I am re-basing already so if you say this is fine I will update with the re-based version.
Let's just quickly agree if I should push to the same branch or I should alternatively open the new PR..