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:
parent
8490ee37a6
commit
d1158bb816
2 changed files with 18 additions and 1 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue