IP Library Granted Patent US 12,487,812
Granted Patent B2
US 12,487,812 · App. 18/112,379 · Granted Dec 2, 2025

Constraint-based upgrade and deployment

Inventors: Ian Mair (New York, NY); Greg DeArment (Seattle, WA); Lee Avital (New York, NY); Mark Elliot (London, GB); Michael Nazario (New York, NY); Punyashloka Biswal (Norwalk, CT); William Hickman (Brooklyn, NY)
Assignee: Palantir Technologies Inc.
G06F8/65H04L67/10H04L67/34
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,487,812
App. No.
18/112,379
Granted
Dec 2, 2025
Kind
B2
Abstract

One or more software products/services may be installed on a cloud deployment. Product versions of such services can be upgraded (or rolled back) based on a deployment plan comprising tasks adapted to reach a target deployment state. A central upgrade server can forward tasks to an upgrade agent for execution, the tasks being based on a current operational state of the cloud deployment (obtained by the upgrade agent) and one or more constraints. In multiple node deployments, some nodes may be upgraded to a new product version, while other nodes are kept at a current product version until stability of the new product version is determined. Traffic across nodes can be shaped to ensure a deployment is healthy before upgrading other nodes/deployments. If the health of a node/deployment does not meet specified criteria, an upgrade can be stopped, an alert can be triggered, and the node/deployment can be rolled back.

Claims (35)

1 . A system comprising:

a central server configured to coordinate tasks across different deployments; and an agent to perform one or more tasks at a particular deployment, the one or more tasks comprising obtaining one or more snapshots indicating a level of health of the particular deployment, generating a report based on the obtained one or more snapshots, and transmitting the report to the central server, wherein the central server comprises: one or more processors; and memory storing instructions that, when executed by the one or more processors, cause the central server to: receive a subscription from the particular deployment to a particular release channel, wherein the subscription indicates eligibilities of nodes to upgrade within the particular deployment of upgrading when an update in the particular release channel occurs, and the subscription indicates non-eligibilities of any nodes that are unsubscribed to the particular release channel; determine whether a different product release version compared to a currently deployed version of the product is available, within the particular release channel, that satisfies a particular level of health stability of the particular release channel, wherein the determining of whether the different product release version is available comprises: determining that the different product release version from the currently deployed version previously failed to satisfy the particular level of health and is stability and satisfied a lower level of stability; determining that the different product release version has been promoted from the lower level of stability to the particular level of stability based on levels of health associated with other deployments that have been upgraded with the different product release version;

in response to determining that the different product release version is available:

upgrade a first selected proportion of the subscribed nodes from the particular deployment; generate the report based on upgrade statuses of the deployment, wherein the upgrade statuses indicate whether each of the subscribed nodes have been upgraded and health levels of each of the subscribed nodes; and based on the report, selectively upgrade a second selected proportion of the subscribed nodes within the particular deployment according to the different product release version in response to determining that the different product release version compared to the currently deployed version is available, wherein based on the upgrade statuses of one or more other nodes from the particular deployment, wherein at least an unselected proportion of the subscribed nodes maintains the currently deployed version of the product.

2 . The system of claim 1 , wherein the particular release channel comprises a file that comprises protocol of upgrading to the product release version.

3 . The system of claim 1 , wherein the selectively upgrading is in response to determining one or more dependencies being satisfied between the particular deployment and a downstream deployment to which the particular deployment responds, the one or more dependencies comprising a compatibility between the particular deployment and the downstream deployment.

4 . The system of claim 3 , wherein the one or more dependencies comprises a matching schema version between the particular deployment and the downstream deployment.

5 . The system of claim 1 , wherein the selectively upgrading comprises selecting an upgrade mode that satisfies a downtime constraint of the particular deployment.

6 . The system of claim 1 , wherein the agent continuously transmits, to the central server, a snapshot of the particular deployment, and the central server, in response to receiving the snapshot of the particular deployment, transmits a series of tasks to the agent.

7 . The system of claim 6 , wherein the series of tasks comprises a stop task, a change version task, and a restart task.

