Age | Commit message (Collapse) | Author | |
---|---|---|---|
2022-03-17 | gc: don't visit implicit referrers on garbage collection | Sergei Trofimovich | |
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-13 | nix store gc: account for auto-optimised store | Sergei Trofimovich | |
Before the change on a system with `auto-optimise-store = true`: $ nix store gc --verbose --max 1 deleted all the paths instead of one path (we requested 1 byte limit). It happens because every file in `auto-optimise-store = true` has at least 2 links: file itself and a link in /nix/store/.links/ directory. The change conservatively assumes that any file that has one (as before) or two links (assume auto-potimise mode) will free space. Co-authored-by: Sandro <sandro.jaeckel@gmail.com> | |||
2022-02-28 | Fix Darwin build | Eelco Dolstra | |
Fixes #6169 | |||
2022-02-25 | Remove std::string alias (for real this time) | Eelco Dolstra | |
Also use std::string_view in a few more places. | |||
2021-12-13 | More debug info | Eelco Dolstra | |
2021-12-13 | Retry on ECONNREFUSED | Eelco Dolstra | |
https://hydra.nixos.org/build/161439235 | |||
2021-12-13 | Explicitly make GC roots client sockets blocking | Eelco Dolstra | |
On macOS / BSD, these sockets inherit the non-blocking flag of the server soocket, which is not what we want. https://github.com/dotnet/runtime/issues/25069 https://bugs.python.org/issue7995 https://hydra.nixos.org/build/161439304 | |||
2021-11-22 | Unify #if linux | Alex Shabalin | |
2021-11-19 | Fix build warnings on MacOS | Alex Shabalin | |
2021-10-28 | Use nix::connect() to connect to the garbage collector | Eelco Dolstra | |
2021-10-28 | Remove unused variable | Eelco Dolstra | |
2021-10-15 | Add a test for the non-blocking GC | Eelco Dolstra | |
2021-10-15 | Fix main GC thread exiting | Eelco Dolstra | |
2021-10-15 | Fix crash when a GC client disconnects | Eelco Dolstra | |
The client thread can't just delete its own thread object from connections, it has to detach it. | |||
2021-10-15 | Memoize queryReferrers() | Eelco Dolstra | |
2021-10-14 | Speed up GC by marking entire closures as live | Eelco Dolstra | |
2021-10-14 | Remove GCState | Eelco Dolstra | |
2021-10-14 | Move deleteFromStore() | Eelco Dolstra | |
2021-10-14 | Make the canReachRoots() traversal non-recursive | Eelco Dolstra | |
2021-10-13 | Fix GC when there are cycles in the referrers graph | Eelco Dolstra | |
(where "referrers" includes the reverse of derivation outputs and derivers). Now we do a full traversal to look if we can reach any root. If not, all paths reached can be deleted. | |||
2021-10-13 | Simplify | Eelco Dolstra | |
2021-10-13 | Use a thread per connection | Eelco Dolstra | |
2021-10-13 | Fix auto-gc | Eelco Dolstra | |
2021-10-13 | Non-blocking garbage collector | Eelco Dolstra | |
The garbage collector no longer blocks other processes from adding/building store paths or adding GC roots. To prevent the collector from deleting store paths just added by another process, processes need to connect to the garbage collector via a Unix domain socket to register new temporary roots. | |||
2021-10-13 | Remove syncWithGC() | Eelco Dolstra | |
2021-10-13 | Remove trash directory | Eelco Dolstra | |
2021-06-18 | UDSRemoteStore: Support the 'root' store parameter | Eelco Dolstra | |
Useful when we're using a daemon with a chroot store, e.g. $ NIX_DAEMON_SOCKET_PATH=/tmp/chroot/nix/var/nix/daemon-socket/socket nix-daemon --store /tmp/chroot Then the client can now connect with $ nix build --store unix:///tmp/chroot/nix/var/nix/daemon-socket/socket?root=/tmp/chroot nixpkgs#hello | |||
2020-10-12 | Handle amount of disk space saved by hard linking being negative | volth | |
Fixes bogus messages like "currently hard linking saves 17592186044416.00 MiB". | |||
2020-10-09 | Split out `local-fs-store.hh` | John Ericson | |
This matches the already-existing `local-fs-store.cc`. | |||
2020-09-23 | lstat() cleanup | Eelco Dolstra | |
2020-09-17 | Fix garbage collection of CA derivations | regnat | |
Fix #4026 | |||
2020-09-03 | Remove gc-check-reachability | Eelco Dolstra | |
2020-09-03 | addPermRoot(): Remove indirect flag | Eelco Dolstra | |
2020-07-30 | unsigned long long -> uint64_t | Eelco Dolstra | |
2020-07-13 | toStorePath(): Return a StorePath and the suffix | Eelco Dolstra | |
2020-06-16 | Remove StorePath::clone() and related functions | Eelco Dolstra | |
2020-06-15 | Get rid of explicit ErrorInfo constructors | Eelco Dolstra | |
2020-05-13 | formatting and a few minor changes | Ben Burdette | |
2020-05-13 | consistent capitalization | Ben Burdette | |
2020-05-13 | change status messages to info level | Ben Burdette | |
2020-05-11 | Merge branch 'master' into errors-phase-2 | Ben Burdette | |
2020-05-06 | todo removal | Ben Burdette | |
2020-05-06 | Merge pull request #3546 from guibou/nix_readfile_on_0_sized_files | Eelco Dolstra | |
builtins.readFile: do not truncate content | |||
2020-05-04 | nix auto-gc: use fragment size | Jude Taylor | |
2020-05-01 | convert some errors | Ben Burdette | |
2020-04-29 | Remove the `drain` argument from `readFile` | Guillaume Bouchard | |
Now it is always `drain` (see previous commit). | |||
2020-04-21 | remove 'format' from Error constructor calls | Ben Burdette | |
2020-04-09 | gc.cc: Ignore hidden files in temproots | Philipp Middendorf | |
2020-02-28 | Fix GC failures on bad store path names | Eelco Dolstra | |
It failed on names like '/nix/store/9ip48nkc9rfy0a4yaw98lp6gipqlib1a-'. | |||
2020-01-05 | build: fix sandboxing on darwin | Daiderd Jordan | |
Starting ba87b08f8529e4d9f8c58d8c625152058ceadb75 getEnv now returns an std::optional which means these getEnv() != "" conditions no longer happen if the variables are not defined. |