From 053a1380023591e8eb3f514b4214226c95da207d Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Sat, 8 Aug 2020 14:30:55 -0400 Subject: [PATCH] fix(tvix): Wrap remaining RPCs in HandleExceptions Wrap the BuildPaths and AddTextToStore RPC handlers in HandleExceptions. These were missed in the original pass due to a merge. Change-Id: Ie5be45e6098fba7a2b6b1c1be81578cb742c2880 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1689 Tested-by: BuildkiteCI Reviewed-by: kanepyork --- .../nix/src/nix-daemon/nix-daemon-proto.cc | 50 +++++++++++-------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/third_party/nix/src/nix-daemon/nix-daemon-proto.cc b/third_party/nix/src/nix-daemon/nix-daemon-proto.cc index 33e440dfd..58dbec04f 100644 --- a/third_party/nix/src/nix-daemon/nix-daemon-proto.cc +++ b/third_party/nix/src/nix-daemon/nix-daemon-proto.cc @@ -256,35 +256,43 @@ class WorkerServiceImpl final : public WorkerService::Service { Status AddTextToStore(grpc::ServerContext*, const nix::proto::AddTextToStoreRequest* request, nix::proto::StorePath* response) override { - PathSet references; - for (const auto& ref : request->references()) { - references.insert(ref); - } - auto path = - store_->addTextToStore(request->name(), request->content(), references); - response->set_path(path); - return Status::OK; + return HandleExceptions( + [&]() -> Status { + PathSet references; + for (const auto& ref : request->references()) { + references.insert(ref); + } + auto path = store_->addTextToStore(request->name(), + request->content(), references); + response->set_path(path); + return Status::OK; + }, + __FUNCTION__); } Status BuildPaths(grpc::ServerContext*, const nix::proto::BuildPathsRequest* request, google::protobuf::Empty*) override { - PathSet drvs; - for (const auto& drv : request->drvs()) { - drvs.insert(drv); - } - auto mode = BuildModeFrom(request->mode()); + return HandleExceptions( + [&]() -> Status { + PathSet drvs; + for (const auto& drv : request->drvs()) { + drvs.insert(drv); + } + auto mode = BuildModeFrom(request->mode()); - if (!mode.has_value()) { - return Status(grpc::StatusCode::INTERNAL, "Invalid build mode"); - } + if (!mode.has_value()) { + return Status(grpc::StatusCode::INTERNAL, "Invalid build mode"); + } - // TODO(grfn): If mode is repair and not trusted, we need to return an error - // here (but we can't yet because we don't know anything about trusted - // users) - store_->buildPaths(drvs, mode.value()); + // TODO(grfn): If mode is repair and not trusted, we need to return an + // error here (but we can't yet because we don't know anything about + // trusted users) + store_->buildPaths(drvs, mode.value()); - return Status::OK; + return Status::OK; + }, + __FUNCTION__); } Status AddTempRoot(grpc::ServerContext*, const nix::proto::StorePath* request,