8 . The system of claim 1 , wherein the selectively upgrading upgrade of the proportion of the subscribed nodes is based on a utilization level of the particular deployment.

9 . The system of claim 1 , wherein the selectively upgrading of the proportion of the subscribed nodes is based on a cascaded upgrade from a first version to a second version to a third version, and a direct upgrade from the first version to the third version is disqualified.

10 . The system of claim 1 , wherein a sum of the first selected proportion and the second selected proportion of the subscribed nodes comprises a subset of the subscribed nodes that is less than an entirety of the subscribed nodes within the particular deployment.

11 . The system of claim 1 , wherein the determining that the product release version satisfies the particular level of health stability of the particular release channel is based on one or more other deployments that received the product release version satisfying a level of health.

12 . The system of claim 1 , wherein selectively upgrading the second selected proportion comprises

the proportion comprises a first proportion, and the instructions further cause the agent to:

determine that the particular deployment, following the selectively upgrading of the first selected proportion, satisfies a level of health; and

in response to determining that the particular deployment following the upgrading satisfies the level of health, upgrading the second selected proportion of the subscribed nodes within the particular deployment in a subsequent iteration.

13 . The system of claim 1 , wherein the particular level of health is based on a level of utilization at the deployment and a response time.

14 . The system of claim 1 , wherein the determining of whether the newer product release version is available is in response to determining that the currently deployed version has been blacklisted.

15 . The system of claim 1 , wherein the snapshots are obtained from one or more logs.

16 . The system of claim 1 , wherein the instructions that, when executed by the one or more processors, cause the central server to:

build a distribution that comprises an outcome of the task, the distribution comprising a compressed version of configuration files corresponding to the task.

17 . The system of claim 1 , wherein the one or more snapshots comprise a plurality of continuously obtained snapshots, and the report is generated based on the continuously obtained snapshots.

18 . The system of claim 1 , wherein the selectively upgrading, by the central server, the second selected proportion of nodes comprises adjusting a target traffic ratio indicating the proportion of upgraded nodes, out of all nodes within the particular deployment, based on a monitored health within the particular deployment following the upgrading of the first selected proportion.

19 . A computer-implemented method, comprising:

coordinating tasks, by a central server, at different deployments;

performing one or more tasks, by an agent, at a particular deployment, the one or more tasks comprising obtaining one or more snapshots indicating a level of health of the particular deployment, generating a report based on the obtained one or more snapshots, and transmitting the report to the central server;

receiving, by the central server, a subscription from the particular deployment to a particular release channel, wherein the subscription indicates eligibilities of nodes to upgrade within the particular deployment of upgrading when an update in the particular release channel occurs, and the subscription indicates non-eligibilities of any nodes that are unsubscribed to the particular release channel;

determining, by the central server, whether a different product release version compared to a currently deployed version of the product is available, within the particular release channel, that satisfies a particular level of health stability of the particular release channel, wherein the determining of whether the different product release version is available comprises:

determining that the different product release version from the currently deployed version previously failed to satisfy the particular level of health and is stability and satisfied a lower level of stability; determining that the different product release version has been promoted from the lower level of stability to the particular level of stability based on levels of health associated with other deployments that have been upgraded with the different product release version;

in response to determining that the different product release version is available:

upgrade a first selected proportion of the subscribed nodes from the particular deployment;

generate the report based on upgrade statuses of the deployment, wherein the upgrade statuses indicate whether each of the subscribed nodes have been upgraded and health levels of each of the subscribed nodes; and

