IP Library Granted Patent US 9,710,253
Granted Patent B2
US 9,710,253 · App. 14/742,566 · Granted Jul 18, 2017

Managing a software-patch submission queue

Inventor: Ketan Bansod (South Amboy, NJ)
Assignee: COMMVAULT SYSTEMS, INC.
G06F8/65
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 9,710,253
App. No.
14/742,566
Granted
Jul 18, 2017
Kind
B2
Abstract

Queued software patches are analyzed before one patch is chosen as the next patch to be integrated into a working build. The chosen patch might not be next in chronological order of arrival at the queue. Instead, an illustrative build server applies a number of priority factors to every patch awaiting integration in the patch queue, specifically by analyzing one or more relevant attributes of the patch. The patch that receives the highest priority score in the course of the evaluation is then extracted for integration. After the patch has been integrated, the build server (e.g., using an illustrative patch queue manager module) circles back and again evaluates all the patches in the current queue, which may have queued new patches that were submitted while the previous patch was being integrated. Relative to a default chronological order, a given patch may receive a boost in priority or, conversely, may have its priority reduced.

Claims (100)

1. A computer-implemented method for managing software patch submissions for integration into a working build, the method comprising executing on a first computing device the steps of:

receiving, by the first computing device, a plurality of software patches from one or more second computing devices,

wherein each software patch comprises one or more executable software files and is submitted for integration into a first set of executable software files that collectively defines a working build;

queueing, by the first computing device, the plurality of submitted software patches into a queue;

assigning, by the first computing device, to each software patch in the queue, a respective priority score based on at least one of:

(a) a geographical location where the respective software patch was submitted to the queue for integration into the working build,

(b) a time of day at a geographical location where the respective software patch was submitted to the queue for integration into the working build,

(c) an indication that the respective software patch fixes a problem of an earlier software patch that failed integration into the working build,

(d) an indication that the respective software patch previously had its priority score lowered due to a failed dependency on an antecedent software patch and which dependency is currently satisfied,

(e) an indication that the respective software patch was successfully tested with one or more customers before being submitted to the queue for integration into the working build,

(f) whether the respective software patch was submitted to the queue after a predefined deadline, and

(g) whether the respective software patch was submitted by a user who has at least one other software patch assigned to a failed-patch pool;

selecting, by the first computing device, a first software patch from the queue as a next software patch to be integrated into the working build,

wherein the first software patch has a highest priority score among the software patches in the queue, and

wherein another software patch arrived at the queue before the first software patch;

integrating the first software patch into the working build, resulting in an updated working build that comprises a functionality of the first software patch; and

wherein the respective priority score of a given software patch is lowered when the given software patch was submitted by a user who has at least one other software patch assigned to the failed-patch pool.

2. A computer-implemented method for managing software patch submissions for integration into a working build, the method comprising executing on a first computing device the steps of:

receiving, by the first computing device, a plurality of software patches from one or more second computing devices,

wherein each software patch comprises one or more executable software files and is submitted for integration into a first set of executable software files that collectively defines a working build;

queueing, by the first computing device, the plurality of submitted software patches into a queue;

assigning, by the first computing device, to each software patch in the queue, a respective priority score based on at least one of:

(a) a geographical location where the respective software patch was submitted to the queue for integration into the working build,

(b) a time of day at a geographical location where the respective software patch was submitted to the queue for integration into the working build,

(c) an indication that the respective software patch fixes a problem of an earlier software patch that failed integration into the working build,

(d) an indication that the respective software patch previously had its priority score lowered due to a failed dependency on an antecedent software patch and which dependency is currently satisfied,

(e) an indication that the respective software patch was successfully tested with one or more customers before being submitted to the queue for integration into the working build,

(f) whether the respective software patch was submitted to the queue after a predefined deadline, and

(g) whether the respective software patch was submitted by a user who has at least one other software patch assigned to a failed-patch pool;

selecting, by the first computing device, a first software patch from the queue as a next software patch to be integrated into the working build,

wherein the first software patch has a highest priority score among the software patches in the queue, and

