IP Library Granted Patent US 10,372,586
Granted Patent B2
US 10,372,586 · App. 15/005,550 · Granted Aug 6, 2019

Application instrumentation code extension

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 10,372,586
App. No.
15/005,550
Granted
Aug 6, 2019
Kind
B2
Abstract

The embodiments provide an application diagnostics apparatus including an instrumentation engine configured to monitor one or more methods of a call chain of the application in response to a server request according to an instrumentation file specifying which methods are monitored and which methods are associated with a code extension, an extension determining unit configured to determine that at least one monitored method is associated with the code extension based on code extension identification information, a class loading unit configured to load the code extension from a resource file when the at least one monitored method associated with the code extension is called within the call chain, a code extension execution unit configured to execute one or more data collection processes, and a report generator configured to generate at least one report for display based on collected parameters.

Claims (44)

1. An application diagnostics apparatus comprising:

at least one processor;

a non-transitory computer-readable storage medium including instructions executable by the at least one processor, the instructions configured to implement,

an instrumentation engine to:

monitor a plurality of methods of a call chain of an application in response to one or more server requests according to an instrumentation file by interjecting code at either of an entry or an exit of each of the plurality of methods and monitoring the plurality of methods during runtime of the application, the plurality of methods including a first method and a second method, the application being associated with a plurality of hierarchal class loaders, the instrumentation file identifying the first method and the second method;

collect data about an execution of the application including collecting information about the first method and the second method, the instrumentation file also identifying a code extension and a location of the code extension, the instrumentation file associating the code extension with the first method;

a class loading unit to:

bypass class loading delegation to a class loader located downstream in the plurality of hierarchal class loaders;

select a class loader among the plurality of hierarchal class loaders that was used to load the application is selected; and

load the code extension into the application from the location using the selected class loader when the first method is called within the call chain, without having to restart the application; and

a code extension execution unit to execute the code extension to collect information about the execution of the application that is different from or an addition to the collected information about the first method and the second method.

2. The application diagnostics apparatus of claim 1 , further comprising:

a code extension updating unit to receive a change to the code extension via a code extension interface, and update the code extension based on the change such that the change is implemented without having to restart the application.

3. The application diagnostics apparatus of claim 1 , wherein the instrumentation file identifies a name of the code extension within a rule of the instrumentation file that corresponds to the first method.

4. The application diagnostics apparatus of claim 1 , wherein the code extension is stored in a resource file, the resource file includes a Java Archive (JAR) file, the location of the code extension identified in the instrumentation file is a location of the code extension within the JAR file.

5. The application diagnostics apparatus of claim 1 , wherein the instrumentation file includes a plurality of rules including a first rule and a second rule, the first rule identifying the first method, and the second rule identifying the second method, the first rule being associated with the code extension, the second rule not being associated with the code extension.

6. The application diagnostics apparatus of claim 1 , wherein the code extension defines a new key performance indicator (KPI) about the execution of the application that is in addition to KPIs defined by the instrumentation file.

7. The application diagnostics apparatus of claim 1 , wherein the code extension is a first code extension, the instrumentation file associating a second code extension with the second method, the second code extension to alter a sequence of the plurality of methods of the call chain.

8. The application diagnostics apparatus of claim 1 , wherein the code extension is a first code extension, the instrumentation file associating a second code extension with the second method, the second code extension to modify a user interface of the application.

9. The application diagnostics apparatus of claim 1 , wherein the collected information includes metrics about the execution of the first method and the second method within the call chain.

10. The application diagnostics apparatus of claim 1 , further comprising:

a parameter map generator to generate a parameter map based on the collected information relating to both the instrumentation file and the code extension, the parameter map including at least one key-value pair representing a parameter and associated value; and

an analysis unit to analyze the parameter map and generate at least one report based on the analyzed parameter map.

11. A method for extending a functionality of an application diagnostic s system, the method being performed by at least one processor, the method comprising:

monitoring a plurality of methods of a call chain of an application in response to one or more server requests according to an instrumentation file by interjecting code at either of an entry and an exit of each of the plurality of methods and monitoring the plurality of methods during runtime of the application, the application being associated with a plurality of hierarchal class loaders, the plurality of methods including a first method and a second method, the instrumentation file identifying the first method and the second method,

wherein the monitoring includes collecting data about an execution of the application by collecting information about the first method and the second method, the instrumentation file also identifying a code extension and a location of the code extension, the instrumentation file associating the code extension with the first method;

selecting a class loader among the plurality of hierarchal class loaders, the selecting including bypassing class loading delegation to a class loader located downstream in the plurality of hierarchal class loaders such that the class loader that was used to load the application is selected;

loading the code extension into the application using the selected class loader from the location when the first method is called within the call chain, without having to restart the application; and

executing the code extension to collect information about the execution of the application that is different or an addition to the collected information about the first method and the second method.

12. The method of claim 11 , further comprising:

receiving, via a code extension interface, a change to the code extension; and

updating the code extension based on the change such that the change is implemented without having to restart the application.

13. The method of claim 11 , wherein the code extension is a first code extension, the instrumentation file associating a second code extension with the second method, the second code extension to alter a sequence of the plurality of methods of the call chain.

14. The method of claim 11 , wherein the instrumentation file identifies a name of the code extension within a rule of the instrumentation file, the rule being associated with the first method.

15. The method of claim 11 , wherein the code extension is stored in a resource file, the resource file including a Java Archive (JAR) file.

16. A non-transitory computer-readable medium storing instructions that when executed cause at least one processor to extend a functionality of an application diagnostics system, the instructions comprising instructions to:

monitor a plurality of methods of a call chain of an application in response to one or more server requests according to an instrumentation file by interjecting code at either of an entry or an exit of each of the plurality of methods and monitoring the plurality of methods during runtime of the application, the application being associated with a plurality of hierarchal class loaders, the plurality of methods including a first method and a second method, the instrumentation file identifying the first method and the second method,

wherein the instructions to monitor include instructions to collect data about an execution of the application by collecting information about the first method and the second method identified in the instrumentation file, the instrumentation file also identifying a code extension and a location of the code extension, the instrumentation file associating the code extension with the first method;

select a class loader among the plurality of hierarchal class loaders, the selecting including bypassing class loading delegation to a class loader downstream in the plurality of hierarchal class loaders such that the class loader that was used to load the application is selected;

load the code extension into the application using the selected class loader from the location when the first method is called within the call chain, without having to restart the application; and

execute the code extension to collect information about the execution of the application that is different or an addition to the collected information about the first method and the second method.

17. The non-transitory computer-readable medium of claim 16 , wherein the code extension is to modify the collection of the data indicated by the instrumentation file.

18. The non-transitory computer-readable medium of claim 16 , wherein the code extension defines a new key performance indicator (KPI) about the execution of the application that is in addition to KPIs defined by the instrumentation file.

19. The non-transitory computer-readable medium of claim 16 , wherein the instrumentation file includes a plurality of rules, and priority information indicating a priority of each of the plurality of rules, the plurality of rules including two rules that relate to the first method, wherein one of the two rules are selected based on the priority information.

Assignments (14)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2025
From: BMC SOFTWARE, INC.
To: BMC HELIX, INC.
Reel/Frame 070442/0197 →
GRANT OF FIRST LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0628 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0568 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
RELEASE OF PATENTS Recorded Oct 5, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.; BMC ACQUISITION L.L.C.
Reel/Frame 047198/0468 →
SECURITY INTEREST Recorded Oct 2, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047185/0744 →
SECURITY INTEREST Recorded Jul 27, 2017
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 043351/0189 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 26, 2016
From: HULICK, WALTER T., JR.
To: BMC SOFTWARE, INC.
Reel/Frame 037585/0828 →