IP Library Granted Patent US 11,915,044
Granted Patent B2
US 11,915,044 · App. 17/343,508 · Granted Feb 27, 2024

Distributed task assignment in a cluster computing system

Inventors: Manu Jose, Jr. (Milpitas, CA); Sanish N. Mahadik (Santa Clara, CA); Vishal Patel (San Francisco, CA); Joshua Weinstein (Milpitas, CA)
Assignee: Splunk Inc.
G06F9/4881G06F9/5072G06F9/542
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,915,044
App. No.
17/343,508
Granted
Feb 27, 2024
Kind
B2
Abstract

A processing node selects a first task from a task list and sends, to a task assignment repository, a first write operation with a first task identifier of the first task to assign the first task to the processing node. The processing node detects failure of the first write operation based on the first task already being assigned and selects a second task from the task list. The processing node sends, to the task assignment repository, a second write operation with a second task identifier of the second task to assign the second task to the processing node. The processing node detects success of the second write operation and executes the second task.

Claims (85)

1. A computer-implemented method, comprising:

selecting, by a processing node of a cluster of processing nodes, a first task from a task list;

sending, by the processing node to a task assignment repository, a first write operation with a first task identifier of the first task to assign the first task to the processing node;

detecting, by the processing node, failure of the first write operation based on the first task already being assigned;

selecting, by the processing node, a second task from the task list;

sending, by the processing node to the task assignment repository, a second write operation with a second task identifier of the second task to assign the second task to the processing node;

detecting, by the processing node, success of the second write operation; and

executing, by the processing node, the second task.

2. The computer-implemented method of claim 1 , further comprising:

sending third write operation to update a limit timer for the second task;

detecting failure of the third write operation indicating that the second task is reclaimed; and

stopping execution of the second task.

3. The computer-implemented method of claim 1 , further comprising:

writing a checkpoint in a local checkpoint storage,

wherein the checkpoint is replicated across the cluster of processing nodes responsive to modifying the local checkpoint storage.

4. The computer-implemented method of claim 1 , further comprising:

checking a balance table for a balancing of tasks assigned to processing nodes in the cluster of processing nodes,

wherein the selecting of the first task is responsive to a response from the balance table.

5. The computer-implemented method of claim 1 , further comprising:

checking a balance table for a balancing of tasks assigned to processing nodes in the cluster of processing nodes,

receiving an indication from the balance table that processing node is assigned a least number of tasks,

wherein the selecting of the first task is responsive to a response from the balance table; and

sending a request to increase a count in the balance table based on the success of the second write operation.

6. The computer-implemented method of claim 1 , further comprising:

receiving custom ingest code from a host device at a plurality of processing nodes in the cluster;

creating the second task in the task list for the custom ingest code; and

storing the custom ingest code.

7. The computer-implemented method of claim 1 , further comprising:

receiving custom ingest code from a client computing device at a plurality of processing nodes in the cluster;

creating the second task in the task list for the custom ingest code; and

storing the custom ingest code,

wherein executing the second task comprises executing the custom ingest code to obtain data from a data storage and store the data in an event storage.

8. The computer-implemented method of claim 1 , wherein executing the second task comprises performing an ingest operation to store data from data storage into event storage.

9. The computer-implemented method of claim 1 , further comprising:

storing a plurality of task identifiers in a heap data structure, each task identifier associated with a corresponding limit timer in the heap data structure;

checking, continually, a timeout of the corresponding limit timer for each of the plurality of task identifiers in the heap data structure; and

removing, in the task assignment repository, an association between a task identifier and a node identifier when the timeout is reached.

10. The computer-implemented method of claim 1 , wherein the first write operation and the second write operation are atomic operations.

11. The computer-implemented method of claim 1 , wherein the task assignment repository is a centralized storage repository amongst the cluster of processing nodes, wherein the centralized storage repository comprising a plurality of distributed replicas.

12. A computing device, comprising:

a processor; and

a non-transitory computer-readable medium having stored thereon instructions that, when executed by the processor, cause the processor to perform operations including:

selecting, by a processing node of a cluster of processing nodes, a first task from a task list,

sending, by the processing node to a task assignment repository, a first write operation with a first task identifier of the first task to assign the first task to the processing node,

detecting, by the processing node, failure of the first write operation based on the first task already being assigned,

selecting, by the processing node, a second task from the task list,

sending, by the processing node to the task assignment repository, a second write operation with a second task identifier of the second task to assign the second task to the processing node,

detecting, by the processing node, success of the second write operation, and

executing, by the processing node, the second task.

13. The computing device of claim 12 , wherein the operations further comprises:

sending third write operation to update a limit timer for the second task,

detecting failure of the third write operation indicating that the second task is reclaimed, and

stopping execution of the second task.

14. The computing device of claim 12 , wherein the operations further comprises:

writing a checkpoint in a local checkpoint storage,

wherein the checkpoint is replicated across the cluster of processing nodes responsive to modifying the local checkpoint storage.

15. The computing device of claim 12 , wherein the operations further comprises:

checking a balance table for a balancing of tasks assigned to processing nodes in the cluster of processing nodes,

wherein the selecting of the first task is responsive to a response from the balance table.

16. The computing device of claim 12 , wherein the operations further comprises:

checking a balance table for a balancing of tasks assigned to processing nodes in the cluster of processing nodes,

receiving an indication from the balance table that processing node is assigned a least number of tasks,

wherein the selecting of the first task is responsive to a response from the balance table, and

sending a request to increase a count in the balance table based on the success of the second write operation.

17. The computing device of claim 12 , wherein the operations further comprises:

receiving custom ingest code from a host device at a plurality of processing nodes in the cluster,

creating the second task in the task list for the custom ingest code, and

storing the custom ingest code.

18. The computing device of claim 12 , wherein the operations further comprises:

receiving custom ingest code from a client computing device at a plurality of processing nodes in the cluster,

creating the second task in the task list for the custom ingest code, and

storing the custom ingest code,

wherein executing the second task comprises executing the custom ingest code to obtain data from a data storage and store the data in an event storage.

19. A non-transitory computer-readable medium having stored thereon instructions that, when executed by one or more processors, cause the one or more processor to perform operations including:

selecting, by a processing node of a cluster of processing nodes, a first task from a task list;

sending, by the processing node to a task assignment repository, a first write operation with a first task identifier of the first task to assign the first task to the processing node;

detecting, by the processing node, failure of the first write operation based on the first task already being assigned;

selecting, by the processing node, a second task from the task list;

sending, by the processing node to the task assignment repository, a second write operation with a second task identifier of the second task to assign the second task to the processing node;

detecting, by the processing node, success of the second write operation; and

executing, by the processing node, the second task.

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

sending third write operation to update a limit timer for the second task,

detecting failure of the third write operation indicating that the second task is reclaimed, and

stopping execution of the second task.

Assignments (4)
CHANGE OF NAME Recorded Jul 22, 2025
From: SPLUNK INC.
To: SPLUNK LLC
Reel/Frame 072170/0599 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2025
From: SPLUNK LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 072173/0058 →
CHANGE OF NAME Recorded Jan 6, 2025
From: SPLUNK INC.
To: SPLUNK LLC
Reel/Frame 069825/0558 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2021
From: JOSE, MANU, JR.; MAHADIK, SANISH N.; PATEL, VISHAL; WEINSTEIN, JOSHUA
To: SPLUNK INC.
Reel/Frame 056589/0533 →
Continuity (1)
Related Publication 20220398128A1 · Dec 15, 2022
Cited By (1)
US 12,254,311