IP Library Granted Patent US 10,372,492
Granted Patent B2
US 10,372,492 · App. 14/103,671 · Granted Aug 6, 2019

Job-processing systems and methods with inferred dependencies between jobs

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,492
App. No.
14/103,671
Granted
Aug 6, 2019
Kind
B2
Abstract

An analytics system that executes processing jobs infers dependencies between jobs to be executed based on identification of dependencies between a “sink” job and a source data object on which the sink job depends. Given a job definition for the sink job that identifies a source data object, the system can identify a “source” job that produces the source data object and can infer a dependency of the sink job on the source job. The system can schedule executions of the source and sink jobs such that the source job completes (or completes generation of the source data object) before the sink job is launched.

Claims (63)

1. A computer-implemented method comprising:

receiving, at a computer system, via graphical user interface controls of a job creation graphical user interface, a plurality of job definitions for a plurality of jobs, each job definition of the plurality of job definitions specifying at least a source data object to provide input data to be consumed by the job, and an output data object to store output data produced by the job;

wherein the plurality of job definitions includes a first job definition and a second job definition;

wherein the plurality of jobs includes a first job and a second job;

wherein the first job definition is for the first job;

wherein the second job definition is for the second job;

automatically inferring, by the computer system, a first dependency of the first job on the second job;

wherein the automatically inferring the first dependency is based at least in part on automatically determining that the source data object specified in the first job definition is the output data object specified in the second job definition;

based at least in part on the automatically inferring the first dependency, dispatching, by the computer system, a first plurality of job instances for execution, wherein the dispatching the first plurality of job instances is controlled such that a first instance of the first job, of the first plurality of job instances, is blocked from being dispatched until after a first instance of the second job, of the first plurality of job instances, completes;

after the dispatching the first plurality of job instances for execution, receiving, at the computer system, via graphical user interface controls of the job creation graphical user interface, a third job definition;

wherein the third job definition is for a third job;

wherein the third job definition specifies at least a source data object to provide input data to be consumed by the third job, and an output data object to store output data produced by the third job;

based at least on the third job definition, automatically inferring, by the computer system, a second dependency;

wherein the second dependency is the first job on the third job;

wherein the second dependency is automatically inferred based at least in part on automatically determining that the source data object specified in the first job definition is the output data object specified in the third job definition; and

based at least in part on the automatically inferring the first dependency and the automatically inferring the second dependency, dispatching, by the computer system, a second plurality of job instances for execution, wherein the dispatching the second plurality of job instances is controlled such that a second instance of the first job, of the second plurality of job instances, is blocked from being dispatched until after both: (a) a second instance of the second job, of the second plurality of job instances, completes, and (b) a first instance of the third job, of the second plurality of job instances, completes.

2. The computer-implemented method of claim 1 wherein at least one job definition of the plurality of job definitions specifies whether a dependency on the source data object, of the at least one job definition, is an interval dependency such that the source data object, of the at least one job definition, contains data associated with a specified time interval or a snapshot dependency such that the source data object, of the at least one job definition, contains a snapshot of data reflective of a current condition at a specified snapshot time.

3. The computer-implemented method of claim 1 wherein at least one job definition of the plurality of job definitions specifies whether the output data object comprises a snapshot of data or data for a time interval.

4. The computer-implemented method of claim 1 wherein at least one job definition of the plurality of job definitions specifies that the output data object comprises data for a time interval, the at least one job definition of the plurality of job definitions further specifies a duration of the time interval.

5. The computer-implemented method of claim 1 , wherein a database job definition, of the plurality of job definitions, of a database job, of the plurality of jobs, specifies the source data object to provide input data to be consumed by the database job, as part of a database query.

6. One or more non-transitory computer-readable media storing one or more programs for execution by one or more processing units, the one or more programs comprising instructions configured for:

receiving, at a computer system, via graphical user interface controls of a job creation graphical user interface, a plurality of job definitions for a plurality of jobs, each job definition of the plurality of job definitions specifying at least a source data object to provide input data to be consumed by the job, and an output data object to store output data produced by the job;

wherein the plurality of job definitions includes a first job definition and a second job definition;

wherein the plurality of jobs includes a first job and a second job;

wherein the first job definition is for the first job;

wherein the second job definition is for the second job;

automatically inferring, by the computer system, a first dependency of the first job on the second job;

wherein the automatically inferring the first dependency is based at least in part on automatically determining that the source data object specified in the first job definition is the output data object specified in the second job definition;

based at least in part on the automatically inferring the first dependency, dispatching, by the computer system, a first plurality of job instances for execution, wherein the dispatching the first plurality of job instances is controlled such that a first instance of the first job, of the first plurality of job instances, is blocked from being dispatched until after a first instance of the second job, of the first plurality of job instances, completes;

after the dispatching the first plurality of job instances for execution, receiving, at the computer system, via graphical user interface controls of the job creation graphical user interface, a third job definition;

wherein the third job definition is for a third job;

wherein the third job definition specifies at least a source data object to provide input data to be consumed by the third job, and an output data object to store output data produced by the third job;

based at least on the third job definition, automatically inferring, by the computer system, a second dependency;

wherein the second dependency is the first job on the third job;

