Murfey validates ALL MachineConfigs in the MachineConfig file

未关闭
#488 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
48/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
python
领域
backend

调研方向

从 murfey/util/config.py 开始,沿着 get_machine_config() 跟踪到 from_file(),然后追踪在 murfey.server --feedback 启动期间如何选择相关 instrument。检查混合的 MachineConfig 条目如何加载和验证。完成的标准是:采用旧 key 格式的无关配置不再阻止所选 instrument 的 server 启动。

由索引模型根据 Issue 内容生成。

描述

bug server

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:
$ 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 <module>
    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 "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", 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 <module>
    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 <module>
    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 <module>
    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 <dictcomp>
    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)
主要语言
Python
星标
2
派生
1
平均合并
1 天 12 小时
30 天内合并 PR
22

贡献指南

这个仓库没有索引到贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

DiamondLightSource/python-murfey 的其他 Issue

查看 DiamondLightSource/python-murfey 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。