You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In my opinion, for things closely related (like Credential Definitions and Schemas), the response for duplicates should behave the same.
Instead of erroring with a "this already exists" message, it should respond as though the creation was successful and return the already existing definition.
MT Web logs when creating duplicate Credential Definition:
2023-10-04 09:02:39.751 | DEBUG | app.routes.definitions:create_credential_definition:224 | Publishing credential definition | tag='asdf' schema_id='Hd7nmadkMM7oayBNpkQJzU:2:test_schema:0.3.0' support_revocation=True revocation_registry_size=32767
INFO: 127.0.0.6:57209 - "POST /generic/definitions/credentials HTTP/1.1" 400 Bad Request
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "/usr/local/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
return await self.app(scope, receive, send)
File "/usr/local/lib/python3.9/site-packages/fastapi/applications.py", line 292, in __call__
await super().__call__(scope, receive, send)
File "/usr/local/lib/python3.9/site-packages/starlette/applications.py", line 122, in __call__
await self.middleware_stack(scope, receive, send)
File "/usr/local/lib/python3.9/site-packages/starlette/middleware/errors.py", line 184, in __call__
raise exc
File "/usr/local/lib/python3.9/site-packages/starlette/middleware/errors.py", line 162, in __call__
await self.app(scope, receive, _send)
File "/usr/local/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
raise exc
File "/usr/local/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
await self.app(scope, receive, sender)
File "/usr/local/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in __call__
raise e
File "/usr/local/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in __call__
await self.app(scope, receive, send)
File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 718, in __call__
await route.handle(scope, receive, send)
File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 276, in handle
await self.app(scope, receive, send)
File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 66, in app
response = await func(request)
File "/usr/local/lib/python3.9/site-packages/fastapi/routing.py", line 273, in app
raw_response = await run_endpoint_function(
File "/usr/local/lib/python3.9/site-packages/fastapi/routing.py", line 190, in run_endpoint_function
return await dependant.call(**values)
File "/app/routes/definitions.py", line 225, in create_credential_definition
result = await aries_controller.credential_definition.publish_cred_def(
File "/usr/local/lib/python3.9/site-packages/aries_cloudcontroller/api/credential_definition.py", line 79, in publish_cred_def
return await self.__publish_cred_def(
File "/usr/local/lib/python3.9/site-packages/uplink/clients/io/asyncio_strategy.py", line 32, in execute
return await executable.execute()
File "/usr/local/lib/python3.9/site-packages/uplink/clients/io/asyncio_strategy.py", line 19, in invoke
response = await callback.on_failure(type(error), error, tb)
File "/usr/local/lib/python3.9/site-packages/uplink/clients/io/asyncio_strategy.py", line 19, in invoke
response = await callback.on_failure(type(error), error, tb)
File "/usr/local/lib/python3.9/site-packages/uplink/clients/io/asyncio_strategy.py", line 19, in invoke
response = await callback.on_failure(type(error), error, tb)
File "/usr/local/lib/python3.9/site-packages/uplink/clients/io/execution.py", line 108, in on_failure
return self._io.fail(exc_type, exc_val, exc_tb)
File "/usr/local/lib/python3.9/site-packages/uplink/clients/io/execution.py", line 128, in fail
return self._io.fail(exc_type, exc_val, exc_tb)
File "/usr/local/lib/python3.9/site-packages/uplink/clients/io/interfaces.py", line 300, in fail
compat.reraise(exc_type, exc_val, exc_tb)
File "/usr/local/lib/python3.9/site-packages/six.py", line 719, in reraise
raise value
File "/usr/local/lib/python3.9/site-packages/uplink/clients/io/asyncio_strategy.py", line 16, in invoke
response = await func(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/uplink/builder.py", line 47, in wrapper
return func(self._consumer, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/uplink/hooks.py", line 110, in handle_exception
compat.reraise(exc_type, exc_val, exc_tb)
File "/usr/local/lib/python3.9/site-packages/six.py", line 719, in reraise
raise value
File "/usr/local/lib/python3.9/site-packages/uplink/clients/io/asyncio_strategy.py", line 16, in invoke
response = await func(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/uplink/builder.py", line 47, in wrapper
return func(self._consumer, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/uplink/hooks.py", line 110, in handle_exception
compat.reraise(exc_type, exc_val, exc_tb)
File "/usr/local/lib/python3.9/site-packages/six.py", line 719, in reraise
raise value
File "/usr/local/lib/python3.9/site-packages/uplink/clients/io/asyncio_strategy.py", line 16, in invoke
response = await func(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/uplink/clients/aiohttp_.py", line 133, in send
response = await session.request(method, url, **extras)
File "/usr/local/lib/python3.9/site-packages/aiohttp/client.py", line 643, in _request
resp.raise_for_status()
File "/usr/local/lib/python3.9/site-packages/aiohttp/client_reqrep.py", line 1005, in raise_for_status
raise ClientResponseError(
aiohttp.client_exceptions.ClientResponseError: 400, message='Cred def for Hd7nmadkMM7oayBNpkQJzU:2:test_schema:0.3.0 asdf already exists', url=URL('http://governance-multitenant-agent:4021/credential-definitions')
The text was updated successfully, but these errors were encountered:
When creating a duplicate Credential Schema, the response is the already existing Credential Schema:
However, when creating a duplicate Credential Definition, the response is
400
with a "this definition already exists" message:Instead of the already existing Credential Definition:
In my opinion, for things closely related (like Credential Definitions and Schemas), the response for duplicates should behave the same.
Instead of erroring with a "this already exists" message, it should respond as though the creation was successful and return the already existing definition.
MT Web logs when creating duplicate Credential Definition:
The text was updated successfully, but these errors were encountered: