aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2022-11-27 13:30:26 +0100
committerGitHub <noreply@github.com>2022-11-27 13:30:26 +0100
commitcc308ee93d5b2027e1270295daa860fd73b71917 (patch)
tree836df800b9abeb9e6e1d7d659bab1d902767805d /src
parent534332c8a03b64161ec795d1deb2ba3d48f27be1 (diff)
parent5b798f6caeab64854394e1250e30aab91241cf26 (diff)
Merge pull request #7353 from edolstra/gc-shutdown
Fix random client failures during GC server shutdown
Diffstat (limited to 'src')
-rw-r--r--src/libstore/gc.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libstore/gc.cc b/src/libstore/gc.cc
index 9ef8972f3..5d91829f1 100644
--- a/src/libstore/gc.cc
+++ b/src/libstore/gc.cc
@@ -147,7 +147,7 @@ void LocalStore::addTempRoot(const StorePath & path)
} catch (SysError & e) {
/* The garbage collector may have exited, so we need to
restart. */
- if (e.errNo == EPIPE) {
+ if (e.errNo == EPIPE || e.errNo == ECONNRESET) {
debug("GC socket disconnected");
state->fdRootsSocket.close();
goto restart;
@@ -506,6 +506,7 @@ void LocalStore::collectGarbage(const GCOptions & options, GCResults & results)
Finally cleanup([&]() {
debug("GC roots server shutting down");
+ fdServer.close();
while (true) {
auto item = remove_begin(*connections.lock());
if (!item) break;