wherein another software patch arrived at the queue before the first software patch;

integrating the first software patch into the working build, resulting in an updated working build that comprises a functionality of the first software patch; and

wherein the respective priority score of a given software patch is raised when a first geographical location where the given software patch was submitted is below a predefined geographical difference relative to a second geographical location where the working build is integrated, and the respective priority score of the given software patch is lowered when the first geographical location where the given software patch was submitted is more than the predefined geographical difference relative to the second geographical location where the working build is integrated.

3. A computer-implemented method for managing software patch submissions for integration into a working build, the method comprising executing on a first computing device the steps of:

receiving, by the first computing device, a plurality of software patches from one or more second computing devices,

wherein each software patch comprises one or more executable software files and is submitted for integration into a first set of executable software files that collectively defines a working build;

queueing, by the first computing device, the plurality of submitted software patches into a queue;

assigning, by the first computing device, to each software patch in the queue, a respective priority score based on at least one of:

(a) a geographical location where the respective software patch was submitted to the queue for integration into the working build,

(b) a time of day at a geographical location where the respective software patch was submitted to the queue for integration into the working build,

(c) an indication that the respective software patch fixes a problem of an earlier software patch that failed integration into the working build,

(d) an indication that the respective software patch previously had its priority score lowered due to a failed dependency on an antecedent software patch and which dependency is currently satisfied,

(e) an indication that the respective software patch was successfully tested with one or more customers before being submitted to the queue for integration into the working build,

(f) whether the respective software patch was submitted to the queue after a predefined deadline, and

(g) whether the respective software patch was submitted by a user who has at least one other software patch assigned to a failed-patch pool;

selecting, by the first computing device, a first software patch from the queue as a next software patch to be integrated into the working build,

wherein the first software patch has a highest priority score among the software patches in the queue, and

wherein another software patch arrived at the queue before the first software patch;

integrating the first software patch into the working build, resulting in an updated working build that comprises a functionality of the first software patch; and

wherein the respective priority score of a given software patch is raised when a first time of day at a first geographical location where the given software patch was submitted is below a predefined time difference relative to a second time of day at a second geographical location where the working build is integrated, and the respective priority score of the given software patch is lowered when the first time of day at the first geographical location where the given patch was submitted is more than the predefined time difference relative to the second time of day at the second geographical location where the working build is integrated.

4. A computer-implemented method for managing software patch submissions for integration into a working build, the method comprising executing on a first computing device the steps of:

receiving, by the first computing device, a plurality of software patches from one or more second computing devices,

wherein each software patch comprises one or more executable software files and is submitted for integration into a first set of executable software files that collectively defines a working build;

queueing, by the first computing device, the plurality of submitted software patches into a queue;

assigning, by the first computing device, to each software patch in the queue, a respective priority score based on at least one of:

(a) a geographical location where the respective software patch was submitted to the queue for integration into the working build,

(b) a time of day at a geographical location where the respective software patch was submitted to the queue for integration into the working build,

(c) an indication that the respective software patch fixes a problem of an earlier software patch that failed integration into the working build,

(d) an indication that the respective software patch previously had its priority score lowered due to a failed dependency on an antecedent software patch and which dependency is currently satisfied,

(e) an indication that the respective software patch was successfully tested with one or more customers before being submitted to the queue for integration into the working build,

(f) whether the respective software patch was submitted to the queue after a predefined deadline, and

(g) whether the respective software patch was submitted by a user who has at least one other software patch assigned to a failed-patch pool;

selecting, by the first computing device, a first software patch from the queue as a next software patch to be integrated into the working build,

wherein the first software patch has a highest priority score among the software patches in the queue, and

wherein another software patch arrived at the queue before the first software patch;

integrating the first software patch into the working build, resulting in an updated working build that comprises a functionality of the first software patch; and

wherein the respective priority score of a given software patch in the queue is:

(a) raised on the indication that the given software patch fixes a problem of an earlier software patch that failed integration into the working build,

(b) raised on the indication that the given software patch previously had its priority score lowered due to a failed dependency on an antecedent software patch, and

