IP Library › Granted Patent US 11,429,509
Granted Patent B2
US 11,429,509 · App. 17/339,680 · Granted Aug 30, 2022

Smart span prioritization based on ingestion service backpressure

Inventors: Kevin J. Cirone (Woburn, MA); Blake T. Sullivan (Redwood City, CA); Dipankar Bajpai (Chelmsford, MA)
Assignee: Oracle International Corporation
G06F11/3476G06F9/542G06F11/3636G06F12/0802G06F2212/60
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 11,429,509
App. No.
17/339,680
Granted
Aug 30, 2022
Kind
B2
Abstract

Disclosed techniques relate to automatically instrumenting a web application. In an aspect, a method identifies that a web application includes an event that is triggered by a user interaction. The method associates the event with a tracer that is configured to log tracing information based on an execution of a first set of operations caused by the event and to obtain a first measurement of performance of a first span. The method identifies, in the code, that the execution of a first set of operations causes a request to be made to a server. The method associates the request with the tracer. The tracer is configured to log tracing information based on an execution of a second set of operations caused by the request and to obtain a second measurement of performance of a second span that is a child span of the first span.

Claims (94)

1. A method of automatically instrumenting a web application, the method comprising:

identifying, from code of the web application, that the web application comprises an event that is triggered by a user interaction;

associating the event with a tracer, wherein the tracer is configured to log tracing information based on an execution of a first set of operations caused by the event and to obtain a first measurement of performance of a first span, wherein the first span comprises first set of operations, and wherein the first measurement of performance includes one or more of (i) a number of processing cycles to execute the first set of operations and (ii) an execution time of the first set of operations;

identifying, in the code, that the execution of the first set of operations causes a request to be made to a server; and

associating the request with the tracer, wherein the tracer is configured to log tracing information based on an execution of a second set of operations caused by the request and to obtain a second measurement of performance of a second span, wherein the second span comprises the second set of operations, wherein the second span is a child span of the first span, and wherein the second measurement of performance includes one or more of (i) a number of processing cycles to execute the second set of operations and (ii) an execution time of the second set of operations.

2. The method of claim 1 , further comprising:

receiving a priority for the first span;

determining that the priority is outside a priority tolerance; and

identifying the first span as a proxy span based on the determining, wherein identifying the first span as the proxy span causes the tracer to not log information based on the execution of the first set of operations.

3. The method of claim 2 , further comprising:

accessing an updated priority for the first span; and

instantiating the tracer and re-identifying the first span as a span, responsive to determining that the updated priority is within the priority tolerance.

4. The method of claim 1 , further comprising:

instantiating, based on a start of the web application, the tracer;

automatically logging a start of the first span based on a triggering of the event;

automatically logging a start of the second span based on a triggering of the request;

automatically logging an end of the second span based upon a completion of the second set of operations; and

automatically logging an end of the first span based upon a completion of the first set of operations.

5. The method of claim 1 , further comprising:

based on a triggering of the request, sending the request to an external server;

automatically logging, on the external server, a start of the second span based on the sending;

executing, on the external server, the second set of operations;

automatically logging, on the external server, an end of the second span;

receiving, from the external server, an indication of the end of the second span.

6. The method of claim 1 , further comprising:

accessing a priority for the first span;

instantiating, based on the priority of the first span and on a start of the web application, the tracer;

automatically logging a start of the second span based on a triggering of the request; and

automatically logging an end of the second span based upon a completion of the second set of operations.

7. The method of claim 6 , wherein:

the request causes the server to perform the second set of operations, and

automatically logging the end of the second span comprises receiving, from the server, a header comprising information regarding the second span.

8. A system comprising:

a non-transitory computer-readable medium storing computer-executable program instructions; and

at least one processor communicatively coupled to the non-transitory computer-readable medium and executing the computer-executable program instructions for:

identifying, from code of a web application, that the web application comprises an event that is triggered by a user interaction;

associating the event with a tracer, wherein the tracer is configured to log tracing information based on an execution of a first set of operations caused by the event and to obtain a first measurement of performance of a first span, wherein the first span comprises first set of operations, and wherein the first measurement of performance includes one or more of (i) a number of processing cycles to execute the first set of operations and (ii) an execution time of the first set of operations;

identifying, in the code, that the execution of the first set of operations causes a request to be made to a server; and

associating the request with the tracer, wherein the tracer is configured to log tracing information based on an execution of a second set of operations caused by the request and to obtain a second measurement of performance of a second span, wherein the second span comprises the second set of operations, wherein the second span is a child span of the first span, and wherein the second measurement of performance includes one or more of (i) a number of processing cycles to execute the second set of operations and (ii) an execution time of the second set of operations.

9. The system of claim 8 , wherein the computer-executable instructions include instructions for:

receiving a priority for the first span;

determining that the priority is outside a priority tolerance; and

identifying the first span as a proxy span based on the determining, wherein identifying the first span as the proxy span causes the tracer to not log information based on the execution of the first set of operations.

10. The system of claim 9 , wherein the computer-executable instructions include instructions for:

accessing an updated priority for the first span; and

instantiating the tracer and re-identifying the first span as a span, responsive to determining that the updated priority is within the priority tolerance.

11. The system of claim 8 , wherein the computer-executable instructions include instructions for:

based on a triggering of the request, sending the request to an external server;

automatically logging, on the external server, a start of the second span based on the sending;

executing, on the external server, the second set of operations;

automatically logging, on the external server, an end of the second span; and

receiving, from the external server, an indication of the end of the second span.

12. The system of claim 8 , wherein the computer-executable instructions include instructions for:

instantiating, based on a start of the web application, the tracer;

automatically logging a start of the first span based on a triggering of the event;

automatically logging a start of the second span based on a triggering of the request;

automatically logging an end of the second span based upon a completion of the second set of operations; and

automatically logging an end of the first span based upon a completion of the first set of operations.

13. The system of claim 8 , wherein the computer-executable instructions include instructions for:

accessing a priority for the first span;

instantiating, based on the priority of the first span and on a start of the web application, the tracer;

automatically logging a start of the second span based on a triggering of the request; and

automatically logging an end of the second span based upon a completion of the second set of operations.

14. The system of claim 13 , wherein the computer-executable instructions include instructions for:

the request causes the server to perform the second set of operations, and wherein automatically logging the end of the second span comprises receiving, from the server, a header comprising information regarding the second span.

15. A non-transitory computer-readable medium storing computer-executable program instructions that when executed by a processor, perform operations comprising:

identifying, from code of a web application, that the web application comprises an event that is triggered by a user interaction;

associating the event with a tracer, wherein the tracer is configured to log tracing information based on an execution of a first set of operations caused by the event and to obtain a first measurement of performance of a first span, wherein the first span comprises first set of operations, and wherein the first measurement of performance includes one or more of (i) a number of processing cycles to execute the first set of operations and (ii) an execution time of the first set of operations;

identifying, in the code, that the execution of the first set of operations causes a request to be made to a server; and

associating the request with the tracer, wherein the tracer is configured to log tracing information based on an execution of a second set of operations caused by the request and to obtain a second measurement of performance of a second span, wherein the second span comprises the second set of operations, wherein the second span is a child span of the first span, and wherein the second measurement of performance includes one or more of (i) a number of processing cycles to execute the second set of operations and (ii) an execution time of the second set of operations.

16. The non-transitory computer-readable medium of claim 15 , wherein the operations further comprise:

receiving a priority for the first span;

determining that the priority is outside a priority tolerance; and

identifying the first span as a proxy span based on the determining, wherein identifying the first span as the proxy span causes the tracer to not log information based on the execution of the first set of operations.

17. The non-transitory computer-readable medium of claim 16 , wherein the operations further comprise:

accessing an updated priority for the first span; and

instantiating the tracer and re-identifying the first span as a span, responsive to determining that the updated priority is within the priority tolerance.

18. The non-transitory computer-readable medium of claim 15 , wherein the operations further comprise:

based on a triggering of the request, sending the request to an external server;

automatically logging, on the external server, a start of the second span based on the sending;

executing, on the external server, the second set of operations;

automatically logging, on the external server, an end of the second span; and

receiving, from the external server, an indication of the end of the second span.

19. The non-transitory computer-readable medium of claim 15 , wherein the operations further comprise:

instantiating, based on a start of the web application, the tracer;

automatically logging a start of the first span based on a triggering of the event;

automatically logging a start of the second span based on a triggering of the request;

automatically logging an end of the second span based upon a completion of the second set of operations; and

automatically logging an end of the first span based upon a completion of the first set of operations.

20. The non-transitory computer-readable medium of claim 15 , wherein the operations further comprise:

accessing a priority for the first span;

instantiating, based on the priority of the first span and on a start of the web application, the tracer;

automatically logging a start of the second span based on a triggering of the request; and

automatically logging an end of the second span based upon a completion of the second set of operations.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2021
From: CIRONE, KEVIN J.; SULLIVAN, BLAKE T.; BAJPAI, DIPANKAR
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 056503/0266 →
Continuity (2)
Provisional Application 63077649 · Sep 13, 2020
Related Publication 20220083453A1 · Mar 17, 2022
Cited By (1)
US 12,367,126