aries-cloudagent-python: Regression: plugin defined protocols not working in 0.8.1
ca8308fde4 broke the ability to load a protocol in a plugin. Below is the resulting error:
agent_1 | 2023-05-04 20:57:40,368 aries_cloudagent.transport.pack_format DEBUG Expanded message: {'@type': 'https://didcomm.org/data-transfer/0.1/provide-data', '@id': 'a4ce6262-233d-43bb-9c60-ae6b98986218', 'goal_code': 'test_goal', 'data~attach': [{'description': 'test data attachment', 'data': {'json': {'test': 'data'}}}]}
agent_1 | 2023-05-04 20:57:40,368 aiohttp.access INFO 10.89.0.5 [04/May/2023:20:57:40 +0000] "POST / HTTP/1.1" 200 149 "-" "Python/3.7 aiohttp/3.8.1"
agent_1 | 2023-05-04 20:57:40,372 aries_cloudagent.core.conductor ERROR Exception in message handler:
agent_1 | Traceback (most recent call last):
agent_1 | File "/usr/local/lib/python3.9/asyncio/tasks.py", line 256, in __step
agent_1 | result = coro.send(None)
agent_1 | File "/usr/src/app/.venv/lib/python3.9/site-packages/aries_cloudagent/core/dispatcher.py", line 155, in handle_message
agent_1 | (message, warning) = await self.make_message(
agent_1 | File "/usr/src/app/.venv/lib/python3.9/site-packages/aries_cloudagent/core/dispatcher.py", line 318, in make_message
agent_1 | _, warning = await validate_get_response_version(
agent_1 | File "/usr/src/app/.venv/lib/python3.9/site-packages/aries_cloudagent/core/util.py", line 49, in validate_get_response_version
agent_1 | version_definition = await get_version_def_from_msg_class(
agent_1 | File "/usr/src/app/.venv/lib/python3.9/site-packages/aries_cloudagent/core/util.py", line 151, in get_version_def_from_msg_class
agent_1 | definition_path = _get_path_from_msg_class(msg_class)
agent_1 | File "/usr/src/app/.venv/lib/python3.9/site-packages/aries_cloudagent/core/util.py", line 117, in _get_path_from_msg_class
agent_1 | path = split_str + path.rsplit(split_str, 1)[1]
agent_1 | IndexError: list index out of range
The lines added in aries_cloudagent.core.util
make it impossible to load a protocol because the path to the protocol is not guaranteed to include aries_cloudagent
as part of it, resulting in the IndexError seen above.
This is quite unfortunate and effectively renders several plugins in the wild incompatible with 0.8.1.
A somewhat minimal reproducible example can be found here: https://github.com/Indicio-tech/aries-acapy-plugin-data-transfer/pull/5 Failing integration test here: https://github.com/Indicio-tech/aries-acapy-plugin-data-transfer/actions/runs/4887340386/jobs/8723798002?pr=5 (see “Print logs on failure” step in job to see logs pasted above)
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 22 (22 by maintainers)
thanks for that. was definitely doing something more difficult.
@dbluhm - see PR #2255. This will help with your setup but is still not going to solve it for everyone (Traction). I would like to know your process for testing this out with your plugin. I must be missing something simple because I could not figure out an easy way to get a local version of ACA-Py code into your image for your plugin. I did it, but not ideal…
Didn’t have to change anything in your code, didn’t have to add
ACAPY_HOME
, just use ACA-Py as fixed in #2255 and your test passed.If we can do a quick fix for that for now, that would be great. If it is that recent, I assume we can come up with something better and get a 0.8.2 out ASAP.
Thanks for that. Ok, when I’m back Monday I’ll do a deep dive and get familiar with old and new.