wherein the second dependency is automatically inferred based at least in part on automatically determining that the source data object specified in the first job definition is the output data object specified in the third job definition; and

based at least in part on the automatically inferring the first dependency and the automatically inferring the second dependency, dispatching, by the computer system, a second plurality of job instances for execution, wherein the dispatching the second plurality of job instances is controlled such that a second instance of the first job, of the second plurality of job instances, is blocked from being dispatched until after both: (a) a second instance of the second job, of the second plurality of job instances, completes, and (b) a first instance of the third job, of the second plurality of job instances, completes.

7. The one or more non-transitory computer-readable media of claim 6 wherein at least one job definition of the plurality of job definitions specifies whether a dependency on the source data object, of the at least one job definition, is an interval dependency such that the source data object, of the at least one job definition, contains data associated with a specified time interval or a snapshot dependency such that the source data object, of the at least one job definition, contains a snapshot of data reflective of a current condition at a specified snapshot time.

8. The one or more non-transitory computer-readable media of claim 6 wherein at least one job definition of the plurality of job definitions specifies whether the output data object comprises a snapshot of data or data for a time interval.

9. The one or more non-transitory computer-readable media of claim 6 wherein at least one job definition of the plurality of job definitions specifies that the output data object comprises data for a time interval, the at least one job definition of the plurality of job definitions further specifies a duration of the time interval.

10. The one or more non-transitory computer-readable media of claim 6 , wherein a database job definition, of the plurality of job definitions, of a database job, of the plurality of jobs, specifies the source data object to provide input data to be consumed by the database job, as part of a database query.

11. A computer system comprising:

one or more processing units;

memory;

one or more programs stored in the memory and configured for execution by the one or more processing units, the one or more programs comprising instructions configured for:

receiving, at the computer system, via graphical user interface controls of a job creation graphical user interface, a plurality of job definitions for a plurality of jobs, each job definition of the plurality of job definitions specifying at least a source data object to provide input data to be consumed by the job, and an output data object to store output data produced by the job;

wherein the plurality of job definitions includes a first job definition and a second job definition;

wherein the plurality of jobs includes a first job and a second job;

wherein the first job definition is for the first job;

wherein the second job definition is for the second job;

automatically inferring, by the computer system, a first dependency of the first job on the second job;

wherein the automatically inferring the first dependency is based at least in part on automatically determining that the source data object specified in the first job definition is the output data object specified in the second job definition;

based at least in part on the automatically inferring the first dependency, dispatching, by the computer system, a first plurality of job instances for execution, wherein the dispatching the first plurality of job instances is controlled such that a first instance of the first job, of the first plurality of job instances, is blocked from being dispatched until after a first instance of the second job, of the first plurality of job instances, completes;

after the dispatching the first plurality of job instances for execution, receiving, at the computer system, via graphical user interface controls of the job creation graphical user interface, a third job definition;

wherein the third job definition is for a third job;

wherein the third job definition specifies at least a source data object to provide input data to be consumed by the third job, and an output data object to store output data produced by the third job;

based at least on the third job definition, automatically inferring, by the computer system, a second dependency;

wherein the second dependency is the first job on the third job;

wherein the second dependency is automatically inferred based at least in part on automatically determining that the source data object specified in the first job definition is the output data object specified in the third job definition; and

based at least in part on the automatically inferring the first dependency and the automatically inferring the second dependency, dispatching, by the computer system, a second plurality of job instances for execution, wherein the dispatching the second plurality of job instances is controlled such that a second instance of the first job, of the second plurality of job instances, is blocked from being dispatched until after both: (a) a second instance of the second job, of the second plurality of job instances, completes, and (b) a first instance of the third job, of the second plurality of job instances, completes.

12. The computer system of claim 11 wherein at least one job definition of the plurality of job definitions specifies whether a dependency on the source data object, of the at least one job definition, is an interval dependency such that the source data object, of the at least one job definition, contains data associated with a specified time interval or a snapshot dependency such that the source data object, of the at least one job definition, contains a snapshot of data reflective of a current condition at a specified snapshot time.

13. The computer system of claim 11 wherein at least one job definition of the plurality of job definitions specifies whether the output data object comprises a snapshot of data or data for a time interval.

14. The computer system of claim 11 wherein at least one job definition of the plurality of job definitions specifies that the output data object comprises data for a time interval, the at least one job definition of the plurality of job definitions further specifies a duration of the time interval.

15. The computer system of claim 11 , wherein a database job definition, of the plurality of job definitions, of a database job, of the plurality of jobs, specifies the source data object to provide input data to be consumed by the database job, as part of a database query.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069635/0332 →
RELEASE OF SECURITY INTEREST Recorded Dec 12, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069613/0744 →
SECURITY INTEREST Recorded Dec 12, 2024
From: DROPBOX, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069604/0611 →
RELEASE OF SECURITY INTEREST Recorded Dec 11, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069600/0149 →
PATENT SECURITY AGREEMENT Recorded Mar 10, 2021
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 055670/0219 →
SECURITY INTEREST Recorded Apr 14, 2017
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 042254/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2014
From: KISHORE, SHAUNAK; DRAY, KARL
To: DROPBOX, INC.
Reel/Frame 033422/0537 →
SECURITY INTEREST Recorded Mar 24, 2014
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 032510/0890 →