🐛 Bug
aim up
在没有启动服务器的情况下一直挂起。这种情况发生在aim运行过程中服务器崩溃之后。我认为在崩溃期间没有任何数据被写入,所以它很可能是一个空闲的aim示例。
重现方法
我不确定这是否可以可靠地重现
预期行为
我希望在服务器崩溃后aim能够正常启动
环境
- Aim 版本:3.17.5
- Python 版本:3.10.13
- pip 版本:23.3.1
- 操作系统(例如:Linux):Ubuntu 18.04.5
- 其他相关信息
附加上下文
aim --verbose up --log-level INFO
输出:
Verbose mode is on
INFO [sqlalchemy.engine.Engine] PRAGMA main.table_info("alembic_version")
INFO [sqlalchemy.engine.Engine] [raw sql] ()
### forever hang
5条答案
按热度按时间qrjkbowd1#
感谢jeffwillette提出这个问题。
请mihran113和alberttorosyan在有时间的时候查看一下这个。
huus2vyu2#
这似乎是sqlite的一个问题。run_metadata.sqlite数据库显示它被锁定,尽管应该没有进程在写入它。这一定是因为崩溃导致的某种结果。
我让这个永远挂起的进程运行了一段时间,最后出现了这个错误,并触发了许多其他异常,最终都以相同的错误结束:
。我尝试手动解锁/备份/转储数据库,但它并没有解锁。我将数据库移动到另一个文件系统,然后使用sqlite3可以读取它,但是一旦我将其移回.aim文件夹中的位置,它仍然被锁定。
这意味着它一定与文件系统有关,这是一个NFS。问题是,没有进程主动连接到数据库,所以一定有一些从崩溃中保留下来的东西导致它被锁定,但我找不到是什么。有什么建议吗?
j0pj023g3#
似乎与 #1865 有关。此外,sqlite 建议不要在 NFS( https://www.sqlite.org/faq.html , https://www.sqlite.org/howtocorrupt.html )上运行数据库。如果你在网上搜索这个主题,几乎到处都是“不要这样做”的建议。
vom3gejh4#
嘿,@jeffwillette!感谢你提供的额外信息。我现在正在调查这个问题。
当你运行
aim up --log-level DEBUG
时,是否有任何其他输出?另外,你能回忆起崩溃发生的时间吗?这可能是一个单独的问题,或者与这个问题有关。
ttisahbt5#
@alberttorosyan,我认为问题只是我之前发布的痕迹。我几乎确定这个问题是由于NFS和sqlite之间的冲突导致的,但我不知道该如何解决,所以我只能重新开始并删除旧的仓库(幸运的是里面没有什么重要的内容)。
崩溃发生在问题出现之前。服务器在停电时意外失去了电源,当我回来并试图再次启动aim时,我遇到了这个错误。
我认为这对那些运行在NFS上的服务器来说可能是非常危险的。如果有人将来遇到这个问题,唯一能让我解锁sqlite数据库的方法是将文件复制到一个非NFS驱动器上,然后我可以手动打开数据库进行检查。所以如果里面有重要信息的话,我想整个aim仓库可以复制到驱动器上,理论上应该可以再次工作。
无论如何,如果这确实是一个纯粹的sqlite/NFS问题,那么请随意关闭这个问题。