# US 10,771,365 B2 · Optimizing timeout settings for nodes in a workflow

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,771,365 B2
- Document ID: US10771365B2
- Status: Granted
- Kind: B2
- Application number: 15/854,218
- Filed: 2017-12-26
- Published: 2019-06-27
- Granted: 2020-09-08
- Earliest claimed: 2017-12-26
- Assignees: Paypal, Inc.
- Applicants: PayPal, Inc.
- Inventors: Srinivasan Manoharan; Joydeep Hazra; Shivam Pandey
- Web page: https://patentgrep.com/patent/US10771365B2

## CPC

- H04L 43/0858: {One way delays}
- G06F 9/5072: {Grid computing}
- G06F 11/3419: {by assessing time}
- G06F 16/9024: {Graphs; Linked lists (G06F16/9027 takes precedence)}
- H04L 41/5006: Creating or negotiating SLA contracts, guarantees or penalties
- H04L 43/0852: Delays
- H04L 43/16: Threshold monitoring
- H04L 69/28: Timers or timing mechanisms used in protocols
- H04L 69/40: for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection (management of faults, events, alarms or notifications in data switching networks H04L41/06)
- G06F 11/0709: {in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems}
- G06F 11/0757: {by exceeding a time limit, i.e. time-out, e.g. watchdogs}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A unidirectional workflow execution engine is accessed. The unidirectional workflow includes at least a first node and a second node, where the first node is executed before the second node. A timeout setting of the first node is retrieved. An actual execution time of the first node is determined. A difference between the retrieved timeout setting and the actual execution time of the first node is calculated. A timeout setting of the second node is retrieved. The timeout setting of the second node is modified by adding, to the retrieved timeout setting of the second node, the calculated difference between the retrieved timeout setting and the execution time of the first node.

## Claims

### Claim 1

A system, comprising:
a non-transitory memory; and
one or more hardware processors coupled to the non-transitory memory and configured to read instructions from the non-transitory memory to cause the system to perform operations comprising:
accessing a unidirectional workflow execution engine that includes a plurality of nodes that each executes an Application Programming Interface (API) in a cloud computing environment, wherein the plurality of nodes include at least a first node and a second node, the first node being executed before the second node;
retrieving a timeout setting of the first node;
determining an execution time of the first node;
calculating a difference between the retrieved timeout setting and the execution time of the first node;
retrieving a timeout setting of the second node; and
modifying the timeout setting of the second node by adding, to the retrieved timeout setting of the second node, the calculated difference between the retrieved timeout setting and the execution time of the first node.

### Claim 2 (depends on 1)

The system of claim 1, wherein:
a first subset of the plurality of nodes are compute nodes;
a second subset of the plurality of nodes are input/output (TO) nodes; and
the first node and the second node are IO nodes.

### Claim 3 (depends on 2)

The system of claim 2, wherein the IO nodes take a longer time to execute than the compute nodes.

### Claim 4 (depends on 2)

The system of claim 2, wherein at least some of the nodes of the plurality of nodes are executed in parallel to one another.

### Claim 5 (depends on 1)

The system of claim 1, wherein the unidirectional workflow execution engine executes a workflow that is in a form of a Directed Acyclic Graph (DAG).

### Claim 6 (depends on 5)

The system of claim 5, wherein the workflow specifies an overall service level agreement (SLA) timeout setting.

### Claim 7 (depends on 6)

The system of claim 6, wherein the overall SLA timeout setting is provided by a client of the workflow.

### Claim 8 (depends on 6)

The system of claim 6, wherein the operations further comprise:
returning an error in response to a determination that an overall execution time of the workflow exceeds the specified overall SLA timeout setting.

### Claim 9 (depends on 6)

The system of claim 6, wherein the operations further comprise:
returning an error in response to a determination that an execution time of the second node exceeds the modified timeout setting of the second node.

### Claim 10 (depends on 1)

The system of claim 1, wherein the timeout setting of the first node or of the second node is retrieved dynamically during an execution of the unidirectional workflow execution engine.

### Claim 11 (depends on 10)

The system of claim 10, wherein the timeout setting of the first node or of the second node is retrieved dynamically via an application hook upon an execution of the first node or the second node.

### Claim 12 (depends on 1)

The system of claim 1, wherein the operations further comprise:
determining a value of a flag associated with the second node; and
disabling the modifying in response to the value of the flag indicating that the modifying should not be performed.

### Claim 13

A method, comprising:
accessing a unidirectional workflow execution engine that includes a first node and a second node, the first node being executed before the second node;
retrieving a timeout setting of the first node dynamically via an application hook during an execution of the first node, the application hook containing Java computer programming code;
determining an execution time of the first node;
calculating a difference between the retrieved timeout setting and the execution time of the first node;
retrieving a timeout setting of the second node dynamically via the application hook during an execution of the second node; and
modifying the timeout setting of the second node by adding, to the retrieved timeout setting of the second node, the calculated difference between the retrieved timeout setting and the execution time of the first node.

### Claim 14 (depends on 13)

The method of claim 13, wherein:
the unidirectional workflow execution engine includes a plurality of nodes that include the first node and the second node;
a first subset of the plurality of nodes are compute nodes;
a second subset of the plurality of nodes are input/output (TO) nodes;
the first node and the second node are IO nodes;
the IO nodes take a longer time to execute than the compute nodes; and
at least some of the nodes of the plurality of nodes are executed in parallel to one another.

### Claim 15 (depends on 13)

The method of claim 13, wherein the unidirectional workflow execution engine executes a workflow that is in a form of a Directed Acyclic Graph (DAG), and wherein the workflow specifies an overall service level agreement (SLA) timeout setting.

### Claim 16 (depends on 15)

The method of claim 15, further comprising:
returning an error in response to a determination that an overall execution time of the workflow exceeds the specified overall SLA timeout setting; or
returning an error in response to a determination that an execution time of the second node exceeds the modified timeout setting of the second node.

### Claim 17 (depends on 13)

The method of claim 13, wherein:
the unidirectional workflow execution engine includes a plurality of nodes, wherein each node from the plurality of nodes executes an Application Programming Interface (API) in a cloud computing environment, the plurality of nodes including the first node and the second node.

### Claim 18 (depends on 13)

The method of claim 13, further comprising:
determining a value of a flag associated with the second node; and
disabling the modifying in response to the value of the flag indicating that the modifying should not be performed.

### Claim 19

A non-transitory machine-readable medium having stored thereon machine-readable instructions executable to cause a machine to perform operations comprising:
accessing a unidirectional workflow execution engine that comprises a plurality of nodes, wherein each node from the plurality of nodes executes an Application Programming Interface (API) in a cloud computing environment, and wherein the plurality of nodes include a first node and a second node executed before the first node;
retrieving a timeout setting of the first node dynamically via an application hook upon an execution of the first node, the application hook containing Java computer programming code;
determining an execution time of the first node;
calculating a difference between the retrieved timeout setting and the execution time of the first node;
retrieving a timeout setting of the second node dynamically via the application hook upon an execution of the second node; and
modifying the timeout setting of the second node by adding, to the retrieved timeout setting of the second node, the calculated difference between the retrieved timeout setting and the execution time of the first node.

### Claim 20 (depends on 19)

The non-transitory machine-readable medium of claim 19, wherein:
a first subset of the plurality of nodes are compute nodes;
a second subset of the plurality of nodes are input/output (TO) nodes;
the first node and the second node are IO nodes;
the IO nodes take a longer time to execute than the compute nodes; and
at least some of the nodes of the plurality of nodes are executed in parallel to one another.
