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
QPTEVLEO6L6VII42UNKTIOGXVK27BOWNMEVO7ZPRTYV6AVZTATXQC
IGR322YPZG7IX33I6CSF4ZIHFKXCT4ERC2LC73MW6PN7W53D73BAC
JAH3UPWAVSHXIPNGL6PROQPZBYZHPJNFONWBDZX4HCX646USZXUQC
SB2V735VJ2CDHGCXRUA5FOYHDRXQFVOZ3KXC3YKXWRNW6DIX7RXQC
JM3DPYOMVNMCL5GMEYC3Y4NDRGTNIFBBFTPGPVT66GPENVPU7EVQC
JJT5QG3KOCWGMOTBN7BJFCUKDCLMB4O6K2PP32KL7WKXKABSZXFAC
BK24VA6QHPE6XLXUXPLJMOT75WEXHZ6PPOFLYFUP4U4NYS5FVGWAC
O25D52TAMOPAK45N4II5XMWOBMPQJNHLW22M37COVY43EKNQBWJAC
N22GPKYTOLZLBGTGDATQDVZ4R5APZEAOIA7L32X4UXBH4XNI7MWAC
D5QIOJGPKQJIYBUCSC3MFJ3TXLPNZ2XMI37GXMFRVRFWWR2VMTFAC
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:0sdK9uQZpx869oqS5thRLw
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2021-06-19 17:26:24
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Wr0grsFTaqRlMeM9vpXjrw
-- 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);