IP Library Granted Patent US 12,499,249
Granted Patent B2
US 12,499,249 · App. 18/808,863 · Granted Dec 16, 2025

Node-driven leadership transitions in node clusters

Inventors: Ian Juch (Portland, OR); Tyler Power (Kaiapoi, NZ)
Assignee: PURE STORAGE, INC.
G06F21/602G06F16/215G06F16/2365G06F16/2379H04L9/0643H04L9/0891
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,499,249
App. No.
18/808,863
Granted
Dec 16, 2025
Kind
B2
Abstract

Transitioning leadership in a cluster of nodes, including: initiating, by two or more nodes among a cluster of nodes, a leadership transition, wherein: a first node transmits a first secret key identifier to each of the other nodes in the cluster of nodes; and a second node transmits a second secret key identifier to each of the other nodes in the cluster of nodes; updating, by each node and based at least in part on a resolution policy, the current secret key identifier to be the second secret key identifier instead of the first secret key identifier; and transitioning, based at least in part on the second secret key identifier being selected to be the current secret key identifier, the second node to be a leader node of the cluster of nodes.

Claims (51)

1 . A method comprising:

initiating a leadership transition to a new leader node among a cluster of nodes, wherein one or more nodes of the cluster of nodes transmit secret key identifiers to other nodes in the cluster of nodes;

selecting, based at least in part on a resolution policy, a secret key identifier associated with a first node, of the one or more nodes, that is distinct from a current leader node; and

transitioning, based at least in part on the selected secret key identifier being selected to be a current secret key identifier, the first node to be the new leader node of the cluster of nodes.

2 . The method of claim 1 , wherein the leadership transition is initiated by at least one node in the cluster of nodes, wherein the cluster of nodes are included in a deduplication cluster that comprises multiple servers within an intermediate computing system between one or more client devices and a backend cloud storage service.

3 . The method of claim 2 , wherein a data store on the intermediate computing system uses a consistent data storage model, and wherein the data store for the backend cloud storage service uses an eventually consistent data storage model.

4 . The method of claim 1 , wherein the method further comprises:

receiving, via an application program interface of a front-end process, a stream of data;

splitting the stream of data into blocks of data;

hashing the blocks of data;

determining, whether a hash value for a block of data from among the blocks of data, is a duplicate of a hash value for a stored block of data;

responsive to the hash value for the block of data not matching the hash value for the stored block of data, routing the block of data to a process from among the cluster of nodes; and

repeating, for each given hash for a given block of data of the blocks of data:

determining whether the given hash is a duplicate of some hash value for some stored block of data, and

responsive to the given hash value for the given block of data not matching some hash value for some stored block of data, routing the given block of data to a process from among the cluster of nodes.

5 . The method of claim 4 , further comprising:

distributing, to different ones of the cluster of nodes, hashed blocks of data that are not duplicates of stored data.

6 . The method of claim 5 , further comprising:

sending, from a process that has received a hashed block of data to a remote data store, one or more portions of the block of data, wherein the one or more portions of the block of data correspond to one or more transactions.

7 . The method of claim 6 , wherein the one or more transactions are recorded within a transaction log for the process, and wherein each process among the cluster of nodes generates a transaction log corresponding to data sent to the remote data store.

8 . The method of claim 7 , wherein the front-end process receives the stream of bytes of data from a client device via a communication interface that is compatible with a communication interface provided by the remote data store.

9 . The method of claim 7 , wherein the remote data store is an object store provided by a cloud services provider.

10 . The method of claim 1 , wherein at least one process among the cluster of nodes operates in parallel with at least one other process among the cluster of nodes.

11 . A system comprising:

a memory; and

a processing device operably coupled to the memory, the processing device configured to:

initiate a leadership transition to a new leader node among a cluster of nodes, wherein one or more nodes of the cluster of nodes transmit secret key identifiers to other nodes in the cluster of nodes;

select, based at least in part on a resolution policy, a secret key identifier associated with a first node, of the one or more nodes, that is distinct from a current leader node; and

transition, based at least in part on the selected secret key identifier being selected to be a current secret key identifier, the first node to be the new leader node of the cluster of nodes.

12 . The system of claim 11 , wherein the system comprises multiple servers within an intermediate computing system between one or more client devices and a backend cloud storage service.

13 . The system of claim 12 , wherein a data store on the intermediate computing system uses a consistent data storage model, and wherein the data store for the backend cloud storage service uses an eventually consistent data storage model.

14 . The system of claim 11 , wherein the processing device is further configured to:

receive, via an application program interface of a front-end process, a stream of data;

split the stream of data into blocks of data;

hashing the blocks of data;

determine, whether a hash value for a block of data from among the blocks of data, is a duplicate of a hash value for a stored block of data;

responsive to the hash value for the block of data not matching the hash value for the stored block of data, route the block of data to a process from among the cluster of nodes; and

repeat, for each given hash for a given block of data of the blocks of data:

determine whether the given hash is a duplicate of some hash value for some stored block of data, and

responsive to the given hash value for the given block of data not matching some hash value for some stored block of data, route the given block of data to a process from among the cluster of nodes.

15 . The system of claim 14 , wherein the processing device is further configured to:

distribute, to different ones of the cluster of nodes, hashed blocks of data that are not duplicates of stored data.

16 . The system of claim 15 , wherein the processing device is further configured to:

send, from a process that has received a hashed block of data to a remote data store, one or more portions of the block of data, wherein the one or more portions of the block of data correspond to one or more transactions.

17 . The system of claim 16 , wherein the one or more transactions are recorded within a transaction log for the process, and wherein each process among the cluster of nodes generates a transaction log corresponding to data sent to the remote data store.

18 . The system of claim 17 , wherein the front-end process receives the stream of bytes of data from a client device via a communication interface that is compatible with a communication interface provided by the remote data store.

19 . The system of claim 17 , wherein the remote data store is an object store provided by a cloud services provider.

20 . A non-transitory computer readable medium storing instructions that, when executed, cause a processing device to:

initiate a leadership transition to a new leader node among a cluster of nodes, wherein one or more nodes of the cluster of nodes transmit secret key identifiers to other nodes in the cluster of nodes;

select, based at least in part on a resolution policy, a secret key identifier associated with a first node, of the one or more nodes, that is distinct from a current leader node; and

transition, based at least in part on the selected secret key identifier being selected to be a current secret key identifier, the first node to be the new leader node of the cluster of nodes.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 20, 2024
From: JUCH, IAN; POWER, TYLER
To: PURE STORAGE, INC.
Reel/Frame 068342/0380 →
Continuity (6)
Continuation 17902413 · Sep 2, 2022
Continuation 16741435 · Jan 13, 2020
Continuation In Part 16255763 · Jan 23, 2019
Provisional Application 62663848 · Apr 27, 2018
Provisional Application 62662216 · Apr 24, 2018
Related Publication 20240411903A1 · Dec 12, 2024
References Cited (48)
US 7958356B1 · Subramanian et al. · 2011 [cited by applicant]
US 8055735B2 · Krishnappa et al. · 2011 [cited by applicant]
US 8285993B1 · Subramanian et al. · 2012 [cited by applicant]
US 8706914B2 · Duchesneau · 2014 [cited by applicant]
US 8719564B2 · Hong et al. · 2014 [cited by applicant]
US 8918478B2 · Ozzie et al. · 2014 [cited by applicant]
US 9275063B1 · Natanzon · 2016 [cited by applicant]
US 9641614B2 · Kuznetsov et al. · 2017 [cited by applicant]
US 9910742B1 · Faibish et al. · 2018 [cited by applicant]
US 10185495B2 · Katsuki · 2019 [cited by applicant]
US 11108540B2 · Ponnuswamy et al. · 2021 [cited by applicant]
US 11593210B2 · Zad Tootaghaj et al. · 2023 [cited by applicant]
US 20090245518A1 · Bae · 2009 [cited by examiner]
US 20110185149A1 · Gruhl · 2011 [cited by examiner]
US 20110289344A1 · Bae et al. · 2011 [cited by applicant]
US 20120265742A1 · Burckhardt · 2012 [cited by examiner]
US 20120272051A1 · Chittigala et al. · 2012 [cited by applicant]
US 20150100746A1 · Rychlik et al. · 2015 [cited by applicant]
US 20150169875A1 · Ide et al. · 2015 [cited by applicant]
US 20160034566A1 · Rahut · 2016 [cited by examiner]
US 20160142485A1 · Mitkar et al. · 2016 [cited by applicant]
US 20170155713A1 · Powell et al. · 2017 [cited by applicant]
US 20170199922A1 · Gardner · 2017 [cited by examiner]
US 20180074748A1 · Makin et al. · 2018 [cited by applicant]
US 20180081561A1 · Todd · 2018 [cited by examiner]
US 20180196609A1 · Niesen · 2018 [cited by examiner]
US 20180227363A1 · Xiang · 2018 [cited by applicant]
US 20190108350A1 · Bohli · 2019 [cited by examiner]
US 20190121705A1 · Mayo · 2019 [cited by examiner]
US 20190392072A1 · Ben-Romdhane et al. · 2019 [cited by applicant]
US 20200036647A1 · Gupta · 2020 [cited by examiner]
US 20200133668A1 · Chen · 2020 [cited by examiner]
US 20200219093A1 · Malhotra · 2020 [cited by examiner]
US 20200250655A1 · Naqvi · 2020 [cited by examiner]
US 20200257593A1 · Zhou · 2020 [cited by examiner]
US 20210320977A1 · Huang · 2021 [cited by examiner]
US 20210391984A1 · Florit et al. · 2021 [cited by applicant]
US 20220094690A1 · Tarkhanyan et al. · 2022 [cited by applicant]
US 20220156114A1 · Nagpal et al. · 2022 [cited by applicant]
US 20220335086A1 · Chen · 2022 [cited by examiner]
US 20250007735A1 · Dewan et al. · 2025 [cited by applicant]
US 20250094295A1 · Sun et al. · 2025 [cited by applicant]
WO WO0213033A1 · 2002 [cited by applicant]
WO WO2008103569A1 · 2008 [cited by applicant]
Frakes Dan, “Up close with Mountain Lion: Power Nap (Frakes, Dan, Working Mac—Up close with Mountain Lion: Power Nap, Macworld.com,”Aug. 1, 2012, pp. 1-6. [cited by applicant]
Kim J-K., et al., “Data Access Frequency Based Data Replication Method Using Erasure Codes in Cloud Storage System,” Journal of the Institute of Electronics and Information Engineers, Feb. 2014, vol. 51, No. 2, pp. 85-9… [cited by applicant]
Schmid P., “RAID Scaling Charts, Part 3: 4-128 kB Stripes Compared,” Tom's Hardware, Nov. 27, 2007, 24 Pages, XP055363126, Retrieved from URL: http://www.tomshardware.com/reviews/RAID-SCALING-CHARTS.1735-4.html. [cited by applicant]
Wong T.M., et al., “Verifiable Secret Redistribution for Archive Systems,” Proceedings on First International IEEE Security in Storage Workshop (SISW'02), IEEE Xplore, Dec. 2002, 12 pages, DOI: 10.1109/SISW.2002.1183515. [cited by applicant]