迁移至 oslo_db

用 oslo_db 库替换 trove.db.sqlalchemy 包。

Launchpad 蓝图:https://blueprints.launchpad.net/trove/+spec/move-to-oslo-db

问题描述

当前代码使用过时的 incubator 包进行数据库连接。旧包存在一些错误,例如无法正确处理并发线程。这是一个迁移到 oslo_db 库,替换 trove.db.sqlalchemy 包的好机会。

其他 OS 项目,例如 nova,已经完成了类似的迁移1

提议的变更

oslo_db 是一个处理常见数据库连接和控制的库。将 trove.db.sqlalchemy 引擎和会话处理更改为使用 oslo_db 库。它透明地处理连接和会话,并防止在 Trove 的线程环境中出现连接管理不当的情况。

唯一的外部影响是暴露 oslo_db 的配置选项。

配置

将 oslo_db 的配置选项添加到 [database] 部分2

数据库

数据库连接是唯一的更改。数据模型和查询不受影响。

公共 API

N/A

公共 API 安全

N/A

Python API

N/A

CLI (python-troveclient)

N/A

内部 API

N/A

Guest Agent

N/A

备选方案

确定数据库连接管理不当的根本原因3。之前的尝试均未成功。

Dashboard 影响 (UX)

待定 (在批准后添加的部分)

实现

删除引擎和会话管理代码,并将其替换为 oslo_db 的 facade。

负责人

Matthew Van Dijk

里程碑

Mitaka-1

工作项

  • 代码更改的单个任务

  • 使用新的配置设置更新文档

升级影响

N/A

依赖项

oslo_db

测试

不要破坏现有的测试 - 尤其是模拟模式测试。

文档影响

描述数据库部分中的配置变量。

附录