hydra/src/sql/upgrade-76.sql
Damien Diederen df7dab1291 GitInput: Include deepClone option in the cache key
Without this commit, two jobsets using the same repository as input,
but different `deepClone` options, end up incorrectly sharing the same
"checkout" for a given (`uri`, `branch`, `revision`) tuple.  The
presence or absence of `.git` is determined by the jobset execution
order.

This patch adds the missing `isDeepClone` boolean to the cache key.

The database upgrade script empties the `CachedGitInputs` table, as we
don't know if existing checkouts are deep clones.  Unfortunately, this
generally forces rebuilds even for correct `deepClone` checkouts, as
the binary contents of `.git` are not deterministic.

Fixes #510
2021-06-19 17:37:40 +02:00

13 lines
491 B
SQL

-- We don't know if existing checkouts are deep clones. This will
-- force a new fetch (and most likely trigger a new build for deep
-- clones, as the binary contents of '.git' are not deterministic).
DELETE FROM CachedGitInputs;
ALTER TABLE CachedGitInputs
ADD COLUMN isDeepClone BOOLEAN NOT NULL;
ALTER TABLE CachedGitInputs DROP CONSTRAINT cachedgitinputs_pkey;
ALTER TABLE CachedGitInputs ADD CONSTRAINT cachedgitinputs_pkey
PRIMARY KEY (uri, branch, revision, isDeepClone);