1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-16 23:42:43 +01:00

Cache connection failures

This commit is contained in:
Eelco Dolstra 2017-03-03 19:35:34 +01:00
parent 8490ee37a6
commit d1158bb816
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
2 changed files with 18 additions and 1 deletions

View file

@ -44,13 +44,26 @@ RemoteStore::RemoteStore(const Params & params)
: Store(params)
, connections(make_ref<Pool<Connection>>(
std::max(1, std::stoi(get(params, "max-connections", "1"))),
[this]() { return openConnection(); },
[this]() { return openConnectionWrapper(); },
[](const ref<Connection> & r) { return r->to.good() && r->from.good(); }
))
{
}
ref<RemoteStore::Connection> RemoteStore::openConnectionWrapper()
{
if (failed)
throw Error("opening a connection to remote store %s previously failed", getUri());
try {
return openConnection();
} catch (...) {
failed = true;
throw;
}
}
UDSRemoteStore::UDSRemoteStore(const Params & params)
: Store(params)
, LocalFSStore(params)