DiamondLightSource / DiamondLightSource/python-murfey

Murfey validates ALL MachineConfigs in the MachineConfig file

Aberta
#488 0 comentários 0 reações 0 responsáveis Ver no GitHub
bug server
Linguagem predominante
Python
Estrelas
2
Forks
1
Merge médio
1d 10h
PRs com merge (30d)
19

Descrição

This means that multiple versions which have changed MachineConfig behaviour cannot coexist in the same file.

It might be worth modifying the function so that it only validates the MachineConfig relevant to the instrument of interest.

The current error:
- Updated the configs of one of our servers to reflect the new key format used in the latest Murfey release, but left the other ones untouched
- Noticed that Murfey server failed to start, so tried starting it manually while SSH'ed to one of our storage servers
- Got the following error message:
```text
$ murfey.server --feedback

[02/12/25 06:44:53] INFO Starting Murfey RabbitMQ thread __init__.py:310
INFO Starting Murfey server version 0.16.10 for __init__.py:314
beamline m14, listening on 0.0.0.0:8000
Traceback (most recent call last):
File "/dls_sw/apps/murfey/0.16.10/bin/murfey.server", line 8, in
sys.exit(run())
File "/dls_sw/apps/murfey/0.16.10/lib/python3.10/site-packages/murfey/server/__init__.py", line 330, in run
_running_server.run()
File "/dls_sw/apps/murfey/0.16.10/lib/python3.10/site-packages/uvicorn/server.py", line 66, in run
return asyncio.run(self.serve(sockets=sockets))
File "/dls_sw/apps/murfey/0.16.10/lib/python3.10/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "uvloop/loop.pyx", line 1518, in uvloop.loop.Loop.run_until_complete
File "/dls_sw/apps/murfey/0.16.10/lib/python3.10/site-packages/uvicorn/server.py", line 70, in serve
await self._serve(sockets)
File "/dls_sw/apps/murfey/0.16.10/lib/python3.10/site-packages/uvicorn/server.py", line 77, in _serve
config.load()
File "/dls_sw/apps/murfey/0.16.10/lib/python3.10/site-packages/uvicorn/config.py", line 435, in load
self.loaded_app = import_from_string(self.app)
File "/dls_sw/apps/murfey/0.16.10/lib/python3.10/site-packages/uvicorn/importer.py", line 19, in import_from_string
module = importlib.import_module(module_str)
File "/dls_sw/apps/murfey/0.16.10/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1050, in _gcd_import
File "", line 1027, in _find_and_load
File "", line 1006, in _find_and_load_unlocked
File "", line 688, in _load_unlocked
File "", line 883, in exec_module
File "", line 241, in _call_with_frames_removed
File "/dls_sw/apps/murfey/0.16.10/lib/python3.10/site-packages/murfey/server/main.py", line 14, in
import murfey.server.api.auth
File "/dls_sw/apps/murfey/0.16.10/lib/python3.10/site-packages/murfey/server/api/__init__.py", line 49, in
from murfey.server.api.auth import MurfeySessionID, validate_token
File "/dls_sw/apps/murfey/0.16.10/lib/python3.10/site-packages/murfey/server/api/auth.py", line 67, in
machine_config = get_machine_config()
File "/dls_sw/apps/murfey/0.16.10/lib/python3.10/site-packages/murfey/util/config.py", line 172, in get_machine_config
machine_config = from_file(
File "/dls_sw/apps/murfey/0.16.10/lib/python3.10/site-packages/murfey/util/config.py", line 77, in from_file
return {
File "/dls_sw/apps/murfey/0.16.10/lib/python3.10/site-packages/murfey/util/config.py", line 78, in
i: MachineConfig(**config[i])
File "pydantic/main.py", line 347, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 1 validation error for MachineConfig
create_directories
value is not a valid list (type=type_error.list)
```

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Direção de pesquisa

Comece em murfey/util/config.py, acompanhando get_machine_config() até from_file(), e depois rastreie como o instrumento de interesse é selecionado durante a inicialização de murfey.server --feedback. Verifique como as entradas mistas de MachineConfig são carregadas e validadas. Considera-se concluído quando uma configuração irrelevante com o formato de chave antigo não impede mais a inicialização do servidor do instrumento selecionado.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
python
Domínio
backend
Tipo de issue
Bug
Dificuldade
3/5
Tempo estimado
1-2 dias
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
48/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.