Data Model Changelog

Record changes to the ZooKeeper data model which require API version increases here.

When making a model change:

  • Increment the value of MODEL_API in model_api.py.

  • Update code to use the new API by default and add backwards-compatibility handling for older versions. This makes it easier to clean up backwards-compatibility handling in the future.

  • Make sure code that special cases model versions either references a model_api variable or has a comment like MODEL_API: > {version} so that we can grep for that and clean up compatability code that is no longer needed.

  • Add a test to test_model_upgrade.py.

  • Add an entry to this log so we can decide when to remove backwards-compatibility handlers.

Version 0

Prior Zuul version:

4.11.0

Description:

This is an implied version as of Zuul 4.12.0 to initialize the series.

Version 1

Prior Zuul version:

4.11.0

Description:

No change since Version 0. This explicitly records the component versions in ZooKeeper.

Version 2

Prior Zuul version:

5.0.0

Description:

Changes the sempahore handle format from <item_uuid>-<job_name> to a dictionary with buildset path and job name.

Version 3

Prior Zuul version:

5.0.0

Description:

Add a new SupercedeEvent and use that for dequeuing of superceded items from other pipelines. This only affects the schedulers.

Version 4

Prior Zuul version:

5.1.0

Description:

Adds QueueItem.dequeued_missing_requirements and sets it to True if a change no longer meets merge requirements in dependent pipelines. This only affects schedulers.

Version 5

Prior Zuul version:

5.1.0

Description:

Changes the result data attributes on Build from ResultData to JobData instances and uses the inline/offloading paradigm from FrozenJob. This affects schedulers and executors.

Version 6

Prior Zuul version:

5.2.0

Description:

Stores the complete layout min_ltimes in /zuul/layout-data. This only affects schedulers.

Version 7

Prior Zuul version:

5.2.2

Description:

Adds the blob store and stores large secrets in it. Playbook secret references are now either an integer index into the job secret list, or a dict with a blob store key. This affects schedulers and executors.

Version 8

Prior Zuul version:

6.0.0

Description:

Deduplicates jobs in dependency cycles. Affects schedulers only.

Version 9

Prior Zuul version:

6.3.0

Description:

Adds nodeset_alternatives and nodeset_index to frozen job. Removes nodset from frozen job. Affects schedulers and executors.

Version 10

Prior Zuul version:

6.4.0

Description:

Renames admin_rules to authz_rules in unparsed abide. Affects schedulers and web.

Version 11

Prior Zuul version:

8.0.1

Description:

Adds merge_modes to branch cache. Affects schedulers and web.

Version 12

Prior Zuul version:

8.0.1

Description:

Adds job_versions and build_versions to BuildSet. Affects schedulers.

Version 13

Prior Zuul version:

8.2.0

Description:

Stores only the necessary event info as part of a queue item instead of the full trigger event. Affects schedulers.

Version 14

Prior Zuul version:

8.2.0

Description:

Adds the pre_fail attribute to builds. Affects schedulers.

Version 15

Prior Zuul version:

9.0.0

Description:

Adds ansible_split_streams to FrozenJob. Affects schedulers and executors.

Version 16

Prior Zuul version:

9.0.0

Description:

Adds default_branch to the branch cache. Affects schedulers.

Version 17

Prior Zuul version:

9.1.0

Description:

Adds ZuulRegex and adjusts SourceContext serialialization. Affects schedulers and web.

Version 18

Prior Zuul version:

9.2.0

Description:

Adds new merge modes ‘recursive’ and ‘ort’ for the Github driver.

Version 19

Prior Zuul version:

9.2.0

Description:

Changes the storage path of a frozen job to use the job’s UUID instead of the name as identifier.

Version 20

Prior Zuul version:

9.2.0

Description:

Send (secret) job parent and artifact data via build request parameters instead of updating the job. Affects schedulers and executors.

Version 21

Prior Zuul version:

9.3.0

Description:

Add job_dependencies and job_dependents fields to job graphs. Affects schedulers.

Version 22

Prior Zuul version:

9.3.0

Description:

Add model_version field to job graphs and index jobs by uuid. Affects schedulers.

Version 23

Prior Zuul version:

9.3.0

Description:

Add model_version field to bulid sets. Affects schedulers.

Version 24

Prior Zuul version:

9.3.0

Description:

Add job_uuid to NodeRequests. Affects schedulers.

Version 25

Prior Zuul version:

9.3.0

Description:

Add job_uuid to BuildRequests and BuildResultEvents. Affects schedulers and executors.

Version 26

Prior Zuul version:

9.5.0

Description:

Refactor circular dependencies. Affects schedulers and executors.

Version 27

Prior Zuul version:

10.0.0

Description:

Refactor branch cache. Affects schedulers and web.

Version 28

Prior Zuul version:

10.1.0

Description:

Store repo state in blobstore. Affects schedulers and executor.

Version 29

Prior Zuul version:

10.1.0

Description:

Store BuildSet.dependent_changes as change refs. Affects schedulers.

Version 30

Prior Zuul version:

10.2.0

Description:

Store playbook nesting_level and cleanup on frozen job. Affects schedulers and executors.

Version 31

Prior Zuul version:

11.0.1

Description:

Upgrade sharded zkobject format.