lix/src/libstore
Sergei Trofimovich d58453f72e gc: don't visit implicit referrers on garbage collection
Before the change garbage collector was not considering
`.drv` and outputs as alive even if configuration says otherwise.
As a result `nix store gc --dry-run` could visit (and parse)
`.drv` files multiple times (worst case it's quadratic).

It happens because `alive` set was populating only runtime closure
without regard for actual configuration. The change fixes it.

Benchmark: my system has about 139MB, 40K `.drv` files.

Performance before the change:

    $ time nix store gc --dry-run
    real    4m22,148s

Performance after the change:

    $ time nix store gc --dry-run
    real    0m14,178s
2022-03-17 18:47:29 +00:00
..
build Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
builtins Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
tests Add error reporting to machine spec paser 2021-10-17 12:45:56 +04:00
binary-cache-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
binary-cache-store.hh Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
build-result.hh BuildResult: Remove unused drvPath field 2022-03-09 20:31:50 +01:00
builtins.hh buildenv: Eliminate global variables, other cleanup 2020-03-24 14:06:47 +01:00
ca-specific-schema.sql ca-specific-schema.sql: add index on RealisationsRefs(referrer) and (outputPath) 2021-11-10 08:32:05 +00:00
content-address.cc Fix use after free in content-address.cc 2021-11-23 16:15:34 +01:00
content-address.hh Add ContentAddressMethod and parse/render it 2020-09-17 20:21:04 +02:00
crypto.cc Make sodium a required dependency 2021-01-06 17:56:53 +01:00
crypto.hh crypto.cc: API cleanup and add generate() / to_string() methods 2021-01-06 17:04:46 +01:00
daemon.cc Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
daemon.hh Add missing #pragma once 2020-10-06 10:40:07 +02:00
derivations.cc Reduce variants for derivation hash modulo 2022-03-11 21:20:37 +00:00
derivations.hh Reduce variants for derivation hash modulo 2022-03-11 21:20:37 +00:00
derived-path.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
derived-path.hh Enfore the use of properly built paths in libcmd 2021-05-17 08:45:08 +02:00
dummy-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
export-import.cc Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
filetransfer.cc Fix segfault in headerCallback() 2022-03-03 11:11:16 +01:00
filetransfer.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
fs-accessor.hh Use the fs accessor for readInvalidDerivation 2020-12-15 20:10:46 +01:00
gc-store.hh Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
gc.cc gc: don't visit implicit referrers on garbage collection 2022-03-17 18:47:29 +00:00
globals.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
globals.hh Move some stuff from Settings to a new FetchSettings. 2022-03-01 01:39:25 +00:00
http-binary-cache-store.cc Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
legacy-ssh-store.cc BuildResult: Use DerivedPath 2022-03-09 12:25:35 +01:00
local-binary-cache-store.cc BinaryCacheStore: Implement addBuildLog() 2022-01-18 16:14:01 +01:00
local-fs-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
local-fs-store.hh Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
local-store.cc Reduce variants for derivation hash modulo 2022-03-11 21:20:37 +00:00
local-store.hh Factor out a GcStore interface 2022-03-03 19:01:25 +00:00
local.mk Merge pull request #5175 from Pamplemousse/make 2021-08-30 12:44:29 +02:00
lock.cc Trim lock.cc 2020-10-11 16:44:19 +00:00
lock.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
log-store.hh Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
machines.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
machines.hh Remove std::string alias 2022-02-21 16:37:25 +01:00
misc.cc queryMissing(): Use a bigger thread pool 2021-12-13 21:11:37 +01:00
names.cc return string_views from forceString* 2022-01-27 17:15:43 +01:00
names.hh Remove std::string alias 2022-02-21 16:37:25 +01:00
nar-accessor.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
nar-accessor.hh Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
nar-info-disk-cache.cc Simplify the realisations disk cache 2021-05-10 17:47:14 +02:00
nar-info-disk-cache.hh Add a realisations disk cache 2021-05-06 17:38:20 +02:00
nar-info.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
nar-info.hh Minimize the usage of Hash::dummy 2020-08-06 18:31:48 +00:00
nix-store.pc.in pkg-config files: Use c++17 2019-03-14 14:11:12 +01:00
optimise-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
parsed-derivations.cc convert a for more utilities to string_view 2022-01-27 17:15:43 +01:00
parsed-derivations.hh Style 2021-07-12 17:32:23 +02:00
path-info.cc Low-latency closure copy 2021-07-26 13:31:09 +02:00
path-info.hh Low-latency closure copy 2021-07-26 13:31:09 +02:00
path-with-outputs.cc Factor out a GcStore interface 2022-03-03 19:01:25 +00:00
path-with-outputs.hh buildable.{cc,hh} -> derived-path.{cc,hh} 2021-04-05 10:33:28 -04:00
path.cc Move StorePathWithOutputs into its own header/file 2021-04-05 08:31:37 -04:00
path.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
pathlocks.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
pathlocks.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
profiles.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
profiles.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
realisation.cc Fix the build with nlohmann/json 3.10.4+ 2022-01-19 14:37:54 +01:00
realisation.hh buildPaths(): Add an evalStore argument 2021-07-22 09:59:51 +02:00
references.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
references.hh Add a test for RefScanSink and clean up the code 2021-10-04 14:29:42 +02:00
remote-fs-accessor.cc Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
remote-fs-accessor.hh Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
remote-store.cc BuildResult: Use DerivedPath 2022-03-09 12:25:35 +01:00
remote-store.hh Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
s3-binary-cache-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
s3-binary-cache-store.hh Overhaul store subclassing 2020-12-20 15:47:14 +00:00
s3.hh Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
sandbox-defaults.sb Set new rosetta 2 path in sandbox 2021-11-22 14:42:31 -06:00
sandbox-minimal.sb Always use the Darwin sandbox 2017-06-06 18:44:49 +02:00
sandbox-network.sb OS X sandbox: Improve builtin sandbox profile 2017-05-31 17:25:51 +02:00
schema.sql Mark content-addressed paths in the Nix database and in .narinfo 2016-08-10 18:05:35 +02:00
serve-protocol.hh nix-store --serve: pass on settings.keepFailed from SSH store 2021-08-31 13:11:46 +02:00
sqlite.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
sqlite.hh Merge remote-tracking branch 'origin/master' into flakes 2020-06-17 10:26:52 +02:00
ssh-store.cc Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
ssh.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
ssh.hh distributed builds: load remote builder host key from the machines file 2021-02-25 09:17:34 -05:00
store-api.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
store-api.hh Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
store-cast.hh Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
uds-remote-store.cc Non-blocking garbage collector 2021-10-13 12:12:44 +02:00
uds-remote-store.hh Shut down write side before draining the read side 2021-09-23 18:01:04 +02:00
worker-protocol.hh Add Store::buildPathsWithResults() 2022-03-08 19:56:34 +01:00