IP Library Granted Patent US 12,657,097
Granted Patent B2
US 12,657,097 · App. 18/403,690 · Granted Jun 16, 2026

System and method for availability group database patching

Inventors: Rohan Mohan Rayaraddi (Bangalore, IN); Tarun Mehta (Bangalore, IN)
Assignee: Nutanix, Inc.
G06F11/2025G06F8/65G06F9/5038G06F11/0793G06F11/1433G06F11/1464G06F11/2069G06F11/2094G06F2201/80
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,657,097
App. No.
18/403,690
Filed
Jan 3, 2024
Granted
Jun 16, 2026
Kind
B2
Examiner
XU, MICHAEL
Art Unit
2113
USPC
714/13
Abstract

A patching operation on an availability group cluster having a plurality of nodes is disclosed. The patching operation is performed in a plurality of iterations, each including determining a current state of each of the plurality of nodes, selecting a next node based on the current state, and patching the next node. A secondary replica node is selected as the next node before the a primary replica node. Each secondary replica node is patched in accordance with a first priority, upon patching each of the secondary replica node, a failover target node for patching the primary replica node is selected, the failover target node is selected based on a second priority, and according to the second priority, a healthy synchronous secondary replica node of the plurality of nodes is selected as the failover target node before an unhealthy synchronous secondary replica node of the plurality of nodes.

Claims (83)

1 . A method comprising:

receiving, by a processor executing computer-readable instructions stored on a memory, a request for patching a plurality of nodes, each of the plurality of nodes being part of an availability group that maintains coordinated replication of a database and metadata indicating a single primary and one or more secondary copies;

determining, by the processor, for each node of the plurality of nodes, whether the node is designated in the metadata as storing a primary copy or only secondary copies of the database;

assigning, by the processor, a first priority value to each of the plurality of nodes, the first priority value representing a dynamically determined patching order, wherein the first priority value is assigned such that the plurality of nodes that are configured for asynchronous replication within the availability group are selected for patching before the plurality of nodes that are configured for synchronous replication within the availability group;

selecting, by the processor, a node from the plurality of nodes for patching based on the first priority value;

determining, by the processor, whether the selected node stores the primary copy of the database of at least one availability group;

responsive to determining that the selected node stores the primary copy of the database of at least one availability group:

identifying, by the processor, a failover target node from the plurality of nodes based on a second priority value assigned to each of the plurality of nodes, the second priority value being independent of the first priority value and indicating failover preference, wherein the second priority value is assigned such that the plurality of nodes that are configured for synchronous replication within the availability group are selected as the failover target node before the plurality of nodes that are configured for asynchronous replication within the availability group; and

patching, by the processor, the selected node upon failing over the selected node to the failover target node; or

responsive to determining that the selected node does not store the primary copy of the database of any availability group, patching, by the processor, the selected node; and

after each patching operation, dynamically recalculating and updating the first priority value of each of the plurality of nodes based on current cluster conditions.

2 . The method of claim 1 , wherein the plurality of nodes that are designated in the metadata as storing a primary copy are patched after the plurality of nodes that are designated in the metadata as storing only secondary copies.

3 . The method of claim 1 , wherein the first priority value is a positive integer value and the second priority value is a negative integer value.

4 . The method of claim 1 , wherein of the plurality of nodes that are configured for synchronous replication within the availability group, a healthy node is selected for patching before an unhealthy node, wherein node health is determined based on the current cluster conditions.

5 . The method of claim 4 , wherein of the plurality of nodes that are healthy and configured for the synchronous replication within the availability group, a remote node is selected for patching before a local node.

6 . The method of claim 1 , wherein the first priority value for each of the plurality of nodes that is designated in the metadata as storing a primary copy is computed based on a sum of a pre-determined integer value and a number of availability groups on the each of the plurality of nodes.

7 . The method of claim 1 , wherein the second priority value is assigned such that the plurality of nodes that are healthy and configured for synchronous replication within the availability group are selected as the failover target node before the plurality of nodes that are unhealthy and configured for synchronous replication within the availability group.

8 . The method of claim 1 , wherein the second priority value is assigned such that the plurality of nodes that are healthy are selected as the failover target node before the plurality of nodes that are unhealthy, wherein node health is determined based on the current cluster conditions.

9 . The method of claim 1 , wherein the second priority value is assigned such that the plurality of nodes that are healthy and already patched are selected as the failover target node before the plurality of nodes that are healthy and unpatched.

10 . The method of claim 1 , wherein the second priority value is assigned such that the plurality of nodes that are unhealthy and already patched are selected as the failover target node before the plurality of nodes that are unhealthy and unpatched.

11 . The method of claim 1 , wherein the patching of the plurality of nodes is performed using a software profile.

12 . The method of claim 11 , wherein for patching using the software profile, the method further comprises:

creating, by the processor, a new version of the software profile based on the patch;

cloning, by the processor, the new version of the software profile on the selected node or the next node that is being patched; and

migrating, by the processor, old data from the node to the new version of the software profile.

13 . The method of claim 1 , further comprising dynamically recalculating and updating the first priority value of each of the plurality of nodes based on the current cluster conditions for the plurality of nodes.

14 . The method of claim 13 , wherein the current cluster conditions of each of the plurality of nodes are determined based on at least one of a workload on the each of the plurality of nodes, or errors or alerts on the each of the plurality of nodes.

15 . A system comprising:

a memory having computer-readable instructions stored thereon; and

a processor executing the computer-readable instructions to:

receive a request to patch a plurality of nodes, each of the plurality of nodes being part of an availability group that maintains coordinated replication of a database and metadata indicating a single primary and one or more secondary copies;

determine, for each node of the plurality of nodes, whether the node is designated in the metadata as storing a primary copy or only secondary copies of the database;

assign a first priority value to each of the plurality of nodes, the first priority value representing a dynamically determined patching order, wherein the first priority value is assigned such that the plurality of nodes that are configured for asynchronous replication within the availability group are selected for patching before the plurality of nodes that are configured for synchronous replication within the availability group;

determine whether the selected node stores the primary copy of the database of at least one availability group;

responsive to determining that the selected node stores the primary copy of the database of at least one availability group:

identify a failover target node from the plurality of nodes based on a second priority value assigned to each of the plurality of nodes, the second priority value being independent of the first priority value and indicating failover preference, wherein the second priority value is assigned such that the plurality of nodes that are configured for synchronous replication within the availability group are selected as the failover target node before the plurality of nodes that are configured for asynchronous replication within the availability group; and

patch the selected node upon failing over the selected node to the failover target node; or

responsive to determining that the selected node does not store the primary copy of the database of any availability group, patch the selected node; and

after each patching operation, dynamically recalculating and updating the first priority value of each of the plurality of nodes based on current cluster conditions.

16 . The system of claim 15 , wherein the plurality of nodes that are designated in the metadata as storing a primary copy are patched after the plurality of nodes that are designated in the metadata as storing only secondary copies.

17 . The system of claim 15 , wherein the first priority value is a positive integer value and the second priority value is a negative integer value.

18 . The system of claim 15 , wherein of the plurality of nodes that are configured for synchronous replication within the availability group, a healthy node is selected to patch before an unhealthy node, wherein node health is determined based on the current cluster conditions.

19 . The system of claim 18 , wherein of the plurality of nodes that are healthy and configured for the synchronous replication within the availability group, a remote node is selected to patch before a local node.

20 . The system of claim 15 , wherein the first priority value for each of the plurality of nodes that is designated in the metadata as storing a primary copy is computed based on a sum of a pre-determined integer value and a number of availability groups on the each of the plurality of nodes.

21 . The system of claim 15 , wherein the second priority value is assigned such that the plurality of nodes that are healthy and configured for synchronous replication within the availability group are selected as the failover target node before the plurality of nodes that are unhealthy and configured for synchronous replication within the availability group.

22 . The system of claim 15 , wherein the second priority value is assigned such that the plurality of nodes that are healthy are selected as the failover target node before the plurality of nodes that are unhealthy, wherein node health is determined based on the current cluster conditions.

23 . The system of claim 15 , wherein the second priority value is assigned such that the plurality of nodes that are healthy and already patched are selected as the failover target node before the plurality of nodes that are healthy and unpatched.

24 . The system of claim 15 , wherein the second priority value is assigned such that the plurality of nodes that are unhealthy and already patched are selected as the failover target node before the plurality of nodes that are unhealthy and unpatched.

25 . The system of claim 15 , wherein the patching of the plurality of nodes is performed using a software profile.

26 . The system of claim 25 , wherein to patch using the software profile, the processor further executes computer-readable instructions to:

create a new version of the software profile based on the patch;

clone the new version of the software profile on the selected node or the next node that is being patched; and

migrate old data from the node to the new version of the software profile.

27 . The system of claim 15 , wherein the processor further executes computer-readable instructions to dynamically recalculate and update the first priority value of each of the plurality of nodes based on the current cluster conditions for the plurality of nodes.

28 . The system of claim 27 , wherein the current cluster conditions of each of the plurality of nodes are determined based on at least one of a workload on the each of the plurality of nodes, or errors or alerts on the each of the plurality of nodes.

29 . A non-transitory computer readable medium comprising computer-readable instructions stored thereon that when executed by a processor causes the processor to:

receive a request to patch a plurality of nodes, each of the plurality of nodes being part of an availability group that maintains coordinated replication of a database and metadata indicating a single primary and one or more secondary copies;

determine, for each node of the plurality of nodes, whether the node is designated in the metadata as storing a primary copy or only secondary copies of the database;

assign a first priority value to each of the plurality of nodes, the first priority value representing a dynamically determined patching order, wherein the first priority value is assigned such that the plurality of nodes that are configured for asynchronous replication within the availability group are selected for patching before the plurality of nodes that are configured for synchronous replication within the availability group;

select a node from the plurality of nodes to patch based on the first priority value;

determine whether the selected node stores the primary copy of the database of at least one availability group;

responsive to determining that the selected node stores the primary copy of the database of at least one availability group:

identify a failover target node from the plurality of nodes based on a second priority value assigned to each of the plurality of nodes, the second priority value being independent of the first priority value and indicating failover preference, wherein the second priority value is assigned such that the plurality of nodes that are configured for synchronous replication within the availability group are selected as the failover target node before the plurality of nodes that are configured for asynchronous replication within the availability group; and

patch the selected node upon failing over the selected node to the failover target node; or

responsive to determining that the selected node does not store the primary copy of the database of any availability group, patch the selected node; and

after each patching operation, dynamically recalculating and updating the first priority value of each of the plurality of nodes based on current cluster conditions.

30 . The non-transitory computer readable medium of claim 29 , wherein the plurality of nodes that are designated in the metadata as storing a primary copy are patched after the plurality of nodes that are designated in the metadata as storing only secondary copies.

31 . The non-transitory computer readable medium of claim 29 , wherein the first priority value is a positive integer value and the second priority value is a negative integer value.

32 . The non-transitory computer readable medium of claim 29 , wherein of the plurality of nodes that are configured for synchronous replication within the availability group, a healthy node is selected to patch before an unhealthy node, wherein node health is determined based on the current cluster conditions.

33 . The non-transitory computer readable medium of claim 29 , wherein of the plurality of nodes that are healthy and configured for the synchronous replication within the availability group, a remote node is selected to patch before a local node.

34 . The non-transitory computer readable medium of claim 29 , wherein the first priority value for each of the plurality of nodes that is designated in the metadata as storing a primary copy is computed based on a sum of a pre-determined integer value and a number of availability groups on the each of the plurality of nodes.

35 . The non-transitory computer readable medium of claim 29 , wherein the second priority value is assigned such that the plurality of nodes that are healthy and configured for synchronous replication within the availability group are selected as the failover target node before the plurality of nodes that are unhealthy and configured for synchronous replication within the availability group.

36 . The non-transitory computer readable medium of claim 29 , wherein the second priority value is assigned such that the plurality of nodes that are healthy are selected as the failover target node before the plurality of nodes that are unhealthy, wherein node health is determined based on the current cluster conditions.

37 . The non-transitory computer readable medium of claim 29 , wherein the second priority value is assigned such that the plurality of nodes that are configured for synchronous replication within the availability group are selected as the failover target node before the plurality of nodes that are configured for asynchronous replication within the availability group.

38 . The non-transitory computer readable medium of claim 29 , wherein the second priority value is assigned such that the plurality of nodes that are healthy and already patched are selected as the failover target node before the plurality of nodes that are healthy and unpatched.

39 . The non-transitory computer readable medium of claim 29 , wherein the second priority value is assigned such that the plurality of nodes that are unhealthy and already patched are selected as the failover target node before the plurality of nodes that are unhealthy and unpatched.

40 . The non-transitory computer readable medium of claim 29 , wherein the patching of the plurality of nodes is performed using a software profile.

41 . The non-transitory computer readable medium of claim 40 , wherein to patch using the software profile, the processor further executes computer-readable instructions to:

create a new version of the software profile based on the patch;

clone the new version of the software profile on the selected node or the next node that is being patched; and

migrate old data from the node to the new version of the software profile.

42 . The non-transitory computer readable medium of claim 29 , wherein the processor further executes computer-readable instructions to dynamically recalculate and update the first priority value of each of the plurality of nodes based on the current cluster conditions for the plurality of nodes.

43 . The non-transitory computer readable medium of claim 42 , wherein the current cluster conditions of each of the plurality of nodes are determined based on at least one of a workload on the each of the plurality of nodes, or errors or alerts on the each of the plurality of nodes.

