Skip to content

[r2cn] 修复mono启动时数据库端口检测的问题 #1386

Description

@benjamin-747

[任务] 修复mono启动时数据库端口检测的问题

[任务分值] 10 分

[背景描述]

当前 mono 服务在启动时需要检查数据库连接情况,以决定使用何种存储方式。具体流程是:
1. 启动时尝试连接 PostgreSQL(PG)。
2. 如果检测到 PG 无法连接,则会回退(fallback)到使用 SQLite 作为本地存储。

目前在实现中,检测 PG 的逻辑是通过尝试连接 localhost 的 PG 服务,但遇到以下问题:
• 在某些环境下,使用 localhost 解析时会因为 DNS、hosts 配置、IPv6 优先等原因导致连接失败,即使 PG 实际上是可用的。
• 将 localhost 替换为 127.0.0.1 后则可以正常连接。

[需求描述]

  1. 修复数据库检测逻辑,确保启动时能正确判断 PG 的可用性。
  2. 提供可观测性:在 fallback 时记录日志,便于问题追踪。

[代码标准]

  1. 所有 PR 提交必须签署 Signed-off-by 和 使用 GPG 签名,即提交代码时(使用 git commit 命令时)至少使用 -s -S 两个参数,参考 Contributing Guide
  2. 所有 PR 提交必须通过 GitHub Actions 自动化测试,提交 PR 后请关注 GitHub Actions 结果;
  3. 代码注释均需要使用英文;

[PR 提交地址] 提交到 mega 仓库的 main 分支 ;

[开发指导]

  1. 认领任务参考 r2cn 开源实习计划 - 任务认领与确认;

[导师及邮箱] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在 #p-meta 频道和导师交流。

  1. Quanyi Ma genedna@gmail.com
  2. Tianxing Ye yetianxing2014@gmail.com

[备注]

  1. 认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务r2cn 开源实习计划 - 学生注册与审核

Metadata

Metadata

Assignees

Type

Fields

No fields configured for Bug.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions