IP Library Granted Patent US 9,760,591
Granted Patent B2
US 9,760,591 · App. 15/154,998 · Granted Sep 12, 2017

Dynamic code loading

Inventors: Ryan Caudy (New York, NY); David R. Kent, IV (Colorado Springs, CO); Mark Zeldis (Randolph, NJ); Nathaniel J. Dorfman (Sandy, UT); Charles Wright (Cortlandt Manor, NY); Radu Teodorescu (New York, NY)
G06F17/30368G06F3/0481G06F3/0482G06F3/0485G06F3/04847G06F3/04895G06F3/0605G06F3/067G06F3/0656G06F8/30G06F8/41G06F8/427G06F8/60G06F11/1451G06F11/1464G06F11/1469G06F12/0261G06F12/084G06F15/17331G06F17/2235G06F17/24G06F17/246G06F17/276G06F17/2715G06F17/30117G06F17/30312G06F17/30315G06F17/30321G06F17/30324G06F17/30327G06F17/30333G06F17/30336G06F17/30339G06F17/30345G06F17/30371G06F17/30374G06F17/30377G06F17/30398G06F17/30424G06F17/30448G06F17/30454G06F17/30477G06F17/30522G06F17/30528G06F17/30554G06F17/30563G06F17/30584G06F17/30598G06F17/30864G06F17/30867G06F17/30887G06F17/30958G06F17/30997H04L12/18H04L51/12H04L61/2069H04L63/101H04L63/102H04L67/1002H04L67/34H04L67/42H04L69/16G06F2201/805G06F2201/84G06F2212/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 9,760,591
App. No.
15/154,998
Granted
Sep 12, 2017
Kind
B2
Abstract

Described are methods, systems and computer readable media for dynamic code loading.

Claims (77)

1. A computer data system providing dynamic code loading within a query dispatch and execution architecture, the system comprising: one or more processors; computer readable storage coupled to the one or more processors, the computer readable storage having stored thereon instructions that, when executed by the one or more processors, cause the one or more processors to perform operations including:

providing, from a client computer system, first dynamic code for execution by a remote query processor within a remote query server computer system, where the remote query processor includes an executable code environment established according to request parameters provided by a primary client on the client computer system and where the remote query processor is dedicated for processing one or more queries from the primary client;

making the first dynamic code available to the remote query processor;

loading the first dynamic code at the remote query processor;

accessing, at the remote query processor, one or more data system query tasks sent from the primary client;

executing, at the remote query processor, the one or more data system query tasks using an initial code deployment and the first dynamic code;

providing, from the client, second dynamic code while the executing is being performed by the remote query processor;

making the second dynamic code available to the remote query processor;

loading the second dynamic code at the remote query processor; and

continuing executing the one or more data system query tasks at the remote query processor using the initial code deployment, the first dynamic code and the second dynamic code, wherein the first dynamic code or the second dynamic code overrides a portion of the initial code deployment and the first dynamic code or the second dynamic code adds one or more functions to the initial code deployment.

2. The computer data system of claim 1 , wherein the first dynamic code includes code executable by one or more virtual machines and the second dynamic code includes code executable by the one or more virtual machines.

3. The computer data system of claim 1 , wherein making the first dynamic code available to the remote query processor includes persisting the first dynamic code on a server host at a URL forming part of a classpath of a virtual machine of the remote query processor.

4. The computer data system of claim 1 , wherein making the first dynamic code available to the remote query processor includes persisting on a server host at a URL that will be searched by a class loader of the remote query processor at runtime.

5. The computer data system of claim 1 , wherein the first dynamic code includes a data system query language portion, and

wherein the executing includes:

parsing the query language portion into computer code; compiling the computer code into executable code configured to be executable on a virtual machine; and

executing the executable code on the virtual machine.

6. The system of claim 1 , wherein the operations further include:

forming a first connection between the client and the remote query processor;

providing direct communication between the client and the remote query processor via the first connection; and

maintaining a second connection from the remote query processor to a remote query dispatcher while the remote query processor is in direct communication with the client.

7. The system of claim 1 , wherein the operations further include:

establishing, at a remote query dispatcher, the executable code environment, wherein the establishing includes the remote query dispatcher allocating resources and instantiating a remote query processor runtime engine.

8. The system of claim 1 , wherein the operations further comprise:

the remote query processor processing a job;

the client providing new code to the remote query processor during the processing of the job;

the remote query processor dynamically loading the new code and continuing processing the job;

the remote query processor producing from the job a result that is based at least in part on the newly loaded code.

9. A method comprising:

providing, from a client, first dynamic code for execution by a remote query processor, where the remote query processor includes an executable code environment established according to request parameters provided by the client and where the remote query processor is dedicated for processing one or more queries from the client;

making the first dynamic code available to the remote query processor;

loading the first dynamic code at the remote query processor:

receiving, at the remote query processor, one or more data system query tasks sent from the client; and

executing, at the remote query processor, the one or more data system query tasks using an initial code deployment and the first dynamic code;

providing, from the client, second dynamic code while the executing is being performed by the remote query processor;

making the second dynamic code available to the remote query processor;

loading the second dynamic code at the remote query processor; and

continuing executing the one or more data system query tasks at the remote query processor using the initial code deployment, the first dynamic code and the second dynamic code, wherein the first dynamic code or the second dynamic code overrides a portion of the initial code deployment and the first dynamic code or the second dynamic code adds one or more functions to the initial code deployment.

10. The method of claim 9 , wherein the first code includes code executable by a virtual machine and the second code includes code executable by the virtual machine.

11. The method of claim 9 , wherein making the first code available to the remote query processor includes persisting the first code on a server host at a URL forming part of a classpath of a virtual machine of the remote query processor.

12. The method of claim 9 , wherein making the first code available to the remote query processor includes persisting the first code on a server host at a URL that will be searched by a class loader of the remote query processor at runtime.

13. The method of claim 9 , wherein the second code includes a data system query language portion, and

wherein the executing includes:

parsing the query language portion into computer code; compiling the computer code into executable code configured to be executable on a virtual machine; and

executing the executable code on the virtual machine.

14. The method of claim 9 , further comprising:

forming a first connection between the client and the remote query processor;

providing direct communication between the client and the remote query processor via the first connection; and

maintaining a second connection from the remote query processor to a remote query dispatcher while the remote query processor is in direct communication with the client.

15. The method of claim 9 , further comprising:

establishing, at a remote query dispatcher, the executable code environment, wherein the establishing includes the remote query dispatcher allocating resources and instantiating a remote query processor runtime engine.

16. The method of claim 9 , further comprising:

the remote query processor processing a job;

the client providing new code to the remote query processor during the processing of the job;

the remote query processor dynamically loading the new code and continuing processing the job;

the remote query processor producing from the job a result that is based at least in part on the newly loaded code.

17. A non-transitory computer readable medium storing software instructions, executed by a processor, to:

provide, from a client computer system, first dynamic code for execution by a remote query processor within a remote query server computer system, where the remote query processor includes an executable code environment established according to request parameters provided by a primary client on the client computer system and where the remote query processor is dedicated for processing one or more queries from the primary client;

make the first dynamic code available to the remote query processor;

load the first dynamic code at the remote query processor;

access, at the remote query processor, one or more data system query tasks sent from the primary client;

execute, at the remote query processor, the one or more data system query tasks using an initial code deployment and the first dynamic code;

provide, from a client, second dynamic code before or during execution of the first dynamic code being performed by a remote query processor;

make the second dynamic code available to the remote query processor;

load the second dynamic code at the remote query processor; and

continue executing one or more data system query tasks at the remote query processor using the initial code deployment, the first dynamic code and the second dynamic code; wherein the first dynamic code or the second dynamic code overrides a portion of the initial code deployment and the first dynamic code or the second dynamic code adds one or more functions to the initial code deployment.

18. The non-transitory computer readable medium of claim 17 , wherein the first code includes code executable by a virtual machine and the second code includes code executable by the virtual machine.

19. The non-transitory computer readable medium of claim 17 , wherein the second code includes a data system query language portion, and

wherein the executing includes:

parsing the query language portion into computer code; compiling the computer code into executable code configured to be executable on a virtual machine; and

executing the executable code on the virtual machine.

20. The non-transitory computer readable medium of claim 17 , further comprising:

forming a first connection between the client and the remote query processor;

providing direct communication between the client and the remote query processor via the first connection; and

maintaining a second connection from the remote query processor to a remote query dispatcher while the remote query processor is in direct communication with the client.

21. The non-transitory computer readable medium of claim 17 , further comprising:

establishing, at a remote query dispatcher, the executable code environment, wherein the establishing includes the remote query dispatcher allocating resources and instantiating a remote query processor runtime engine.

Assignments (3)
CHANGE OF NAME Recorded Sep 5, 2018
From: ILLUMON LLC
To: DEEPHAVEN DATA LABS LLC
Reel/Frame 047017/0500 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2017
From: RIES, BRIAN; FERRETTI-SMYTHE, JUAN CRISTIAN; WRIGHT, CHARLES; VYDROV, OLEG; CAUDY, RYAN; KENT, DAVID R., IV; DORFMAN, NATHANIEL J.; TEODORESCU, RADU; ZELDIS, MARK; BRONNIMANN, HERVE; BASRALIAN, RAFFI
To: ILLUMON LLC
Reel/Frame 044557/0029 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2017
From: WALLEYE SOFTWARE, LLC
To: ILLUMON LLC
Reel/Frame 043722/0092 →
Continuity (2)
Provisional Application 62161813 · May 14, 2015
Related Publication 20160335062A1 · Nov 17, 2016