IP Library › Granted Patent US 12,367,126
Granted Patent B2
US 12,367,126 · App. 18/463,858 · Granted Jul 22, 2025

Smart distributed tracing context injection

Inventors: Kevin J. Cirone (Tewksbury, 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 12,367,126
App. No.
18/463,858
Granted
Jul 22, 2025
Kind
B2
Abstract

Disclosed systems relate to propagating tracing across a distributed software application. In an example, an application logs tracing data for a web page from an original server. The application determines, at the web browser, that the web page from the original server requires a request to an external server outside a domain of the original server. The application interrogates the external server to determine whether the external server allows tracing headers in requests. The application updates an allow list, at the web browser, to indicate that the external server allows tracing headers in requests from the original server. The application injects a tracing header in the request based on a result of the interrogation. The application sends, from the web browser to the external server, the request with the tracing header. The external server is configured to log tracing data based on the tracing header.

Claims (83)

1. A method of propagating tracing across a distributed software application, the method comprising:

determining, at a web browser executing on an end user computing device, that a web page from an original server requires a request to an external server outside a domain of the original server;

searching an allow list, at the web browser, for whether the external server allows tracing headers in requests from the original server;

obtaining, via a call to the external server, a list of permissible headers to determine whether the external server allows tracing headers in requests, the call based on results from the searching of the allow list;

updating the allow list, at the web browser, to indicate that the external server allows tracing headers in requests from the original server;

injecting a tracing header in the request based on a result of the call; and

sending, from the web browser to the external server, the request with the tracing header, the external server configured to log tracing data based on the tracing header.

2. The method of claim 1 , further comprising:

determining, at the web browser, that the web page requires an additional request to an additional external server outside the domain of the original server;

searching an allow list, at the web browser, for whether the additional external server allows tracing headers in requests from the original server; and

responsive to determining that the additional external server is not on the allow list, performing an HTTP OPTIONS call with a preflight request.

3. The method of claim 2 , further comprising:

determining, based on results of the HTTP OPTIONS call, whether headers are supported on the additional external server; and

injecting an additional tracing header in the additional request based on a result of the HTTP OPTIONS call.

4. The method of claim 1 , further comprising:

receiving, from the external server, a notification that the request was not accepted;

adding, at the web browser, the external server to a deny list; and

resending, from the web browser to the external server, the request without the tracing header.

5. The method of claim 4 , further comprising:

determining, at the web browser, that the web page requires an additional request to an additional external server that is outside the domain of the original server; and

searching the deny list, at the web browser, for whether the additional external server disallows tracing headers in requests from the original server.

6. The method of claim 1 , further comprising:

determining, at the web browser, that the web page requires an additional request to an additional external server outside the domain of the original server;

determining that the original server is not running cross-origin resource sharing (CORS); and

responsive to the determining, injecting the tracing header in the additional request and sending the additional request with the tracing header.

7. The method of claim 1 , further comprising:

determining that the request to the external server resulted in a failure; and

responsive to determining that the request resulted in a failure, determining whether the failure was due to the tracing headers.

8. A system comprising:

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

a processing device communicatively coupled to the non-transitory computer-readable medium for executing the computer-executable program instructions, wherein executing the computer-executable program instructions configures the processing device to perform operations comprising:

determining, at a web browser executing on an end user computing device, that a web page from an original server requires a request to an external server outside a domain of the original server;

searching an allow list, at the web browser, for whether the external server allows tracing headers in requests from the original server;

obtaining, via a call to the external server, a list of permissible headers to determine whether the external server allows tracing headers in requests, the call based on results from the searching of the allow list;

updating the allow list, at the web browser, to indicate that the external server allows tracing headers in requests from the original server;

injecting a tracing header in the request based on a result of the call; and

sending, from the web browser to the external server, the request with the tracing header, the external server configured to log tracing data based on the tracing header.

9. The system of claim 8 , wherein executing the computer-executable program instructions configures the processing device to perform operations comprising:

determining, at the web browser, that the web page requires an additional request to an additional external server outside the domain of the original server;

searching an allow list, at the web browser, for whether the additional external server allows tracing headers in requests from the original server; and

responsive to determining that the additional external server is not on the allow list, performing an HTTP OPTIONS call with a preflight request.

10. The system of claim 9 , wherein executing the computer-executable program instructions configures the processing device to perform operations comprising:

determining, based on results of the HTTP OPTIONS call, whether headers are supported on the additional external server; and

injecting an additional tracing header in the additional request based on a result of the HTTP OPTIONS call.

11. The system of claim 8 , wherein executing the computer-executable program instructions configures the processing device to perform operations comprising:

receiving, from the external server, a notification that the request was not accepted;

adding, at the web browser, the external server to a deny list; and

resending, from the web browser to the external server, the request without the tracing header.

12. The system of claim 11 , wherein executing the computer-executable program instructions configures the processing device to perform operations comprising:

determining, at the web browser, that the web page requires an additional request to an additional external server that is outside the domain of the original server; and

searching the deny list, at the web browser, for whether the additional external server disallows tracing headers in requests from the original server.

13. The system of claim 8 , wherein executing the computer-executable program instructions configures the processing device to perform operations comprising:

determining, at the web browser, that the web page requires an additional request to an additional external server outside the domain of the original server;

determining that the original server is not running cross-origin resource sharing (CORS); and

responsive to the determining, injecting the tracing header in the additional request and sending the additional request with the tracing header.

14. The system of claim 8 , wherein executing the computer-executable program instructions configures the processing device to perform operations comprising:

determining that the request to the external server resulted in a failure; and

responsive to determining that the request resulted in a failure, determining whether the failure was due to the tracing headers.

15. A non-transitory computer-readable storage medium storing computer-executable program instructions, wherein when executed by a processing device, the computer-executable program instructions cause the processing device to perform operations comprising:

determining, at a web browser executing on an end user computing device, that a web page from an original server requires a request to an external server outside a domain of the original server;

searching an allow list, at the web browser, for whether the external server allows tracing headers in requests from the original server;

obtaining, via a call to the external server, a list of permissible headers to determine whether the external server allows tracing headers in requests, the call based on results from the searching of the allow list;

updating the allow list, at the web browser, to indicate that the external server allows tracing headers in requests from the original server;

injecting a tracing header in the request based on a result of the call; and

sending, from the web browser to the external server, the request with the tracing header, the external server configured to log tracing data based on the tracing header.

16. The non-transitory computer-readable storage medium of claim 15 , wherein when executed by the processing device, the computer-executable program instructions cause the processing device to perform operations comprising:

determining, at the web browser, that the web page requires an additional request to an additional external server outside the domain of the original server;

searching an allow list, at the web browser, for whether the additional external server allows tracing headers in requests from the original server; and

responsive to determining that the additional external server is not on the allow list, performing an HTTP OPTIONS call with a preflight request.

17. The non-transitory computer-readable storage medium of claim 16 , wherein when executed by the processing device, the computer-executable program instructions cause the processing device to perform operations comprising:

determining, based on results of the HTTP OPTIONS call, whether headers are supported on the additional external server; and

injecting an additional tracing header in the additional request based on a result of the HTTP OPTIONS call.

18. The non-transitory computer-readable storage medium of claim 15 , wherein when executed by the processing device, the computer-executable program instructions cause the processing device to perform operations comprising:

receiving, from the external server, a notification that the request was not accepted;

adding, at the web browser, the external server to a deny list; and

resending, from the web browser to the external server, the request without the tracing header.

19. The non-transitory computer-readable storage medium of claim 18 , wherein when executed by the processing device, the computer-executable program instructions cause the processing device to perform operations comprising:

determining, at the web browser, that the web page requires an additional request to an additional external server that is outside the domain of the original server; and

searching the deny list, at the web browser, for whether the additional external server disallows tracing headers in requests from the original server.

20. The non-transitory computer-readable storage medium of claim 15 , wherein when executed by the processing device, the computer-executable program instructions cause the processing device to perform operations comprising:

determining, at the web browser, that the web page requires an additional request to an additional external server outside the domain of the original server;

determining that the original server is not running cross-origin resource sharing (CORS); and

responsive to the determining, injecting the tracing header in the additional request and sending the additional request with the tracing header.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 8, 2023
From: CIRONE, KEVIN J.; SULLIVAN, BLAKE T.; BAJPAI, DIPANKAR
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 064848/0788 →
Continuity (3)
Continuation 17339682 · Jun 4, 2021
Provisional Application 63077649 · Sep 13, 2020
Related Publication 20230418723A1 · Dec 28, 2023
References Cited (78)
US 9298589B2 · Gautallin et al. · 2016 [cited by applicant]
US 11339673B2 · Roberge · 2022 [cited by applicant]
US 11429509B2 · Cirone et al. · 2022 [cited by applicant]
US 11544172B2 · Cirone et al. · 2023 [cited by applicant]
US 11586525B2 · Cirone et al. · 2023 [cited by applicant]
US 11681605B2 · Cirone et al. · 2023 [cited by applicant]
US 11693758B2 · Cirone et al. · 2023 [cited by applicant]
US 11797417B2 · Cirone et al. · 2023 [cited by applicant]
US 20040267702A1 · Gallant et al. · 2004 [cited by applicant]
US 20050021736A1 · Carusi et al. · 2005 [cited by applicant]
US 20050223048A1 · Smith et al. · 2005 [cited by applicant]
US 20060085420A1 · Hwang · 2006 [cited by applicant]
US 20060155907A1 · Yoshida et al. · 2006 [cited by applicant]
US 20070101206A1 · Brabant · 2007 [cited by applicant]
US 20090119645A1 · Begg et al. · 2009 [cited by applicant]
US 20100011341A1 · Baierl et al. · 2010 [cited by applicant]
US 20100115284A1 · Hahn et al. · 2010 [cited by applicant]
US 20100162247A1 · Welc et al. · 2010 [cited by applicant]
US 20110264787A1 · Mickens et al. · 2011 [cited by applicant]
US 20130185643A1 · Greifeneder et al. · 2013 [cited by applicant]
US 20130204932A1 · Savage et al. · 2013 [cited by applicant]
US 20130254313A1 · Kudikala et al. · 2013 [cited by applicant]
US 20140053056A1 · Weber et al. · 2014 [cited by applicant]
US 20140317605A1 · Gataullin et al. · 2014 [cited by applicant]
US 20150242303A1 · Gautallin et al. · 2015 [cited by applicant]
US 20150281035A1 · Melikyan · 2015 [cited by applicant]
US 20150304398A1 · Letca et al. · 2015 [cited by applicant]
US 20150347277A1 · Gataullin et al. · 2015 [cited by applicant]
US 20160041894A1 · Reid, III et al. · 2016 [cited by applicant]
US 20160112822A1 · Giral · 2016 [cited by examiner]
US 20170091216A1 · Fuchs et al. · 2017 [cited by applicant]
US 20170132111A1 · Ravindranath Sivalingam et al. · 2017 [cited by applicant]
US 20170132181A1 · Van As et al. · 2017 [cited by applicant]
US 20180032905A1 · Abercrombie · 2018 [cited by applicant]
US 20190303178A1 · Mastracci · 2019 [cited by applicant]
US 20200241996A1 · Dillon et al. · 2020 [cited by applicant]
US 20200372007A1 · Ross et al. · 2020 [cited by applicant]
US 20210051179A1 · Hulick · 2021 [cited by applicant]
US 20210157583A1 · Yuile et al. · 2021 [cited by applicant]
US 20210182267A1 · Andreakis et al. · 2021 [cited by applicant]
JP 2000207317A · 2000 [cited by applicant]
JP 2009104267A · 2009 [cited by applicant]
JP 2011165059A · 2011 [cited by applicant]
JP 2012089017A · 2012 [cited by applicant]
JP 2014036408A · 2014 [cited by applicant]
JP 2016099681A · 2016 [cited by applicant]
JP 2019075144A · 2019 [cited by applicant]
“Cross-Origin Resource Sharing (CORS)”, Available online at https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS, Accessed from Internet on: Jul. 14, 2021, pp. 1-19. [cited by applicant]
“Jaeger: Open Source, End-to-End Distributed Tracing”, Available online at https://www.jaegertracing.io/, Accessed from Internet on: Jul. 14, 2021, pp. 1-7. [cited by applicant]
“The OpenTracing Semantic Specification”, Available online at https://opentracing.io/specification/, Accessed from Internet on: Jul. 14, 2021, pp. 1-11. [cited by applicant]
“Thread Pools”, Available online at https://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html, Accessed from Internet on: Jul. 14, 2021, 1 page. [cited by applicant]
U.S. Appl. No. 17/339,673 , “Non-Final Office Action”, filed Apr. 28, 2022, 23 pages. [cited by applicant]
U.S. Appl. No. 17/339,673 , “Notice of Allowance”, filed Oct. 18, 2022, 10 pages. [cited by applicant]
U.S. Appl. No. 17/339,676 , “Non-Final Office Action”, filed Oct. 20, 2022, 13 pages. [cited by applicant]
U.S. Appl. No. 17/339,676 , “Notice of Allowance”, filed Mar. 15, 2023, 2 pages. [cited by applicant]
U.S. Appl. No. 17/339,676 , “Notice of Allowance”, filed Feb. 8, 2023, 8 pages. [cited by applicant]
U.S. Appl. No. 17/339,680 , “Corrected Notice of Allowability”, filed May 26, 2022, 2 pages. [cited by applicant]
U.S. Appl. No. 17/339,680 , “Notice of Allowance”, filed Apr. 27, 2022, 9 pages. [cited by applicant]
U.S. Appl. No. 17/339,682 , “Corrected Notice of Allowability”, filed Aug. 7, 2023, 8 pages. [cited by applicant]
U.S. Appl. No. 17/339,682 , “Final Office Action”, filed Feb. 14, 2023, 11 pages. [cited by applicant]
U.S. Appl. No. 17/339,682 , “Non-Final Office Action”, filed Oct. 20, 2022, 10 pages. [cited by applicant]
U.S. Appl. No. 17/339,682 , “Notice of Allowance”, filed Jul. 19, 2023, 11 pages. [cited by applicant]
U.S. Appl. No. 17/855,686 , “Notice of Allowability”, filed Dec. 7, 2022, 2 pages. [cited by applicant]
U.S. Appl. No. 17/855,686 , “Notice of Allowance”, filed Sep. 21, 2022, 9 pages. [cited by applicant]
U.S. Appl. No. 17/990,576 , “Corrected Notice of Allowability”, filed Apr. 5, 2023, 14 pages. [cited by applicant]
U.S. Appl. No. 17/990,576 , “Notice of Allowance”, filed Mar. 14, 2023, 9 pages. [cited by applicant]
U.S. Appl. No. 18/152,701 , “Non-Final Office Action”, filed May 25, 2023, 37 pages. [cited by applicant]
PCT/US2021/035996, “International Search Report and the Written Opinion”, Oct. 5, 2021, 12 pages. [cited by applicant]
PCT/US2021/036003, “International Search Report and Written Opinion”, Oct. 5, 2021, 14 pages. [cited by applicant]
PCT/US2021/036007, “International Search Report and Written Opinion”, Oct. 5, 2021, 12 pages. [cited by applicant]
U.S. Appl. No. 18/140,849, “Non-Final Office Action”, mailed Nov. 8, 2023, 11 pages. [cited by applicant]
U.S. Appl. No. 18/152,701, “Notice of Allowance”, mailed Nov. 13, 2023, 12 pages. [cited by applicant]
International Application No. EP21736439.7, “Office Action”, mailed Jun. 13, 2024, 12 pages. [cited by applicant]
International Application No. EP21736123.7, “Office Action”, dated Jun. 6, 2024, 8 pages. [cited by applicant]
International Application No. EP21736124.5, “Office Action”, dated Jun. 13, 2024, 11 pages. [cited by applicant]
International Application No. JP2023-516207, Office Action, mailed on Jan. 28, 2025, 6 pages. [cited by applicant]
International Application No. JP2023-516200, “Office Action”, mailed Apr. 1, 2025, 2 pages. [cited by applicant]
International Application No. JP2023-516156, “Office Action”, mailed on May 27, 2025, 3 pages. [cited by applicant]