based on the report, selectively upgrading, by the central server, a second selected proportion of the subscribed nodes within the particular deployment according to the different product release version in response to determining that the different product release version compared to the currently deployed version is available, based on the upgrade statuses of one or more other nodes from the particular deployment.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2023
From: MAIR, IAN; DEARMENT, GREG; AVITAL, LEE; ELLIOT, MARK; NAZARIO, MICHAEL; BISWAL, PUNYASHLOKA; HICKMAN, WILLIAM
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 062758/0419 →
Continuity (4)
Continuation 16779137 · Jan 31, 2020
Continuation 16269133 · Feb 6, 2019
Provisional Application 62680400 · Jun 4, 2018
Related Publication 20230195450A1 · Jun 22, 2023
References Cited (140)
US 5835911A · Nakagawa et al. · 1998 [cited by applicant]
US 6058373A · Blinn et al. · 2000 [cited by applicant]
US 6477703B1 · Smith et al. · 2002 [cited by applicant]
US 6836773B2 · Tamayo et al. · 2004 [cited by applicant]
US 6854107B2 · Green et al. · 2005 [cited by applicant]
US 7100159B2 · Claiborne · 2006 [cited by applicant]
US 7322025B2 · Reddy et al. · 2008 [cited by applicant]
US 8285860B2 · McGuire et al. · 2012 [cited by applicant]
US 8341619B2 · Pall et al. · 2012 [cited by applicant]
US 8782634B2 · Ushiku · 2014 [cited by applicant]
US 8819106B1 · Sirota et al. · 2014 [cited by applicant]
US 8850528B2 · Van Biljon et al. · 2014 [cited by applicant]
US 8904477B2 · Barton et al. · 2014 [cited by applicant]
US 9195696B2 · Smith et al. · 2015 [cited by applicant]
US 9256657B1 · Evenson et al. · 2016 [cited by applicant]
US 9256761B1 · Sahu et al. · 2016 [cited by applicant]
US 9292261B1 · Bouldin et al. · 2016 [cited by applicant]
US 9329838B2 · Tattrie et al. · 2016 [cited by applicant]
US 9419856B1 · Chawla et al. · 2016 [cited by applicant]
US 9489190B1 · Wang · 2016 [cited by examiner]
US 9521194B1 · Gabrielson · 2016 [cited by applicant]
US 9805071B1 · Ellis et al. · 2017 [cited by applicant]
US 9893940B1 · Chawla et al. · 2018 [cited by applicant]
US 9910697B2 · DeArment · 2018 [cited by applicant]
US 10263845B2 · Hall et al. · 2019 [cited by applicant]
US 10440153B1 · Smith · 2019 [cited by applicant]
US 20030036876A1 · Fuller et al. · 2003 [cited by applicant]
US 20030069696A1 · McGeorge et al. · 2003 [cited by applicant]
US 20030074256A1 · LaCroix · 2003 [cited by applicant]
US 20040044727A1 · Abdelaziz et al. · 2004 [cited by applicant]
US 20050144610A1 · Zenz · 2005 [cited by applicant]
US 20050228711A1 · Lahey et al. · 2005 [cited by applicant]
US 20050257210A1 · Stienhans · 2005 [cited by examiner]
US 20060031813A1 · Bishop et al. · 2006 [cited by applicant]
US 20060229931A1 · Fligler et al. · 2006 [cited by applicant]
US 20070005662A1 · Bankston et al. · 2007 [cited by applicant]
US 20070005801A1 · Kumar et al. · 2007 [cited by applicant]
US 20070016638A1 · Elbury et al. · 2007 [cited by applicant]
US 20070050589A1 · Tanaka et al. · 2007 [cited by applicant]
US 20070105597A1 · Hwang · 2007 [cited by applicant]
US 20070169081A1 · Zhao et al. · 2007 [cited by applicant]
US 20080288935A1 · Kawaguchi · 2008 [cited by applicant]
US 20080301670A1 · Gouge et al. · 2008 [cited by applicant]
US 20090132317A1 · Dholakia et al. · 2009 [cited by applicant]
US 20090132710A1 · Pelley · 2009 [cited by applicant]
US 20090222808A1 · Faus et al. · 2009 [cited by applicant]
US 20090287718A1 · Motoyama et al. · 2009 [cited by applicant]
US 20090327465A1 · Flegg et al. · 2009 [cited by applicant]
US 20100011098A1 · Sanborn et al. · 2010 [cited by applicant]
US 20100049959A1 · Arcese et al. · 2010 [cited by applicant]
US 20100054156A1 · DeHaan · 2010 [cited by applicant]
US 20100057515A1 · Gandini et al. · 2010 [cited by applicant]
US 20100186020A1 · Maddhirala et al. · 2010 [cited by applicant]
US 20100235525A1 · McGuire et al. · 2010 [cited by applicant]
US 20110131448A1 · Vasil et al. · 2011 [cited by applicant]
US 20110209144A1 · Rowe · 2011 [cited by examiner]
US 20110314462A1 · Clark et al. · 2011 [cited by applicant]
US 20120011207A1 · Morris · 2012 [cited by applicant]
US 20120180068A1 · Wein et al. · 2012 [cited by applicant]
US 20120266155A1 · Valeriano et al. · 2012 [cited by applicant]
US 20130070917A1 · Nuestro et al. · 2013 [cited by applicant]
US 20130205128A1 · Thompson · 2013 [cited by examiner]
US 20140040656A1 · Ho et al. · 2014 [cited by applicant]
US 20140059056A1 · Chaney et al. · 2014 [cited by applicant]
US 20140149591A1 · Bhattacharya et al. · 2014 [cited by applicant]
US 20140237463A1 · Sriram et al. · 2014 [cited by applicant]
US 20140310328A1 · Charif et al. · 2014 [cited by applicant]
US 20140310493A1 · Pace · 2014 [cited by applicant]
US 20140310720A1 · Song et al. · 2014 [cited by applicant]
US 20140379777A1 · Yamamoto et al. · 2014 [cited by applicant]
US 20150052596A1 · Ayanam et al. · 2015 [cited by applicant]
US 20150074053A1 · Sarferaz · 2015 [cited by applicant]
US 20150074639A1 · Sanghvi et al. · 2015 [cited by applicant]
US 20150074644A1 · Oberheide et al. · 2015 [cited by applicant]
US 20150172412A1 · Escriva et al. · 2015 [cited by applicant]
US 20150178014A1 · Nelson · 2015 [cited by applicant]
US 20150242198A1 · Tobolski et al. · 2015 [cited by applicant]
US 20150286475A1 · Vangelov · 2015 [cited by examiner]
US 20150317361A1 · Battaglia et al. · 2015 [cited by applicant]
US 20150350318A1 · Van Assche et al. · 2015 [cited by applicant]
US 20160019043A1 · Ramasamy · 2016 [cited by examiner]
US 20160080489A1 · Ngo et al. · 2016 [cited by applicant]
US 20160239281A1 · Avisror et al. · 2016 [cited by applicant]
US 20160364286A1 · Charters · 2016 [cited by examiner]
US 20170026492A1 · Kawamura et al. · 2017 [cited by applicant]
US 20170034023A1 · Nickolov · 2017 [cited by examiner]
US 20170075711A1 · Berranae · 2017 [cited by applicant]
US 20170093913A1 · Summers et al. · 2017 [cited by applicant]
US 20170097850A1 · Mitchell · 2017 [cited by examiner]
US 20170115978A1 · Modi et al. · 2017 [cited by applicant]
US 20170116014A1 · Yang · 2017 [cited by examiner]
US 20170141968A1 · Lloyd et al. · 2017 [cited by applicant]
US 20170168900A1 · Lucas · 2017 [cited by examiner]
US 20170285981A1 · DeArment et al. · 2017 [cited by applicant]
US 20170285982A1 · DeArment et al. · 2017 [cited by applicant]
US 20170308568A1 · Laethem et al. · 2017 [cited by applicant]
US 20170371639A1 · Simek et al. · 2017 [cited by applicant]
US 20180129654A1 · Ellis et al. · 2018 [cited by applicant]
US 20180136960A1 · Zhang · 2018 [cited by examiner]
US 20180137113A1 · Kurz et al. · 2018 [cited by applicant]
US 20180139108A1 · Fulton · 2018 [cited by examiner]
US 20180165085A1 · Carter · 2018 [cited by examiner]
US 20180189046A1 · Kunisetty et al. · 2018 [cited by applicant]
US 20180189055A1 · Dasgupta et al. · 2018 [cited by applicant]
US 20180225017A1 · Latzina et al. · 2018 [cited by applicant]
US 20180285090A1 · Das et al. · 2018 [cited by applicant]
US 20180302303A1 · Skovron et al. · 2018 [cited by applicant]
US 20180324204A1 · McClory · 2018 [cited by examiner]
US 20180337821A1 · Hall et al. · 2018 [cited by applicant]
US 20180375891A1 · Juncker · 2018 [cited by examiner]
US 20190028331A1 · Kovacheva · 2019 [cited by examiner]
US 20190065158A1 · Varadarajan et al. · 2019 [cited by applicant]
US 20190065159A1 · Varadarajan et al. · 2019 [cited by applicant]
US 20190227794A1 · Mercille · 2019 [cited by examiner]
US 20190250949A1 · Chen · 2019 [cited by examiner]
US 20190391798A1 · Farrell · 2019 [cited by examiner]
EP 1832976 · 2007 [cited by applicant]
Garefalakis Panagiotis et al: “ACaZoo: A Distributed Key-Value Store Based on Replicated LSM-Trees”, 2014 IEEE 33rd International Symposium on Reliable Distributed Systems, IEEE, Oct. 6, 2014, pp. 211-220, [retrieved on… [cited by applicant]
Notice of Allowance for U.S. Appl. No. 15/284,957 dated Oct. 25, 2017. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 15/474,713 dated Jun. 29, 2017. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 15/284,959 dated May 9, 2019. [cited by applicant]
Official Communication for European Patent Application No. 18171873.5 dated Nov. 6, 2018. [cited by applicant]
Official Communication for U.S. Appl. No. 15/284,957 dated Jun. 2, 2017. [cited by applicant]
Official Communication for U.S. Appl. No. 15/284,957 dated Apr. 3, 2017. [cited by applicant]
Official Communication for U.S. Appl. No. 15/284,959 dated Oct. 19, 2017. [cited by applicant]
Official Communication for U.S. Appl. No. 15/284,959 dated May 8, 2017. [cited by applicant]
Official Communication for U.S. Appl. No. 15/787,335 dated Dec. 19, 2017. [cited by applicant]
Official Communication for U.S. Appl. No. 17/178,290.7 dated Nov. 20, 2017. [cited by applicant]
Official Communication for U.S. Appl. No. 15/284,959 dated Mar. 2, 2018. [cited by applicant]
Official Communication for U.S. Appl. No. 15/787,335 dated Nov. 22, 2018. [cited by applicant]
Official Communication for U.S. Appl. No. 15/787,335 dated Jul. 5, 2018. [cited by applicant]
Official Communication for U.S. Appl. No. 16/365,411 dated May 23, 2019. [cited by applicant]
Shrivastava et al., “Architectural Support for Dynamic Reconfiguration of Large Scale Distributed Applications,” Proceedings of the Architectural Support for Dynamic Reconfiguration of Distributed Systems, May 4, 1998, … [cited by applicant]
Extended European Search Report for EP Appln. No. 19177848.9 dated Dec. 19, 2019, 11 pages. [cited by applicant]
Non-Final Office Action dated Jul. 8, 2021, issued in related U.S. Appl. No. 16/779,137 (26 pages). [cited by applicant]
Final Office Action dated Dec. 7, 2021, issued in related U.S. Appl. No. 16/779,137 (30 pages). [cited by applicant]
Non-Final Office Action dated Jul. 11, 2022, issued in related U.S. Appl. No. 16/779,137 (27 pages). [cited by applicant]
Notice of Allowance mailed Oct. 19, 2022, issued in related U.S. Appl. No. 16/779,137 (8 pages). [cited by applicant]
Examination Report dated Mar. 9, 2021, issued in related European Patent Application No. 19177848.9 (4 pages). [cited by applicant]
Second Examination Report dated Apr. 4, 2022, issued in related European Patent Application No. 19177848.9 (3 pages). [cited by applicant]