IP Library Granted Patent US 9,047,412
Granted Patent B2
US 9,047,412 · App. 13/775,621 · Granted Jun 2, 2015

System and method for extracting instrumentation relevant inheritance relationships for a distributed, inheritance rule based instrumentation system

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,047,412
App. No.
13/775,621
Granted
Jun 2, 2015
Kind
B2
Abstract

The presented enhancement of a rule based instrumentation system taking object oriented inheritance relationships into account is directed to the detection and extraction to inheritance relationships relevant for the instrumentation process. Relevant inheritance relationships which have an impact on the instrumentation process and typically only represent a small fraction of the complete inheritance relationships of a monitored application. The small size of the relevant inheritance relationships allows, for example to prepare it in advance and ship it as part of a monitoring application or to transmit inheritance information between different local instrumentation engines being part of a distributed instrumentation system.

Claims (51)

1. A computer-implemented method for generating an inheritance repository for use in performance monitoring across application platforms, comprising:

extracting, by an instrumentation engine, meta-data for a given class from bytecode, where the instrumentation engine is implemented by computer-readable instructions executed by a computer processor;

evaluating, by the instrumentation engine, the given class in relation to an instrumentation rule, where the instrumentation rule specifies a criterion for classes to be instrumented and is defined in relation to at least one particular class;

determining, by the instrumentation engine, whether the given class meets the criterion using one or more known inheritance relationships stored in a data store;

tagging, by the instrumentation engine, a subset of the known inheritance relationships as being relevant to the instrumentation process when the given class is determined to meet the criterion, where the subset of known inheritance relationships describe a particular inheritance path between the given class and the particular class; and

extracting the subset of known inheritance relationships from the data store and storing the subset of known inheritance relationships in a first non-transitory storage device separate and distinct from the data store.

2. The computer-implemented method of claim 1 further comprises extracting meta-data for a given class contemporaneously with the given class being loaded by an application into a runtime environment.

3. The computer-implemented method of claim 1 further comprises instrumenting, by the instrumentation engine, methods associated with the given class in the bytecode when the given class is determined to meet the criterion.

4. The computer-implemented method of claim 1 wherein determining whether the given class meets the criterion further comprises searching for the particular class amongst the inheritance relationships in the data store starting with the given class and tagging a group of inheritance relationships visited during the search as potentially relevant to the instrumentation process.

5. The computer-implemented method of claim 4 further comprises

identifying inheritance relationships in a direct inheritance path between the given class and the particular class from the group of visited inheritance relationships when the particular class is found during the search; and

changing tags of the identified inheritance relationships from potentially relevant to relevant to the instrumentation process.

6. The computer-implemented method of claim 5 further comprises removing tags from the group of inheritance relationships when the particular class is not found during the search.

7. The computer-implemented method of claim 1 further comprises bundling the one or more inheritance relationships tagged as relevant to the instrumentation process, along with computer-readable instructions for a performance monitoring application, onto a second non-transitory storage device.

8. The computer-implemented method of claim 1 further comprises sending, by the instrumentation engine, notification of an update to the data store via a communication link to an instrumentation manager, where the notification include data pertaining to the one or more tagged inheritance relationships.

9. A non-transitory computer-readable storage medium tangibly storing computer program instructions executable by a computer processor to perform steps comprising:

extracting meta-data for a given class from bytecode for a monitored application, where the extraction occurs contemporaneously with the given class being loaded by the application into a runtime environment;

evaluating the given class in relation to an instrumentation rule, where the instrumentation rule specifies a criterion for classes to be instrumented and is defined in relation to at least one particular class;

determining whether the given class meets the criterion using one or more known inheritance relationships stored in a data store;

tagging the one or more known inheritance relationships as being relevant to the instrumentation process when the given class is determined to meet the criterion, where the subset of known inheritance relationships describe a particular inheritance path between the given class and the particular class;

extracting the subset of known inheritance relationships from the data store and storing the subset of known inheritance relationships in a first non-transitory storage device separate and distinct from the data store; and

instrumenting, by the instrumentation engine, methods associated with the given class in the bytecode when the given class is determined to meet the criterion.

10. The non-transitory computer-readable storage medium of claim 9 wherein determining whether the given class meets the criterion further comprises searching for the particular class amongst the inheritance relationships in the data store starting with the given class and tagging a group of inheritance relationships visited during the search as potentially relevant to the instrumentation process.

11. The non-transitory computer-readable storage medium of claim 10 wherein determining whether the given class meets the criterion further comprises

identifying inheritance relationships in a direct inheritance path between the given class and the particular class from the group of visited inheritance relationships when the particular class is found during the search; and

changing tags of the identified inheritance relationships from potentially relevant to relevant to the instrumentation process.

12. The non-transitory computer-readable storage medium of claim 11 wherein determining whether the given class meets the criterion further comprises removing tags from the group of inheritance relationships when the particular class is not found during the search.

13. A method for generating an inheritance repository for use in performance monitoring across application platforms, comprising:

extracting, by an instrumentation engine, meta-data for a given class from bytecode, where the extraction occurs contemporaneously with the given class being loaded by the application into a runtime environment and the instrumentation engine is implemented by computer-readable instructions executed by a computer processor;

evaluating, by the instrumentation engine, the given class in relation to an instrumentation rule, where the instrumentation rule specifies a criterion for classes to be instrumented and is defined in relation to at least one particular class;

searching, by the instrumentation engine, for the particular class amongst the known inheritance relationships in the data store starting with the given class;

tagging, by the instrumentation engine, inheritance relationships visited during the search as potentially relevant to the instrumentation process;

identifying, by the instrumentation engine, inheritance relationships in a direct inheritance path between the given class and the particular class from the tagged inheritance relationships when the particular class is found during the search;

changing, by the instrumentation engine, tags of the identified inheritance relationships from potentially relevant to relevant to the instrumentation process; and

removing, by the instrumentation engine, tags from the tagged inheritance relationships when the particular class is not found during the search.

14. The computer-implemented method of claim 13 further comprises instrumenting, by the instrumentation engine, methods associated with the given class in the bytecode when the given class is determined to meet the criterion.

15. The computer-implemented method of claim 13 further comprises extracting the tagged inheritance relationships from the data store and storing the tagged inheritance relationships in a first non-transitory storage device separate and distinct from the data store.

16. The computer-implemented method of claim 13 further comprises bundling the inheritance relationships tagged as relevant to the instrumentation process, along with computer-readable instructions for a performance monitoring application, onto a second non-transitory storage device.

17. The computer-implemented method of claim 13 further comprises sending, by the instrumentation engine, notification of an update to the data store via a communication link to an instrumentation manager, where the notification include data pertaining to the one or more tagged inheritance relationships.

18. A system for generating an inheritance repository for use in performance monitoring across application platforms, comprising:

a local inheritance repository operable to store a plurality of known inheritance relationships;

a local instrumentation engine configured to receive bytecode for an application being monitored, the local instrumentation engine operates to extract meta-data for a given class from the bytecode and evaluate the given class in relation to an instrumentation rule, where the instrumentation rule specifies a criterion for classes to be instrumented and is defined in relation to at least one particular class;

the local instrumentation engine operates to identify a subset of the known inheritance relationships being in a particular inheritance path between the given class and the particular class and tagging those inheritance relationships as relevant for the instrumentation process;

the local instrumentation engine further to send a notification via a communication link to an instrumentation server, where the notification include data pertaining to the identified inheritance relationships and the local instrumentation engine is executed by a computer processor of the system; and

an instrumentation manager residing on the instrumentation server and configured to receive the notification, wherein the instrumentation manager operates, in response to receiving the notification, to merge the data pertaining to the identified inheritance relationships into a central inheritance repository residing on the instrumentation server.

19. The system of claim 18 wherein the instrumentation manager detects a conflict between the data pertaining to the identified inheritance relationships and data residing in the central inheritance repository and replaces the data residing in the central inheritance repository with applicable data pertaining to the identified inheritance relationships upon detecting a conflict.

20. The system of claim 18 wherein the instrumentation manager, in response to receiving the notification from the local instrumentation engine, sends the notification across a network to a second instrumentation engine, where the notification includes the data pertaining to the identified inheritance relationships and the second instrumentation engine resides on a computing device separate and distinct from the local instrumentation engine.

21. The system of claim 20 further comprises a second inheritance repository residing on the computing device and accessible to the second instrumentation engine, wherein the second instrumentation engine operates, in response to receiving the notification from the instrumentation manager, merges the data pertaining to the identified inheritance relationships into the second inheritance repository.

22. The system of claim 21 wherein the second instrumentation engine detects a conflict between the data pertaining to the identified inheritance relationships and data residing in the second inheritance repository and discards the data pertaining to the identified inheritance relationships upon detecting a conflict.

23. The system of claim 18 wherein the local instrumentation engine operates to identify a subset of the known inheritance relationships being in an inheritance path between the given class and the particular class by

searching for the particular class amongst the known inheritance relationships in the local inheritance repository, tagging inheritance relationships visited during the search as potentially relevant to the instrumentation process, identifying inheritance relationships in a direct inheritance path between the given class and the particular class from the tagged inheritance relationships when the particular class is found during the search, and changing tags of the identified inheritance relationships from potentially relevant to relevant to the instrumentation process.

Assignments (10)
SECURITY INTEREST Recorded Dec 16, 2022
From: DYNATRACE LLC
To: BMO HARRIS BANK N.A.
Reel/Frame 062142/0187 →
RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 046923/0557 Recorded Dec 5, 2022
From: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
To: DYNATRACE, LLC
Reel/Frame 062056/0562 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL RECORDED AT R/F 46923/0528 Recorded Aug 6, 2019
From: JEFFERIES FINANCE LLC, COLLATERAL AGENT
To: DYNATRACE LLC
Reel/Frame 049966/0518 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Aug 24, 2018
From: DYNATRACE LLC
To: JEFFERIES FINANCE LLC
Reel/Frame 046923/0557 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Aug 24, 2018
From: DYNATRACE LLC
To: JEFFERIES FINANCE LLC
Reel/Frame 046923/0528 →
RELEASE OF FIRST LIEN PATENT SECURITY AGREEMENT RECORDED AT REEL\FRAME 035200\0973 AND 035200\0955 Recorded Aug 23, 2018
From: JEFFERIES FINANCE LLC
To: DYNATRACE LLC; COMPUWARE CORPORATION
Reel/Frame 046922/0886 →
TERMINATION OF SECURITY INTEREST IN PATENTS AT REEL/FRAME NO. 035201/0065 Recorded Feb 14, 2018
From: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
To: COMPUWARE CORPORATION
Reel/Frame 045325/0384 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2015
From: COMPUWARE CORPORATION
To: DYNATRACE LLC
Reel/Frame 035477/0368 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Mar 13, 2015
From: COMPUWARE CORPORATION
To: JEFFERIES FINANCE, LLC
Reel/Frame 035200/0973 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Mar 13, 2015
From: COMPUWARE CORPORATION
To: JEFFERIES FINANCE, LLC
Reel/Frame 035201/0065 →