Skip to content

Commit 43c25df

Browse files
authored
[RSDK-11750] Improved error handling when removing modular resource (#989)
1 parent 3e1fb81 commit 43c25df

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

src/viam/module/module.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -258,10 +258,13 @@ async def remove_resource(self, request: RemoveResourceRequest):
258258
rn = resource_name_from_string(request.name)
259259
resource = self.server.get_resource(ResourceBase, rn)
260260
if isinstance(resource, Stoppable):
261-
if iscoroutinefunction(resource.stop):
262-
await resource.stop()
263-
else:
264-
resource.stop()
261+
try:
262+
if iscoroutinefunction(resource.stop):
263+
await resource.stop()
264+
else:
265+
resource.stop()
266+
except Exception as e:
267+
self.logger.warning(f"Could not remove resource named {resource.name}", exc_info=e)
265268
await self.server.remove_resource(rn)
266269

267270
async def ready(self, request: ReadyRequest) -> ReadyResponse:

src/viam/resource/manager.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,11 @@ async def remove_resource(self, name: ResourceName):
103103
try:
104104
resource = self.resources[name]
105105
await resource.close()
106-
except Exception as e:
107-
raise e
108106
finally:
109-
del self.resources[name]
107+
try:
108+
del self.resources[name]
109+
except KeyError:
110+
pass
110111

111112
async def close(self):
112113
"""Close the resourcce manager by removing all resources.

0 commit comments

Comments
 (0)