Skip to content

Commit 02902e7

Browse files
authored
RSDK-4275 Handle construct_resource errors in module service (#154)
1 parent 31bed7f commit 02902e7

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

src/viam/sdk/module/service.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,11 @@ ::grpc::Status ModuleService_::AddResource(::grpc::ServerContext* context,
7575
const Dependencies deps = get_dependencies(this, request->dependencies());
7676
const std::shared_ptr<ModelRegistration> reg = Registry::lookup_model(cfg.api(), cfg.model());
7777
if (reg) {
78-
res = reg->construct_resource(deps, cfg);
78+
try {
79+
res = reg->construct_resource(deps, cfg);
80+
} catch (const std::exception& exc) {
81+
return grpc::Status(::grpc::INTERNAL, exc.what());
82+
}
7983
};
8084
const std::unordered_map<API, std::shared_ptr<ResourceManager>>& services = module->services();
8185
if (services.find(cfg.api()) == services.end()) {
@@ -127,8 +131,12 @@ ::grpc::Status ModuleService_::ReconfigureResource(
127131

128132
const std::shared_ptr<ModelRegistration> reg = Registry::lookup_model(cfg.name());
129133
if (reg) {
130-
const std::shared_ptr<Resource> res = reg->construct_resource(deps, cfg);
131-
manager->replace_one(cfg.resource_name(), res);
134+
try {
135+
const std::shared_ptr<Resource> res = reg->construct_resource(deps, cfg);
136+
manager->replace_one(cfg.resource_name(), res);
137+
} catch (const std::exception& exc) {
138+
return grpc::Status(::grpc::INTERNAL, exc.what());
139+
}
132140
}
133141

134142
return grpc::Status();

0 commit comments

Comments
 (0)