postgresql AWX无法清理作业

ltqd579y  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(125)

我有一个运行在EKS中的1.4.0版AWX操作符,我已经将它迁移到了另一个集群中,并安装了该操作符的新版本(2.5.0)我已经创建了Postgres DB的SQL转储,并将其应用到新的。除了一个正在清理作业历史记录的管理作业外,所有工作都正常。在旧集群上,由于大量作业输出,这是相当激进的,我删除了任何内容超过7天。现在我注意到新的AWX部署无法清理来自其他集群的作业历史记录。它仅适用于playbook运行,因为我可以使用awx-manage实用程序删除库存同步和源更新。当我尝试删除旧作业时,我会收到以下错误:

bash-5.1# awx-manage cleanup_jobs --days 10
Killed

字符串
不管我在--days标志之后设置什么。它总是失败。退出代码是137,但我找不到任何关于此的信息。我尝试使用--traceback-v 3运行命令,但没有得到额外的输出。
当我从UI尝试时也会发生同样的情况

DELETE api/v2/jobs/539243/ 500
A server error has occurred.


有没有一种方法可以更深入地挖掘Killed错误,或者直接从数据库中删除损坏的条目?

wixjitnu

wixjitnu1#

我遇到了一些作业事件太多(超过80,000个)导致删除作业失败的问题。在这些情况下,我无法删除作业事件本身。一旦历史记录低于80,000个作业事件,我就可以手动删除作业。下面是我运行的操作,以便删除作业事件(可能是一种更有效的方法,但它确实完成了任务)

# Delete job events, 1000 at a time seemed to be the best way to run this without causing the container to either die out, or just start running the job event deletions really slow.
# This code deletes 1,000 at a time then loops through again. For some reason re-initializing the object again seemed to keep it from slowing down, so we use a nested loop for this.
# The example bellow will delete 100,000 job events. So if you need to remove more increase the number in "for j in range(0, 100)" to fit your use case

for j in range(0, 100):
    objs = JobEvent.objects.filter(job=<job_id>)
    for i in range(0,1000):
        objs[i].delete()

字符串
为了查看特定作业的作业事件数,我将运行以下命令

JobEvent.objects.filter(job=<job_id>).count()

相关问题