IP Library Granted Patent US 9,870,221
Granted Patent B2
US 9,870,221 · App. 14/765,099 · Granted Jan 16, 2018

Providing code change job sets of different sizes to validators

Inventors: Elad Benedict (Yehud, IL); Liron Tzabari (Yehud, IL); Amir Wigelman (Yehud, IL)
Assignee: EntIT Software LLC
G06F8/70G06F8/30G06F11/3688G06F11/3692
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,870,221
App. No.
14/765,099
Granted
Jan 16, 2018
Kind
B2
Abstract

Examples disclosed herein relate to providing code change job sets of different sizes to validators. Examples include placing a plurality of jobs in a queue, each job including at least one code change requested to be committed to shared code. Examples further include providing job sets of different sizes to a plurality of validators, each of the job sets comprising a consecutive group of one or more of the jobs in the queue at a given time and beginning with the job at the front of the queue at the given time.

Claims (62)

1. A method executed by a system comprising a processor, comprising:

placing a plurality of jobs in a queue, each job including at least one code change requested to be committed to shared code;

determining, with a processing resource and based on a job failure probability, a set size distribution based on a number of the jobs probabilistically expected to be successfully validated as a group by a plurality of validators provided respective job sets having different respective sizes specified by the set size distribution;

providing the job sets to the validators, respectively, each job set comprising a consecutive group of the jobs in the queue at a given time and beginning with the job at the front of the queue at the given time;

receiving, from each validator, an indication of whether all of the jobs of the provided job set were successfully validated as a group by the validator;

identifying, based on the received indications, the largest job set of the job sets respectively validated by the validators;

committing to the shared code each code change of each job of the identified largest job set;

removing from the queue each job of the identified largest job set; and

identifying an earliest invalid job in the queue.

2. The method of claim 1 , further comprising:

committing to the shared code each of the code changes of the jobs preceding the earliest invalid job in the queue;

determining a current fail interval based on the number of jobs between the identified earliest invalid job and an immediately preceding invalid job; and

updating the job failure probability based on the current fail interval.

3. The method of claim 2 , further comprising:

determining, based on the updated job failure probability, a further set size distribution based on a number of the jobs, remaining in the queue at a subsequent time, probabilistically expected to be successfully validated as a group by the validators provided respective other job sets having respective sizes specified by the further set size distribution; and

providing the other job sets to the validators, respectively, each other job set comprising a consecutive group of the jobs remaining in the queue at the subsequent time and beginning with the job at the front of the queue at the subsequent time.

4. The method of claim 1 , wherein the set size distribution comprises a distribution of sizes of the respective job sets, each size in the set size distribution specifying a number of jobs in the respective job set, and

wherein a first job set of the job sets includes multiple jobs, and a second job set of the job sets includes the multiple jobs and a further job that is not part of the first job set.

5. A system comprising:

a processor; and

a non-transitory storage medium storing instructions executable on the processor to:

place each of a plurality of received jobs in a queue, each job of the plurality of received jobs including at least one code change requested to be committed to shared code;

determine a set size distribution based on a job failure probability representing, for any given job of the plurality of received jobs, a probability of the given job failing validation;

provide a plurality of job sets, having different respective sizes specified by the determined set size distribution, to a plurality of validators, respectively, each job set of the plurality of job sets comprising a respective group of consecutive jobs in the queue at a given time and sharing and beginning with the job at the front of the queue at the given time;

receive, from each respective validator of the plurality of validators, an indication of whether all of the jobs of the job set provided to the respective validator were successfully validated as a group by the respective validator;

identify, based on the received indications, the largest job set of the job sets successfully validated by the validators;

commit, to the shared code, each code change of each of the jobs of the identified largest job set; and

remove from the queue each of the jobs of the identified largest job set.

6. The system of claim 5 , wherein the instructions are executable on the processor to:

determine, for each of a plurality of potential set size distributions, a number of jobs probabilistically expected to be successfully validated as a group by the validators given the potential set size distribution as the respective sizes of the job sets; and

determine the set size distribution to be the potential set size distribution having a maximum probabilistically expected number of jobs among the plurality of potential set size distributions.

7. The system of claim 5 , further comprising:

at least a given one of the validators, the given validator to:

update a copy of the shared code with all of the code changes of the jobs provided to the given validator;

perform a plurality of tests on the updated copy of the shared code; and

output, as the indication from the given validator, a success indication specifying that all of the jobs of the job set provided to the given validator were successfully validated as a group by the given validator, in response to a determination that the updated copy of the shared code passed all of the plurality of tests.

8. The system of claim 7 , wherein the given validator is to further:

determine whether any of the code changes of the provided job set are identified as being a fix for a defect;

in response to a determination that at least one of the code changes is identified as being a fix for a defect, access an application lifecycle management (ALM) system to identify at least one test associated with the defect; and

in response to the determination, perform the at least one identified test as part of the plurality of tests.

9. The system of claim 5 , wherein a first job set of the plurality of job sets includes multiple jobs, and a second job set of the plurality of job sets includes the multiple jobs and a further job that is not part of the first job set.

10. A non-transitory machine-readable storage medium encoded with instructions executable by a processing resource of a computing device to:

receive a plurality of jobs, each job of the plurality of jobs including at least one code change requested to be committed to shared code;

place each of the plurality of jobs in a queue;

determine a set size distribution based on a job failure probability representing, for any given job of the plurality of jobs, a probability of the given job failing validation;

provide different size job sets to respective validators of a plurality of validators, the different size job sets having different respective sizes specified by the determined set size distribution, each job set of the different size job sets comprising a respective group of consecutive jobs in the queue at a given time and sharing the job at the front of the queue at the given time;

receive, from each respective validator of the plurality of validators, an indication of whether all of the jobs of the job set provided to the respective validator were successfully validated as a group by the respective validator;

identify, based on the received indications, the largest job set of the different size job sets successfully validated by the validators;

commit, to the shared code, each code change of each of the jobs of the identified largest job set; and

remove from the queue each of the jobs of the identified largest job set.

11. The non-transitory machine-readable storage medium of claim 10 ,

wherein the respective size of each respective job set of the different size job sets specifies a number of jobs in the respective job set.

12. The non-transitory machine-readable storage medium of claim 11 ,

wherein the set size distribution is determined based on, for each given set size of the set size distribution, the probability of validation succeeding for a job set of the given set size and failing for any job set of another set size of the set size distribution larger than the given set size.

13. The non-transitory machine-readable storage medium of claim 11 ,

wherein the set size distribution is determined based on a number of the jobs probabilistically expected to be successfully validated as a group by the validators given the set size distribution that includes the respective sizes of the different size job sets.

14. The non-transitory machine-readable storage medium of claim 13 , wherein the instructions to determine the set size distribution comprise instructions to:

determine, for each of a plurality of potential set size distributions based on the job failure probability and a number of the plurality of validators, a number of jobs probabilistically expected to be successfully validated as a group by the validators given the potential set size distribution as the respective sizes of the different size job sets provided to the validators; and

select, as the set size distribution, the potential set size distribution for which a largest number of jobs was determined.

15. The non-transitory machine-readable storage medium of claim 10 , wherein the different size job sets are overlapping job sets that share multiple jobs.

16. The non-transitory machine-readable storage medium of claim 15 , wherein a first job set of the different size job sets includes the multiple jobs, and a second job set of the different size job sets includes the multiple jobs and a further job that is not part of the first job set.

17. The non-transitory machine-readable storage medium of claim 16 , wherein a third job set of the different size job sets includes the multiple jobs, the further job, and an additional job, the additional job not part of the first and second job sets.

Assignments (8)
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0577 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC)
Reel/Frame 063560/0001 →
CHANGE OF NAME Recorded Aug 8, 2019
From: ENTIT SOFTWARE LLC
To: MICRO FOCUS LLC
Reel/Frame 050004/0001 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ENTIT SOFTWARE LLC; ARCSIGHT, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0577 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2017
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
To: ENTIT SOFTWARE LLC
Reel/Frame 042746/0130 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2015
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 037079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2015
From: BENEDICT, ELAD; TZABARI, LIRON; WIGELMAN, AMIR
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 036227/0028 →
Continuity (1)
Related Publication 20150370554A1 · Dec 24, 2015