forked from lix-project/hydra
Prevent inputs from being garbage collected during evaluation
There is still a tiny window between the calls to nix-prefetch-* and addTempRoot. This could be eliminated by adding a "-o" option to nix-prefetch-*, or by not using those scripts at all (and use addToStore directly).
This commit is contained in:
parent
d959afebe1
commit
ca58e97691
|
@ -36,6 +36,8 @@ sub fetchInput {
|
||||||
(my $cachedInput) = $self->{db}->resultset('CachedBazaarInputs')->search(
|
(my $cachedInput) = $self->{db}->resultset('CachedBazaarInputs')->search(
|
||||||
{uri => $uri, revision => $revision});
|
{uri => $uri, revision => $revision});
|
||||||
|
|
||||||
|
addTempRoot($cachedInput->storepath) if defined $cachedInput;
|
||||||
|
|
||||||
if (defined $cachedInput && isValidPath($cachedInput->storepath)) {
|
if (defined $cachedInput && isValidPath($cachedInput->storepath)) {
|
||||||
$storePath = $cachedInput->storepath;
|
$storePath = $cachedInput->storepath;
|
||||||
$sha256 = $cachedInput->sha256hash;
|
$sha256 = $cachedInput->sha256hash;
|
||||||
|
@ -53,6 +55,9 @@ sub fetchInput {
|
||||||
|
|
||||||
($sha256, $storePath) = split ' ', $stdout;
|
($sha256, $storePath) = split ' ', $stdout;
|
||||||
|
|
||||||
|
# FIXME: time window between nix-prefetch-bzr and addTempRoot.
|
||||||
|
addTempRoot($storePath);
|
||||||
|
|
||||||
txn_do($self->{db}, sub {
|
txn_do($self->{db}, sub {
|
||||||
$self->{db}->resultset('CachedBazaarInputs')->create(
|
$self->{db}->resultset('CachedBazaarInputs')->create(
|
||||||
{ uri => $uri
|
{ uri => $uri
|
||||||
|
|
|
@ -96,6 +96,8 @@ sub fetchInput {
|
||||||
{uri => $uri, branch => $branch, revision => $revision},
|
{uri => $uri, branch => $branch, revision => $revision},
|
||||||
{rows => 1});
|
{rows => 1});
|
||||||
|
|
||||||
|
addTempRoot($cachedInput->storepath) if defined $cachedInput;
|
||||||
|
|
||||||
if (defined $cachedInput && isValidPath($cachedInput->storepath)) {
|
if (defined $cachedInput && isValidPath($cachedInput->storepath)) {
|
||||||
$storePath = $cachedInput->storepath;
|
$storePath = $cachedInput->storepath;
|
||||||
$sha256 = $cachedInput->sha256hash;
|
$sha256 = $cachedInput->sha256hash;
|
||||||
|
@ -124,6 +126,9 @@ sub fetchInput {
|
||||||
# FIXME: Don't use nix-prefetch-git.
|
# FIXME: Don't use nix-prefetch-git.
|
||||||
($sha256, $storePath) = split ' ', grab(cmd => ["nix-prefetch-git", $clonePath, $revision], chomp => 1);
|
($sha256, $storePath) = split ' ', grab(cmd => ["nix-prefetch-git", $clonePath, $revision], chomp => 1);
|
||||||
|
|
||||||
|
# FIXME: time window between nix-prefetch-git and addTempRoot.
|
||||||
|
addTempRoot($storePath);
|
||||||
|
|
||||||
txn_do($self->{db}, sub {
|
txn_do($self->{db}, sub {
|
||||||
$self->{db}->resultset('CachedGitInputs')->update_or_create(
|
$self->{db}->resultset('CachedGitInputs')->update_or_create(
|
||||||
{ uri => $uri
|
{ uri => $uri
|
||||||
|
|
|
@ -62,6 +62,8 @@ sub fetchInput {
|
||||||
(my $cachedInput) = $self->{db}->resultset('CachedHgInputs')->search(
|
(my $cachedInput) = $self->{db}->resultset('CachedHgInputs')->search(
|
||||||
{uri => $uri, branch => $branch, revision => $revision});
|
{uri => $uri, branch => $branch, revision => $revision});
|
||||||
|
|
||||||
|
addTempRoot($cachedInput->storepath) if defined $cachedInput;
|
||||||
|
|
||||||
if (defined $cachedInput && isValidPath($cachedInput->storepath)) {
|
if (defined $cachedInput && isValidPath($cachedInput->storepath)) {
|
||||||
$storePath = $cachedInput->storepath;
|
$storePath = $cachedInput->storepath;
|
||||||
$sha256 = $cachedInput->sha256hash;
|
$sha256 = $cachedInput->sha256hash;
|
||||||
|
@ -76,6 +78,9 @@ sub fetchInput {
|
||||||
|
|
||||||
($sha256, $storePath) = split ' ', $stdout;
|
($sha256, $storePath) = split ' ', $stdout;
|
||||||
|
|
||||||
|
# FIXME: time window between nix-prefetch-hg and addTempRoot.
|
||||||
|
addTempRoot($storePath);
|
||||||
|
|
||||||
txn_do($self->{db}, sub {
|
txn_do($self->{db}, sub {
|
||||||
$self->{db}->resultset('CachedHgInputs')->update_or_create(
|
$self->{db}->resultset('CachedHgInputs')->update_or_create(
|
||||||
{ uri => $uri
|
{ uri => $uri
|
||||||
|
|
|
@ -43,6 +43,8 @@ sub fetchInput {
|
||||||
(my $cachedInput) = $self->{db}->resultset('CachedSubversionInputs')->search(
|
(my $cachedInput) = $self->{db}->resultset('CachedSubversionInputs')->search(
|
||||||
{uri => $uri, revision => $revision});
|
{uri => $uri, revision => $revision});
|
||||||
|
|
||||||
|
addTempRoot($cachedInput->storepath) if defined $cachedInput;
|
||||||
|
|
||||||
if (defined $cachedInput && isValidPath($cachedInput->storepath)) {
|
if (defined $cachedInput && isValidPath($cachedInput->storepath)) {
|
||||||
$storePath = $cachedInput->storepath;
|
$storePath = $cachedInput->storepath;
|
||||||
$sha256 = $cachedInput->sha256hash;
|
$sha256 = $cachedInput->sha256hash;
|
||||||
|
|
Loading…
Reference in a new issue