Skip to content

Calling RPC method to identity that doesn't exist terminates agent that made the call #3221

@cmromo

Description

@cmromo

Describe the bug
A clear and concise description of what the bug is.

Attempting to call an RPC method on an agent (or other identity) which does not exist in the platform causes the VIP loop of the agent that made the call to break, terminating the agent.

To Reproduce
Steps to reproduce the behavior:

self.vip.rpc.call("platform.does_not_exist", "some_method")

Expected behavior
In VOLTTRON 8, this merely timed out, which could be caught with a gevent.timeout.Timeout exception clause

Screenshots
If applicable, add screenshots to help explain your problem.

Operating System (please complete the following information):

  • OS: [e.g. iOS]
  • Volttron Version [develop, releases/8.2, main]

Currently using VOLTTRON 9.0.4 (our fork, but has not been modified from upstream)

Additional context
Add any other context about the problem here.

It seems the error handling method is receiving a string instead of an errno object, which cannot be cast to an int.

Here is the traceback:

2025-10-31 10:13:18	

2025-10-31 15:13:18,770 (break_rpcagent-0.1 128353 [122]) main DEBUG: breaking via RPC

2025-10-31 10:13:18
2025-10-31 15:13:18,775 (break_rpcagent-0.1 128353 [0]) ERROR: Traceback (most recent call last):

2025-10-31 10:13:18
2025-10-31 15:13:18,775 (break_rpcagent-0.1 128353 [0]) ERROR: handle(message)

2025-10-31 10:13:18
2025-10-31 15:13:18,775 (break_rpcagent-0.1 128353 [0]) ERROR: File "/var/lib/volttron/volttron/platform/vip/agent/core.py", line 834, in vip_loop

2025-10-31 10:13:18
2025-10-31 15:13:18,775 (break_rpcagent-0.1 128353 [0]) ERROR: File "src/gevent/greenlet.py", line 908, in gevent._gevent_cgreenlet.Greenlet.run

2025-10-31 10:13:18
2025-10-31 15:13:18,775 (break_rpcagent-0.1 128353 [0]) ERROR: error = VIPError.from_errno(*args)

2025-10-31 10:13:18
2025-10-31 15:13:18,775 (break_rpcagent-0.1 128353 [0]) ERROR: File "/var/lib/volttron/volttron/platform/vip/agent/core.py", line 585, in handle_error

2025-10-31 10:13:18
2025-10-31 15:13:18,775 (break_rpcagent-0.1 128353 [0]) ERROR: errnum = int(errnum)

2025-10-31 10:13:18
2025-10-31 15:13:18,775 (break_rpcagent-0.1 128353 [0]) ERROR: File "/var/lib/volttron/volttron/platform/vip/agent/errors.py", line 52, in from_errno

2025-10-31 10:13:18
2025-10-31 15:13:18,775 (break_rpcagent-0.1 128353 [0]) ERROR: 2025-10-31T15:13:18Z <Greenlet at 0x7359f5a891c0: vip_loop> failed with ValueError

2025-10-31 10:13:18
2025-10-31 15:13:18,775 (break_rpcagent-0.1 128353 [0]) ERROR: ValueError: invalid literal for int() with base 10: 'Errno.EHOSTUNREACH'

2025-10-31 10:13:18
2025-10-31 15:13:18,776 (break_rpcagent-0.1 128353 [0]) ERROR: Traceback (most recent call last):

2025-10-31 10:13:18
2025-10-31 15:13:18,776 (break_rpcagent-0.1 128353 [0]) ERROR: File "src/gevent/greenlet.py", line 908, in gevent._gevent_cgreenlet.Greenlet.run

2025-10-31 10:13:18
2025-10-31 15:13:18,776 (break_rpcagent-0.1 128353 [0]) ERROR: File "/var/lib/volttron/volttron/platform/vip/agent/core.py", line 294, in run

2025-10-31 10:13:18
2025-10-31 15:13:18,776 (break_rpcagent-0.1 128353 [0]) ERROR: raise RuntimeError('VIP loop ended prematurely')

2025-10-31 10:13:18
2025-10-31 15:13:18,776 (break_rpcagent-0.1 128353 [0]) ERROR: RuntimeError: VIP loop ended prematurely

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions