在服务器崩溃后,aim up悬挂永远,

r3i60tvu  于 5个月前  发布在  其他
关注(0)|答案(5)|浏览(109)

🐛 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
qrjkbowd

qrjkbowd1#

感谢jeffwillette提出这个问题。
请mihran113和alberttorosyan在有时间的时候查看一下这个。

huus2vyu

huus2vyu2#

这似乎是sqlite的一个问题。run_metadata.sqlite数据库显示它被锁定,尽管应该没有进程在写入它。这一定是因为崩溃导致的某种结果。
我让这个永远挂起的进程运行了一段时间,最后出现了这个错误,并触发了许多其他异常,最终都以相同的错误结束:

Traceback (most recent call last):                                                                                                                                                
  File "/c2/jeff/anaconda3/envs/set-ssl/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context                                             
    self.dialect.do_execute(                                                                                                                                                      
  File "/c2/jeff/anaconda3/envs/set-ssl/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute                                                 
    cursor.execute(statement, parameters)                                                                                                                                         
sqlite3.OperationalError: database is locked

。我尝试手动解锁/备份/转储数据库,但它并没有解锁。我将数据库移动到另一个文件系统,然后使用sqlite3可以读取它,但是一旦我将其移回.aim文件夹中的位置,它仍然被锁定。
这意味着它一定与文件系统有关,这是一个NFS。问题是,没有进程主动连接到数据库,所以一定有一些从崩溃中保留下来的东西导致它被锁定,但我找不到是什么。有什么建议吗?

j0pj023g

j0pj023g3#

似乎与 #1865 有关。此外,sqlite 建议不要在 NFS( https://www.sqlite.org/faq.html , https://www.sqlite.org/howtocorrupt.html )上运行数据库。如果你在网上搜索这个主题,几乎到处都是“不要这样做”的建议。

vom3gejh

vom3gejh4#

嘿,@jeffwillette!感谢你提供的额外信息。我现在正在调查这个问题。
当你运行aim up --log-level DEBUG时,是否有任何其他输出?
另外,你能回忆起崩溃发生的时间吗?这可能是一个单独的问题,或者与这个问题有关。

ttisahbt

ttisahbt5#

@alberttorosyan,我认为问题只是我之前发布的痕迹。我几乎确定这个问题是由于NFS和sqlite之间的冲突导致的,但我不知道该如何解决,所以我只能重新开始并删除旧的仓库(幸运的是里面没有什么重要的内容)。
崩溃发生在问题出现之前。服务器在停电时意外失去了电源,当我回来并试图再次启动aim时,我遇到了这个错误。
我认为这对那些运行在NFS上的服务器来说可能是非常危险的。如果有人将来遇到这个问题,唯一能让我解锁sqlite数据库的方法是将文件复制到一个非NFS驱动器上,然后我可以手动打开数据库进行检查。所以如果里面有重要信息的话,我想整个aim仓库可以复制到驱动器上,理论上应该可以再次工作。
无论如何,如果这确实是一个纯粹的sqlite/NFS问题,那么请随意关闭这个问题。

相关问题