Assignments (2)
SECURITY INTEREST Recorded Feb 13, 2025
From: NUTANIX, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 070206/0463 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 6, 2024
From: RAYARADDI, ROHAN MOHAN; MEHTA, TARUN
To: NUTANIX, INC.
Reel/Frame 066041/0378 →
Continuity (3)
Continuation 17694964 · Mar 15, 2022
Provisional Application 63164315 · Mar 22, 2021
Related Publication 20240134762A1 · Apr 25, 2024
References Cited (400)
US 4742482A · Inskeep et al. · 1988 [cited by applicant]
US 5594859A · Palmer et al. · 1997 [cited by applicant]
US 6064975A · Moon et al. · 2000 [cited by applicant]
US 6243715B1 · Bogantz et al. · 2001 [cited by applicant]
US 6542893B1 · Quernemoen · 2003 [cited by applicant]
US 6766477B2 · Grucci et al. · 2004 [cited by applicant]
US D508248S · Ording · 2005 [cited by applicant]
US D521521S · Jewitt et al. · 2006 [cited by applicant]
US 7046134B2 · Hansen · 2006 [cited by applicant]
US 7136865B1 · Ra et al. · 2006 [cited by applicant]
US 7225189B1 · McCormack et al. · 2007 [cited by applicant]
US 7331000B2 · Ohno et al. · 2008 [cited by applicant]
US 7389300B1 · Shah et al. · 2008 [cited by applicant]
US 7634679B2 · Quintiliano · 2009 [cited by applicant]
US 7725671B2 · Prahlad et al. · 2010 [cited by applicant]
US D625315S · Jewitt et al. · 2010 [cited by applicant]
US 7814057B2 · Kathuria et al. · 2010 [cited by applicant]
US 7840533B2 · Prahlad et al. · 2010 [cited by applicant]
US 7873610B2 · Poulsen · 2011 [cited by applicant]
US 7873684B2 · Souder et al. · 2011 [cited by applicant]
US 7941470B2 · Le et al. · 2011 [cited by applicant]
US 7953764B2 · Baffier et al. · 2011 [cited by applicant]
US 7971094B1 · Benn et al. · 2011 [cited by applicant]
US 7974942B2 · Pomroy et al. · 2011 [cited by applicant]
US 8117165B1 · Winckelmann et al. · 2012 [cited by applicant]
US 8146080B2 · Carter et al. · 2012 [cited by applicant]
US D656948S · Kundsen et al. · 2012 [cited by applicant]
US 8150808B2 · Zha et al. · 2012 [cited by applicant]
US 8250033B1 · De Souter et al. · 2012 [cited by applicant]
US 8291409B2 · Winner et al. · 2012 [cited by applicant]
US 8335765B2 · Sivasubramanian et al. · 2012 [cited by applicant]
US 8364648B1 · Sim-Tang · 2013 [cited by applicant]
US 8429630B2 · Nickolov et al. · 2013 [cited by applicant]
US 8447728B2 · Prahlad et al. · 2013 [cited by applicant]
US 8448170B2 · Wipfel et al. · 2013 [cited by applicant]
US D684160S · Truelove et al. · 2013 [cited by applicant]
US D684161S · Truelove et al. · 2013 [cited by applicant]
US 8468174B1 · Yueh et al. · 2013 [cited by applicant]
US 8549518B1 · Aron et al. · 2013 [cited by applicant]
US 8572031B2 · Merriman et al. · 2013 [cited by applicant]
US 8601473B1 · Aron et al. · 2013 [cited by applicant]
US 8612396B1 · Mcalister et al. · 2013 [cited by applicant]
US 8635421B2 · Gupta et al. · 2014 [cited by applicant]
US 8656123B2 · Lee · 2014 [cited by applicant]
US 8656303B2 · Hughes · 2014 [cited by applicant]
US 8677085B2 · Vaghani et al. · 2014 [cited by applicant]
US 8713060B2 · Sivasubramanian et al. · 2014 [cited by applicant]
US 8762335B2 · Prahlad et al. · 2014 [cited by applicant]
US 8769537B1 · Ruggiero et al. · 2014 [cited by applicant]
US 8775438B1 · Brooker et al. · 2014 [cited by applicant]
US 8832028B2 · Susairaj et al. · 2014 [cited by applicant]
US 8843441B1 · Rath et al. · 2014 [cited by applicant]
US 8849850B2 · Baffier et al. · 2014 [cited by applicant]
US 8850130B1 · Aron et al. · 2014 [cited by applicant]
US 8856189B1 · Bull et al. · 2014 [cited by applicant]
US 8863124B1 · Aron · 2014 [cited by applicant]
US 8874749B1 · Vittal et al. · 2014 [cited by applicant]
US 8914567B2 · Miroshnichenko et al. · 2014 [cited by applicant]
US 8924974B1 · Ruggiero et al. · 2014 [cited by applicant]
US 8972347B1 · Sim-Tang · 2015 [cited by applicant]
US 9009106B1 · Aron et al. · 2015 [cited by applicant]
US 9069708B2 · Gill et al. · 2015 [cited by applicant]
US D733745S · Huang · 2015 [cited by applicant]
US 9116737B2 · Aswathanarayana et al. · 2015 [cited by applicant]
US 9116803B1 · Agrawal et al. · 2015 [cited by applicant]
US 9116862B1 · Rath et al. · 2015 [cited by applicant]
US 9213727B1 · Esposito · 2015 [cited by applicant]
US 9244717B2 · Pissay et al. · 2016 [cited by applicant]
US D749117S · Huang · 2016 [cited by applicant]
US 9256383B2 · De Spiegeleer et al. · 2016 [cited by applicant]
US 9268610B2 · Hegdal et al. · 2016 [cited by applicant]
US 9270521B2 · Tompkins · 2016 [cited by applicant]
US D753135S · Vazquez · 2016 [cited by applicant]
US D753140S · Kouvas et al. · 2016 [cited by applicant]
US 9305068B1 · Esposito · 2016 [cited by applicant]
US 9311330B1 · Chockalingam et al. · 2016 [cited by applicant]
US 9336060B2 · Nori et al. · 2016 [cited by applicant]
US 9336132B1 · Aron et al. · 2016 [cited by applicant]
US 9372758B2 · Ashutosh et al. · 2016 [cited by applicant]
US D761288S · Cianflone et al. · 2016 [cited by applicant]
US 9384254B2 · Tekade et al. · 2016 [cited by applicant]
US 9389962B1 · Yueh et al. · 2016 [cited by applicant]
US D763890S · Pan · 2016 [cited by applicant]
US 9405634B1 · Ambastha et al. · 2016 [cited by applicant]
US 9413810B2 · Rezvani et al. · 2016 [cited by applicant]
US 9436556B2 · Siden et al. · 2016 [cited by applicant]
US D771102S · Protzman et al. · 2016 [cited by applicant]
US 9495435B2 · Zhang et al. · 2016 [cited by applicant]
US 9507579B2 · Gambardella et al. · 2016 [cited by applicant]
US 9529551B2 · Kesavan et al. · 2016 [cited by applicant]
US 9529808B1 · Sudarsanam et al. · 2016 [cited by applicant]
US D777747S · Derby et al. · 2017 [cited by applicant]
US D778296S · Belkin et al. · 2017 [cited by applicant]
US D779514S · Baris et al. · 2017 [cited by applicant]
US 9582297B2 · Jin et al. · 2017 [cited by applicant]
US D781887S · Dziuba et al. · 2017 [cited by applicant]
US 9600193B2 · Ahrens et al. · 2017 [cited by applicant]
US 9621680B2 · D'Costa et al. · 2017 [cited by applicant]
US 9639429B2 · Stewart et al. · 2017 [cited by applicant]
US 9652265B1 · Narayanasamy et al. · 2017 [cited by applicant]
US 9659080B1 · Drobychev et al. · 2017 [cited by applicant]
US 9665437B2 · Bhargava et al. · 2017 [cited by applicant]
US D794666S · Havaldar et al. · 2017 [cited by applicant]
US D794667S · Havaldar et al. · 2017 [cited by applicant]
US 9733958B2 · Cui · 2017 [cited by examiner]
US 9740472B1 · Sohi · 2017 [cited by examiner]
US 9740723B2 · Prahlad et al. · 2017 [cited by applicant]
US 9747287B1 · Bhardwaj et al. · 2017 [cited by applicant]
US D797116S · Chapman et al. · 2017 [cited by applicant]
US 9753713B2 · Mani et al. · 2017 [cited by applicant]
US 9760396B2 · Apte et al. · 2017 [cited by applicant]
US 9772866B1 · Aron et al. · 2017 [cited by applicant]
US 9778992B1 · Yueh et al. · 2017 [cited by applicant]
US D802608S · Hicks et al. · 2017 [cited by applicant]
US D803231S · Guinness et al. · 2017 [cited by applicant]
US 9830082B1 · Srinivasan et al. · 2017 [cited by applicant]
US D807902S · Cong et al. · 2018 [cited by applicant]
US 9858155B2 · Ashutosh et al. · 2018 [cited by applicant]
US 9881168B2 · Chari et al. · 2018 [cited by applicant]
US D809530S · Matheson et al. · 2018 [cited by applicant]
US D815652S · Protzman et al. · 2018 [cited by applicant]
US 9934107B1 · Chikkanayakanahally et al. · 2018 [cited by applicant]
US D817976S · Shilwant et al. · 2018 [cited by applicant]
US 9960963B2 · Selvaraj · 2018 [cited by examiner]
US 10013313B2 · Zhang et al. · 2018 [cited by applicant]
US 10033833B2 · Fu et al. · 2018 [cited by applicant]
US 10055300B2 · Zhang et al. · 2018 [cited by applicant]
US 10057279B1 · Balduzzi et al. · 2018 [cited by applicant]
US 10061852B1 · Plenderleith · 2018 [cited by applicant]
US 10078465B1 · Wu et al. · 2018 [cited by applicant]
US 10108496B2 · Hoobler et al. · 2018 [cited by applicant]
US 10108685B2 · Amdur et al. · 2018 [cited by applicant]
US 10146848B2 · Narayanan et al. · 2018 [cited by applicant]
US D838288S · Sunshine et al. · 2019 [cited by applicant]
US 10185627B2 · Wong et al. · 2019 [cited by applicant]
US D839913S · Chen et al. · 2019 [cited by applicant]
US 10206092B1 · Mellquist et al. · 2019 [cited by applicant]
US 10210048B2 · Sancheti · 2019 [cited by applicant]
US 10212195B2 · Maskalik et al. · 2019 [cited by applicant]
US D843388S · Protzman et al. · 2019 [cited by applicant]
US 10235250B1 · Ambastha et al. · 2019 [cited by applicant]
US 10248657B2 · Prahlad et al. · 2019 [cited by applicant]
US 10261867B1 · Terry et al. · 2019 [cited by applicant]
US 10268551B1 · Wong · 2019 [cited by applicant]
US 10275267B1 · De Kadt et al. · 2019 [cited by applicant]
US 10282201B2 · Tekade et al. · 2019 [cited by applicant]
US 10339110B2 · Marinov et al. · 2019 [cited by applicant]
US 10346431B1 · Broda et al. · 2019 [cited by applicant]
US 10372329B1 · Ahrens et al. · 2019 [cited by applicant]
US 10379957B2 · Ngo · 2019 [cited by applicant]
US 10379963B2 · Bhargava et al. · 2019 [cited by applicant]
US D862512S · Schubart · 2019 [cited by applicant]
US 10445298B2 · Ramu et al. · 2019 [cited by applicant]
US 10447806B1 · Sahay et al. · 2019 [cited by applicant]
US 10476955B2 · Mutalik et al. · 2019 [cited by applicant]
US D870762S · Mendoza Corominas et al. · 2019 [cited by applicant]
US 10496302B1 · Gaurav et al. · 2019 [cited by applicant]
US 10503612B1 · Wang et al. · 2019 [cited by applicant]
US 10509798B2 · Chow et al. · 2019 [cited by applicant]
US D875108S · Chitalia et al. · 2020 [cited by applicant]
US 10572292B2 · Bhandari et al. · 2020 [cited by applicant]
US D877753S · Chitalia et al. · 2020 [cited by applicant]
US 10579364B2 · Doshi et al. · 2020 [cited by applicant]
US 10599423B2 · Coleman et al. · 2020 [cited by applicant]
US 10606578B2 · Kruglikov et al. · 2020 [cited by applicant]
US 10613938B2 · Blumenau et al. · 2020 [cited by applicant]
US 10637914B2 · Basavaiah et al. · 2020 [cited by applicant]
US 10700991B2 · Khinvasara et al. · 2020 [cited by applicant]
US 10705755B2 · Wang et al. · 2020 [cited by applicant]
US 10719407B1 · Chockalingam et al. · 2020 [cited by applicant]
US 10725866B1 · Palaiah et al. · 2020 [cited by applicant]
US 10728255B2 · Jindal et al. · 2020 [cited by applicant]
US 10757036B2 · Tung et al. · 2020 [cited by applicant]
US 10776329B2 · Ramohalli Gopala Rao et al. · 2020 [cited by applicant]
US 10778750B2 · Ringdahl · 2020 [cited by applicant]
US 10785029B2 · Gupta et al. · 2020 [cited by applicant]
US 10785255B1 · Otvagin et al. · 2020 [cited by applicant]
US 10812582B2 · Spillane et al. · 2020 [cited by applicant]
US 10817157B2 · Kuchibhotla et al. · 2020 [cited by applicant]
US 10824522B2 · Sadavarte et al. · 2020 [cited by applicant]
US 10824956B1 · Natanzon et al. · 2020 [cited by applicant]
US 10855554B2 · Freeman et al. · 2020 [cited by applicant]
US D911356S · Varghese et al. · 2021 [cited by applicant]
US 10922957B2 · Rhoads et al. · 2021 [cited by applicant]
US 10938924B1 · Jensen et al. · 2021 [cited by applicant]
US 10951496B2 · Baker et al. · 2021 [cited by applicant]
US 10959098B2 · Cidon et al. · 2021 [cited by applicant]
US 10965737B1 · Parulkar et al. · 2021 [cited by applicant]
US 10984041B2 · Bedadala et al. · 2021 [cited by applicant]
US 10999165B2 · Cidon et al. · 2021 [cited by applicant]
US 11010336B2 · Kuchibhotla et al. · 2021 [cited by applicant]
US 11010487B2 · Noe et al. · 2021 [cited by applicant]
US 11036696B2 · Higginson et al. · 2021 [cited by applicant]
US D926200S · Murphy et al. · 2021 [cited by applicant]
US 11055352B1 · Beitchman et al. · 2021 [cited by applicant]
US 11061709B2 · Cao et al. · 2021 [cited by applicant]
US D927507S · Norman · 2021 [cited by applicant]
US 11099956B1 · Polimera et al. · 2021 [cited by applicant]
US 11100020B2 · Shah et al. · 2021 [cited by applicant]
US 11108629B1 · Cahyadi et al. · 2021 [cited by applicant]
US 11120011B2 · Priebe et al. · 2021 [cited by applicant]
US 11126426B2 · Zhu et al. · 2021 [cited by applicant]
US 11169887B2 · Bajaj et al. · 2021 [cited by applicant]
US 11182372B1 · Jain et al. · 2021 [cited by applicant]
US 11243703B2 · Watkins · 2022 [cited by applicant]
US 11243971B2 · Geigel · 2022 [cited by applicant]
US D947216S · Leininger · 2022 [cited by applicant]
US D947239S · Rubin et al. · 2022 [cited by applicant]
US D947240S · Rubin et al. · 2022 [cited by applicant]
US 11275573B1 · Javadekar · 2022 [cited by examiner]
US 11308114B1 · Moghe · 2022 [cited by applicant]
US 11320978B2 · Kuchibhotla et al. · 2022 [cited by applicant]
US 11372820B1 · Harjono et al. · 2022 [cited by applicant]
US 11386058B2 · Hung et al. · 2022 [cited by applicant]
US 11561864B1 · Brahmadesam et al. · 2023 [cited by applicant]
US 11604705B2 · Mehta et al. · 2023 [cited by applicant]
US 11604806B2 · Mankad et al. · 2023 [cited by applicant]
US 11609828B2 · Khandkar et al. · 2023 [cited by applicant]
US 11640340B2 · Sontakke et al. · 2023 [cited by applicant]
US 11741380B2 · Khawas et al. · 2023 [cited by applicant]
US 11816066B2 · Kuchibhotla et al. · 2023 [cited by applicant]
US 11860818B2 · Kuchibhotla et al. · 2024 [cited by applicant]
US 11899685B1 · Pandis et al. · 2024 [cited by applicant]
US 11907507B2 · Kibo · 2024 [cited by applicant]
US 12010227B1 · Chhabra et al. · 2024 [cited by applicant]
US 12019523B2 · Mehta et al. · 2024 [cited by applicant]
US 12081604B1 · Hinds et al. · 2024 [cited by applicant]
US 12093715B2 · Zhao et al. · 2024 [cited by applicant]
US 12153499B2 · Sontakke et al. · 2024 [cited by applicant]
US 12321244B1 · Rather et al. · 2025 [cited by applicant]
US 20010014867A1 · Conmy · 2001 [cited by applicant]
US 20020019920A1 · Reuter et al. · 2002 [cited by applicant]
US 20020038554A1 · Monk et al. · 2002 [cited by applicant]
US 20020073089A1 · Schwartz et al. · 2002 [cited by applicant]
US 20020082858A1 · Heddaya et al. · 2002 [cited by applicant]
US 20020104376A1 · Danyluk et al. · 2002 [cited by applicant]
US 20020174098A1 · Wu et al. · 2002 [cited by applicant]
US 20030046353A1 · Chung et al. · 2003 [cited by applicant]
US 20030147309A1 · Weisberg · 2003 [cited by applicant]
US 20040059878A1 · Madany · 2004 [cited by applicant]
US 20050027661A1 · Lober et al. · 2005 [cited by applicant]
US 20050149757A1 · Corbett et al. · 2005 [cited by applicant]
US 20060029096A1 · Babbar et al. · 2006 [cited by applicant]
US 20060107006A1 · Green et al. · 2006 [cited by applicant]
US 20060143412A1 · Armangau · 2006 [cited by applicant]
US 20060161444A1 · Lubrecht et al. · 2006 [cited by applicant]
US 20060161462A1 · Sharma · 2006 [cited by applicant]
US 20060161879A1 · Lubrecht et al. · 2006 [cited by applicant]
US 20060242189A1 · Leetaru et al. · 2006 [cited by applicant]
US 20060253472A1 · Wasserman et al. · 2006 [cited by applicant]
US 20070022065A1 · Hatano et al. · 2007 [cited by applicant]
US 20070100793A1 · Brown et al. · 2007 [cited by applicant]
US 20070183224A1 · Erofeev · 2007 [cited by applicant]
US 20070185852A1 · Erofeev · 2007 [cited by applicant]
US 20070185922A1 · Kapoor et al. · 2007 [cited by applicant]
US 20070185937A1 · Prahlad et al. · 2007 [cited by applicant]
US 20070234115A1 · Saika · 2007 [cited by applicant]
US 20070300221A1 · Hartz et al. · 2007 [cited by applicant]
US 20080059894A1 · Cisler et al. · 2008 [cited by applicant]
US 20080126945A1 · Munkvold et al. · 2008 [cited by applicant]
US 20080239985A1 · Karve et al. · 2008 [cited by applicant]
US 20080256311A1 · Lee · 2008 [cited by applicant]
US 20090022285A1 · Swanburg et al. · 2009 [cited by applicant]
US 20090028082A1 · Wynn et al. · 2009 [cited by applicant]
US 20090037914A1 · Chagoly et al. · 2009 [cited by applicant]
US 20090112881A1 · Kodama · 2009 [cited by applicant]
US 20090125858A1 · Vishweshwara et al. · 2009 [cited by applicant]
US 20090132543A1 · Chatley et al. · 2009 [cited by applicant]
US 20090161547A1 · Riddle et al. · 2009 [cited by applicant]
US 20090228669A1 · Slesarev et al. · 2009 [cited by applicant]
US 20090276771A1 · Nickolov et al. · 2009 [cited by applicant]
US 20090276833A1 · Paul et al. · 2009 [cited by applicant]
US 20090319582A1 · Simek et al. · 2009 [cited by applicant]
US 20100017801A1 · Kundapur · 2010 [cited by applicant]
US 20100023564A1 · Yerneni et al. · 2010 [cited by applicant]
US 20100198791A1 · Wu et al. · 2010 [cited by applicant]
US 20100251242A1 · Sivasubramanian et al. · 2010 [cited by applicant]
US 20110004586A1 · Cherryholmes et al. · 2011 [cited by applicant]
US 20110022882A1 · Jaehde et al. · 2011 [cited by applicant]
US 20110071981A1 · Ghosh et al. · 2011 [cited by applicant]
US 20110093435A1 · Zha et al. · 2011 [cited by applicant]
US 20110099420A1 · Macdonald Mcalister et al. · 2011 [cited by applicant]
US 20110138383A1 · Le · 2011 [cited by applicant]
US 20110252420A1 · Tung et al. · 2011 [cited by applicant]
US 20120011378A1 · Dalton et al. · 2012 [cited by applicant]
US 20120084260A1 · Cherkauer et al. · 2012 [cited by applicant]
US 20120123999A1 · Ashutosh et al. · 2012 [cited by applicant]
US 20120271797A1 · Patil · 2012 [cited by applicant]
US 20120290714A1 · Cohen · 2012 [cited by applicant]
US 20130019015A1 · Devarakonda et al. · 2013 [cited by applicant]
US 20130031136A1 · Shah · 2013 [cited by applicant]
US 20130091285A1 · Devarakonda et al. · 2013 [cited by applicant]
US 20130110779A1 · Taylor et al. · 2013 [cited by applicant]
US 20130117441A1 · Kuchibhotla et al. · 2013 [cited by applicant]
US 20130232470A1 · Yung · 2013 [cited by applicant]
US 20130232497A1 · Jalagam et al. · 2013 [cited by applicant]
US 20130238331A1 · Mikan et al. · 2013 [cited by applicant]
US 20130263119A1 · Pissay et al. · 2013 [cited by applicant]
US 20130290180A1 · Baffier et al. · 2013 [cited by applicant]
US 20130332251A1 · Ioannidis et al. · 2013 [cited by applicant]
US 20140006350A1 · Fukui et al. · 2014 [cited by applicant]
US 20140018947A1 · Ales · 2014 [cited by applicant]
US 20140059226A1 · Messerli et al. · 2014 [cited by applicant]
US 20140101117A1 · Uzzaman · 2014 [cited by applicant]
US 20140108339A1 · Marsden · 2014 [cited by applicant]
US 20140189685A1 · Kripalani · 2014 [cited by applicant]
US 20140201171A1 · Vijayan et al. · 2014 [cited by applicant]
US 20140229504A1 · Kim et al. · 2014 [cited by applicant]
US 20140229698A1 · Sivasubramanian et al. · 2014 [cited by applicant]
US 20140250081A1 · Stewart et al. · 2014 [cited by applicant]
US 20140282256A1 · Fish et al. · 2014 [cited by applicant]
US 20140337844A1 · Jin et al. · 2014 [cited by applicant]
US 20140359058A1 · Karnawat et al. · 2014 [cited by applicant]
US 20150019495A1 · Siden et al. · 2015 [cited by applicant]
US 20150039837A1 · Quan et al. · 2015 [cited by applicant]
US 20150052108A1 · Volk et al. · 2015 [cited by applicant]
US 20150074054A1 · Antony · 2015 [cited by applicant]
US 20150121453A1 · Gupta · 2015 [cited by applicant]
US 20150127611A1 · Westerman et al. · 2015 [cited by applicant]
US 20150142610A1 · Manoharan et al. · 2015 [cited by applicant]
US 20150143064A1 · Bhargava et al. · 2015 [cited by applicant]
US 20150188775A1 · Van Der Walt · 2015 [cited by applicant]
US 20150188789A1 · Jayaprakash · 2015 [cited by applicant]
US 20150195347A1 · Luft · 2015 [cited by applicant]
US 20150207682A1 · Moraes Nichele et al. · 2015 [cited by applicant]
US 20150207683A1 · Adogla · 2015 [cited by applicant]
US 20150207703A1 · Gallagher et al. · 2015 [cited by applicant]
US 20150227435A1 · Ashutosh et al. · 2015 [cited by applicant]
US 20150227602A1 · Ramu et al. · 2015 [cited by applicant]
US 20150254141A1 · Wertheimer et al. · 2015 [cited by applicant]
US 20150301814A1 · Chen et al. · 2015 [cited by applicant]
US 20150331923A1 · Kim · 2015 [cited by applicant]
US 20150339941A1 · Lu · 2015 [cited by applicant]
US 20150347987A1 · Ali · 2015 [cited by applicant]
US 20150358417A1 · Patil et al. · 2015 [cited by applicant]
US 20150370641A1 · Susairaj et al. · 2015 [cited by applicant]
US 20160041997A1 · Gokhale et al. · 2016 [cited by applicant]
US 20160048408A1 · Madhu et al. · 2016 [cited by applicant]
US 20160057077A1 · Gomatam et al. · 2016 [cited by applicant]
US 20160066201A1 · Kerpez et al. · 2016 [cited by applicant]
US 20160077923A1 · Zhang et al. · 2016 [cited by applicant]
US 20160077925A1 · Tekade et al. · 2016 [cited by applicant]
US 20160078104A1 · Clifford et al. · 2016 [cited by applicant]
US 20160092535A1 · Kuchibhotla et al. · 2016 [cited by applicant]
US 20160094401A1 · Anwar et al. · 2016 [cited by applicant]
US 20160094410A1 · Anwar et al. · 2016 [cited by applicant]
US 20160094647A1 · Mordani et al. · 2016 [cited by applicant]
US 20160125059A1 · Jain et al. · 2016 [cited by applicant]
US 20160127307A1 · Jain et al. · 2016 [cited by applicant]
US 20160162845A1 · Carroll et al. · 2016 [cited by applicant]
US 20160182328A1 · Bhasin et al. · 2016 [cited by applicant]
US 20160188421A1 · Karinta et al. · 2016 [cited by applicant]
US 20160191348A1 · Lee et al. · 2016 [cited by applicant]
US 20160197835A1 · Luft · 2016 [cited by applicant]
US 20160224259A1 · Ahrens et al. · 2016 [cited by applicant]
US 20160239637A1 · Miller et al. · 2016 [cited by applicant]
US 20160246503A1 · Phelan et al. · 2016 [cited by applicant]
US 20160248629A1 · Erdmann et al. · 2016 [cited by applicant]
US 20160266913A1 · Achillopoulos · 2016 [cited by applicant]
US 20160267105A1 · Sun et al. · 2016 [cited by applicant]
US 20160274981A1 · Wilkinson · 2016 [cited by applicant]
US 20160292358A1 · Heger · 2016 [cited by applicant]
US 20160306840A1 · Deshmukh et al. · 2016 [cited by applicant]
US 20160321339A1 · Tekade et al. · 2016 [cited by applicant]
US 20160335369A1 · Picard et al. · 2016 [cited by applicant]
US 20160337473A1 · Rao · 2016 [cited by applicant]
US 20160344582A1 · Shivanna et al. · 2016 [cited by applicant]
US 20160378361A1 · Uriel · 2016 [cited by applicant]
US 20160378622A1 · Ren et al. · 2016 [cited by applicant]
US 20160380809A1 · Hou et al. · 2016 [cited by applicant]
US 20170031775A1 · Arumugham et al. · 2017 [cited by applicant]
US 20170039236A1 · Li et al. · 2017 [cited by applicant]
US 20170060699A1 · Hohl et al. · 2017 [cited by applicant]
US 20170068469A1 · Shankar et al. · 2017 [cited by applicant]
US 20170091231A1 · Difranco et al. · 2017 [cited by applicant]
US 20170115978A1 · Modi · 2017 [cited by examiner]
US 20170199753A1 · Gong · 2017 [cited by applicant]
US 20170220777A1 · Wang et al. · 2017 [cited by applicant]
US 20170228227A1 · Winterfeldt et al. · 2017 [cited by applicant]
US 20170235563A1 · Bafna · 2017 [cited by examiner]
US 20170235758A1 · Gopalapura Venkatesh et al. · 2017 [cited by applicant]
US 20170235950A1 · Gopalapura Venkatesh et al. · 2017 [cited by applicant]
US 20170243275A1 · Goens et al. · 2017 [cited by applicant]
US 20170262232A1 · Zhao et al. · 2017 [cited by applicant]
US 20170264684A1 · Spillane et al. · 2017 [cited by applicant]
US 20170272359A1 · Behringer et al. · 2017 [cited by applicant]
US 20170286517A1 · Horowitz et al. · 2017 [cited by applicant]
US 20170286518A1 · Horowitz et al. · 2017 [cited by applicant]
US 20170315877A1 · Kaplingat et al. · 2017 [cited by applicant]
US 20170322827A1 · Little et al. · 2017 [cited by applicant]
US 20170344618A1 · Horowitz et al. · 2017 [cited by applicant]
US 20170351584A1 · Griffith et al. · 2017 [cited by applicant]
US 20170351716A1 · Higginson et al. · 2017 [cited by applicant]
US 20170357667A1 · Auch et al. · 2017 [cited by applicant]
US 20170371547A1 · Fruchtman et al. · 2017 [cited by applicant]
US 20170374136A1 · Ringdahl · 2017 [cited by applicant]
US 20180025007A1 · Dai · 2018 [cited by applicant]
US 20180060119A1 · Zamir · 2018 [cited by applicant]
US 20180063088A1 · Hardy · 2018 [cited by applicant]
US 20180113622A1 · Sancheti · 2018 [cited by applicant]