From 4d9ca6d09e25fd00b60788cdc009aa3b0bf6b8c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophane=20Hufschmitt?= Date: Mon, 11 Apr 2022 10:20:36 +0200 Subject: [PATCH] =?UTF-8?q?Fallback=20to=20the=20old=20mechanism=20if=20th?= =?UTF-8?q?e=20gc=20socket=20isn=E2=80=99t=20found?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libstore/gc.cc | 16 ++++++++++++++-- src/libstore/local-store.hh | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/libstore/gc.cc b/src/libstore/gc.cc index 75a535857..1edfe19ee 100644 --- a/src/libstore/gc.cc +++ b/src/libstore/gc.cc @@ -293,9 +293,19 @@ void LocalStore::findRootsNoTemp(Roots & roots, bool censor) } -Roots LocalStore::findRoots(bool censor) +Roots LocalStore::findRootsNoExternalDaemon(bool censor) { Roots roots; + findRootsNoTemp(roots, censor); + + FDs fds; + findTempRoots(fds, roots, censor); + + return roots; +} + +Roots LocalStore::findRoots(bool censor) +{ auto fd = AutoCloseFD(socket(PF_UNIX, SOCK_STREAM #ifdef SOCK_CLOEXEC @@ -317,7 +327,9 @@ Roots LocalStore::findRoots(bool censor) strcpy(addr.sun_path, socketPath.c_str()); if (::connect(fd.get(), (struct sockaddr *) &addr, sizeof(addr)) == -1) - throw SysError("cannot connect to the gc daemon at '%1%'", socketPath); + return findRootsNoExternalDaemon(censor); + + Roots roots; try { while (true) { diff --git a/src/libstore/local-store.hh b/src/libstore/local-store.hh index f89b64860..833e3f1bd 100644 --- a/src/libstore/local-store.hh +++ b/src/libstore/local-store.hh @@ -250,6 +250,8 @@ private: PathSet queryValidPathsOld(); ValidPathInfo queryPathInfoOld(const Path & path); + Roots findRootsNoExternalDaemon(bool censor); + void findRoots(const Path & path, unsigned char type, Roots & roots); void findRootsNoTemp(Roots & roots, bool censor);