forked from lix-project/lix
Merge pull request #7353 from edolstra/gc-shutdown
Fix random client failures during GC server shutdown
This commit is contained in:
commit
cc308ee93d
|
@ -147,7 +147,7 @@ void LocalStore::addTempRoot(const StorePath & path)
|
||||||
} catch (SysError & e) {
|
} catch (SysError & e) {
|
||||||
/* The garbage collector may have exited, so we need to
|
/* The garbage collector may have exited, so we need to
|
||||||
restart. */
|
restart. */
|
||||||
if (e.errNo == EPIPE) {
|
if (e.errNo == EPIPE || e.errNo == ECONNRESET) {
|
||||||
debug("GC socket disconnected");
|
debug("GC socket disconnected");
|
||||||
state->fdRootsSocket.close();
|
state->fdRootsSocket.close();
|
||||||
goto restart;
|
goto restart;
|
||||||
|
@ -506,6 +506,7 @@ void LocalStore::collectGarbage(const GCOptions & options, GCResults & results)
|
||||||
|
|
||||||
Finally cleanup([&]() {
|
Finally cleanup([&]() {
|
||||||
debug("GC roots server shutting down");
|
debug("GC roots server shutting down");
|
||||||
|
fdServer.close();
|
||||||
while (true) {
|
while (true) {
|
||||||
auto item = remove_begin(*connections.lock());
|
auto item = remove_begin(*connections.lock());
|
||||||
if (!item) break;
|
if (!item) break;
|
||||||
|
|
Loading…
Reference in a new issue