(c) raised on the indication that the given software patch was successfully tested with one or more customers before being submitted to the queue.

5. A non-transitory computer-readable medium storing instructions, which when executed by a first computing device comprising at least one processor and non-transitory computer memory, cause the first computing device to perform a method comprising:

receiving, by the first computing device, a plurality of software patches from one or more second computing devices,

wherein each software patch comprises one or more executable software files and is submitted for integration into a first set of executable software files that collectively defines a working build;

queueing, by the first computing device, the plurality of submitted software patches into a queue;

assigning, by the first computing device, to each software patch in the queue, a respective priority score based on:

(a) a geographical location where the respective software patch was submitted to the queue for integration into the working build,

(b) a time of day at a geographical location where the respective software patch was submitted to the queue for integration into the working build,

(c) an indication that the respective software patch fixes a problem of an earlier software patch that failed integration into the working build,

(d) an indication that the respective software patch previously had its priority score lowered due to a failed dependency on an antecedent software patch and which dependency is currently satisfied,

(e) an indication that the respective software patch was successfully tested with one or more customers before being submitted to the queue for integration into the working build,

(f) whether the respective software patch was submitted to the queue after a predefined deadline, and

(g) whether the respective software patch was submitted by a user who has at least one other software patch assigned to a failed-patch pool;

selecting, by the first computing device, a first patch from the queue as a next patch to be integrated into the working build,

wherein first patch has a highest priority score among the software patches in the queue, and

wherein another software patch arrived at the queue before the first software patch;

and

integrating the first software patch into the working build, resulting in an updated working build that comprises a functionality of the first software patch.

6. The non-transitory computer-readable medium of claim 5 wherein before assigning the respective priority score to a given software patch which was submitted to the queue after a predefined deadline, removing the given software patch from the queue.

7. The non-transitory computer-readable medium of claim 5 wherein before assigning the respective priority score to a given software patch submitted by a user who has at least one other software patch assigned to a failed-patch pool, removing the given software patch from the queue.

8. The non-transitory computer readable medium of claim 5 wherein the respective priority score of a given software patch is lowered when the given software patch was submitted by a user who has at least one other software patch assigned to the failed-patch pool.

9. The non-transitory computer readable medium of claim 5 wherein the respective priority score of a given software patch is raised when a first geographical location where the given software patch was submitted is below a predefined geographical difference relative to a second geographical location where the working build is integrated, and

the respective priority score of the given software patch is lowered when the first geographical location where the given software patch was submitted is more than the predefined geographical difference relative to the second geographical location where the working build is integrated.

10. The non-transitory computer readable medium of claim 5 wherein

the respective priority score of a given software patch is raised when a first time of day at a first geographical location where the given software patch was submitted is below a predefined time difference relative to a second time of day at a second geographical location where the working build is integrated, and

the respective priority score of the given software patch is lowered when the first time of day at the first geographical location where the given patch was submitted is more than the predefined time difference relative to the second time of day at the second geographical location where the working build is integrated.

11. The non-transitory computer readable medium of claim 5 wherein the respective priority score of a given software patch in the queue is:

(a) raised on the indication that the given software patch fixes a problem of an earlier software patch that failed integration into the working build,

(b) raised on the indication that the given software patch previously had its priority score lowered due to a failed dependency on an antecedent software patch, and

(c) raised on the indication that the given software patch was successfully tested with one or more customers before being submitted to the queue.

Assignments (3)
SUPPLEMENTAL CONFIRMATORY GRANT OF SECURITY INTEREST IN UNITED STATES PATENTS Recorded Apr 16, 2025
From: COMMVAULT SYSTEMS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 070864/0344 →
SECURITY INTEREST Recorded Dec 13, 2021
From: COMMVAULT SYSTEMS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 058496/0836 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 19, 2015
From: BANSOD, KETAN
To: COMMVAULT SYSTEMS, INC.
Reel/Frame 035869/0790 →
Continuity (2)
Provisional Application 62148546 · Apr 16, 2015
Related Publication 20160306618A1 · Oct 20, 2016