forked from lix-project/hydra
hydra-queue-runner: Write GC roots for outputs paths
We lost this behaviour somewhere. So build outputs could be GC'ed when running the collector with --option gc-keep-outputs false.
This commit is contained in:
parent
eb7631fb9d
commit
45b138373b
|
@ -263,6 +263,9 @@ State::StepResult State::doBuildStep(nix::ref<Store> destStore,
|
||||||
|
|
||||||
assert(stepNr);
|
assert(stepNr);
|
||||||
|
|
||||||
|
for (auto & path : step->drv.outputPaths())
|
||||||
|
writeFile(rootsDir + "/" + baseNameOf(path), "");
|
||||||
|
|
||||||
/* Register success in the database for all Build objects that
|
/* Register success in the database for all Build objects that
|
||||||
have this step as the top-level step. Since the queue
|
have this step as the top-level step. Since the queue
|
||||||
monitor thread may be creating new referring Builds
|
monitor thread may be creating new referring Builds
|
||||||
|
|
|
@ -87,6 +87,7 @@ State::State()
|
||||||
, maxOutputSize(config->getIntOption("max_output_size", 2ULL << 30))
|
, maxOutputSize(config->getIntOption("max_output_size", 2ULL << 30))
|
||||||
, maxLogSize(config->getIntOption("max_log_size", 64ULL << 20))
|
, maxLogSize(config->getIntOption("max_log_size", 64ULL << 20))
|
||||||
, uploadLogsToBinaryCache(config->getBoolOption("upload_logs_to_binary_cache", false))
|
, uploadLogsToBinaryCache(config->getBoolOption("upload_logs_to_binary_cache", false))
|
||||||
|
, rootsDir(config->getStrOption("gc_roots_dir", fmt("%s/gcroots/per-user/%s/hydra-roots", settings.nixStateDir, getEnv("USER"))))
|
||||||
{
|
{
|
||||||
debug("using %d bytes for the NAR buffer", memoryTokens.capacity());
|
debug("using %d bytes for the NAR buffer", memoryTokens.capacity());
|
||||||
|
|
||||||
|
|
|
@ -221,6 +221,9 @@ bool State::getQueuedBuilds(Connection & conn,
|
||||||
Derivation drv = readDerivation(build->drvPath);
|
Derivation drv = readDerivation(build->drvPath);
|
||||||
BuildOutput res = getBuildOutputCached(conn, destStore, drv);
|
BuildOutput res = getBuildOutputCached(conn, destStore, drv);
|
||||||
|
|
||||||
|
for (auto & path : drv.outputPaths())
|
||||||
|
writeFile(rootsDir + "/" + baseNameOf(path), "");
|
||||||
|
|
||||||
{
|
{
|
||||||
auto mc = startDbUpdate();
|
auto mc = startDbUpdate();
|
||||||
pqxx::work txn(conn);
|
pqxx::work txn(conn);
|
||||||
|
|
|
@ -436,6 +436,11 @@ private:
|
||||||
|
|
||||||
bool uploadLogsToBinaryCache;
|
bool uploadLogsToBinaryCache;
|
||||||
|
|
||||||
|
/* Where to store GC roots. Defaults to
|
||||||
|
/nix/var/nix/gcroots/per-user/$USER/hydra-roots, overridable
|
||||||
|
via gc_roots_dir. */
|
||||||
|
nix::Path rootsDir;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
State();
|
State();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue