populationgenomics / metamist

Sample level metadata system
MIT License
1 stars 1 forks source link

'AnalysisInternal' object has no attribute 'sample_ids' #798

Closed MattWellie closed 2 months ago

MattWellie commented 2 months ago

I know that Analysis entries 217814 & 217815 exist, but I can't query for their individual entries via Swagger. I tried a few more IDs and this looks to be a general issue. I can return the entries through GraphQL. Not a pressing issue, just an observation really.

https://sample-metadata.populationgenomics.org.au/api/v1/analysis/217814/details

{
  "name": "AttributeError",
  "description": "'AnalysisInternal' object has no attribute 'sample_ids'",
  "stacktrace": "  + Exception Group Traceback (most recent call last):\n  |   File \"/usr/local/lib/python3.11/site-packages/starlette/_utils.py\", line 87, in collapse_excgroups\n  |     yield\n  |   File \"/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py\", line 190, in __call__\n  |     async with anyio.create_task_group() as task_group:\n  |   File \"/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py\", line 678, in __aexit__\n  |     raise BaseExceptionGroup(\n  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)\n  +-+---------------- 1 ----------------\n    | Traceback (most recent call last):\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py\", line 164, in __call__\n    |     await self.app(scope, receive, _send)\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py\", line 189, in __call__\n    |     with collapse_excgroups():\n    |   File \"/usr/local/lib/python3.11/contextlib.py\", line 158, in __exit__\n    |     self.gen.throw(typ, value, traceback)\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/_utils.py\", line 93, in collapse_excgroups\n    |     raise exc\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py\", line 191, in __call__\n    |     response = await self.dispatch_func(request, call_next)\n    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n    |   File \"/app/sample_metadata/api/server.py\", line 89, in add_process_time_header\n    |     response = await call_next(request)\n    |                ^^^^^^^^^^^^^^^^^^^^^^^^\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py\", line 165, in call_next\n    |     raise app_exc\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py\", line 151, in coro\n    |     await self.app(scope, receive_or_disconnect, send_no_error)\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py\", line 65, in __call__\n    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n    |     raise exc\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n    |     await app(scope, receive, sender)\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/routing.py\", line 756, in __call__\n    |     await self.middleware_stack(scope, receive, send)\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/routing.py\", line 776, in app\n    |     await route.handle(scope, receive, send)\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/routing.py\", line 297, in handle\n    |     await self.app(scope, receive, send)\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/routing.py\", line 77, in app\n    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n    |     raise exc\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n    |     await app(scope, receive, sender)\n    |   File \"/usr/local/lib/python3.11/site-packages/starlette/routing.py\", line 72, in app\n    |     response = await func(request)\n    |                ^^^^^^^^^^^^^^^^^^^\n    |   File \"/usr/local/lib/python3.11/site-packages/fastapi/routing.py\", line 278, in app\n    |     raw_response = await run_endpoint_function(\n    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n    |   File \"/usr/local/lib/python3.11/site-packages/fastapi/routing.py\", line 191, in run_endpoint_function\n    |     return await dependant.call(**values)\n    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n    |   File \"/app/sample_metadata/api/routes/analysis.py\", line 228, in get_analysis_by_id\n    |     result = await atable.get_analysis_by_id(analysis_id)\n    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n    |   File \"/app/sample_metadata/db/python/layers/analysis.py\", line 85, in get_analysis_by_id\n    |     project, analysis = await self.at.get_analysis_by_id(analysis_id)\n    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n    |   File \"/app/sample_metadata/db/python/tables/analysis.py\", line 482, in get_analysis_by_id\n    |     a.sample_ids.append(row['sequencing_group_id'])\n    |     ^^^^^^^^^^^^\n    |   File \"/usr/local/lib/python3.11/site-packages/pydantic/main.py\", line 811, in __getattr__\n    |     raise AttributeError(f'{type(self).__name__!r} object has no attribute {item!r}')\n    | AttributeError: 'AnalysisInternal' object has no attribute 'sample_ids'\n    +------------------------------------\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py\", line 164, in __call__\n    await self.app(scope, receive, _send)\n  File \"/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py\", line 189, in __call__\n    with collapse_excgroups():\n  File \"/usr/local/lib/python3.11/contextlib.py\", line 158, in __exit__\n    self.gen.throw(typ, value, traceback)\n  File \"/usr/local/lib/python3.11/site-packages/starlette/_utils.py\", line 93, in collapse_excgroups\n    raise exc\n  File \"/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py\", line 191, in __call__\n    response = await self.dispatch_func(request, call_next)\n               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/app/sample_metadata/api/server.py\", line 89, in add_process_time_header\n    response = await call_next(request)\n               ^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py\", line 165, in call_next\n    raise app_exc\n  File \"/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py\", line 151, in coro\n    await self.app(scope, receive_or_disconnect, send_no_error)\n  File \"/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py\", line 65, in __call__\n    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n  File \"/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n    raise exc\n  File \"/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n    await app(scope, receive, sender)\n  File \"/usr/local/lib/python3.11/site-packages/starlette/routing.py\", line 756, in __call__\n    await self.middleware_stack(scope, receive, send)\n  File \"/usr/local/lib/python3.11/site-packages/starlette/routing.py\", line 776, in app\n    await route.handle(scope, receive, send)\n  File \"/usr/local/lib/python3.11/site-packages/starlette/routing.py\", line 297, in handle\n    await self.app(scope, receive, send)\n  File \"/usr/local/lib/python3.11/site-packages/starlette/routing.py\", line 77, in app\n    await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n  File \"/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py\", line 64, in wrapped_app\n    raise exc\n  File \"/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n    await app(scope, receive, sender)\n  File \"/usr/local/lib/python3.11/site-packages/starlette/routing.py\", line 72, in app\n    response = await func(request)\n               ^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/fastapi/routing.py\", line 278, in app\n    raw_response = await run_endpoint_function(\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/fastapi/routing.py\", line 191, in run_endpoint_function\n    return await dependant.call(**values)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/app/sample_metadata/api/routes/analysis.py\", line 228, in get_analysis_by_id\n    result = await atable.get_analysis_by_id(analysis_id)\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/app/sample_metadata/db/python/layers/analysis.py\", line 85, in get_analysis_by_id\n    project, analysis = await self.at.get_analysis_by_id(analysis_id)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/app/sample_metadata/db/python/tables/analysis.py\", line 482, in get_analysis_by_id\n    a.sample_ids.append(row['sequencing_group_id'])\n    ^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/pydantic/main.py\", line 811, in __getattr__\n    raise AttributeError(f'{type(self).__name__!r} object has no attribute {item!r}')\nAttributeError: 'AnalysisInternal' object has no attribute 'sample_ids'\n"
}
nevoodoo commented 2 months ago

There are some changes in #791 that are pending a merge into main and those should fix this issue :)

MattWellie commented 2 months ago

Closed pending release