在Postgres上产生独特约束违规的人工工厂

时间:2018-07-26 12:49:13

标签: postgresql artifactory

Artifactory会不时在基础postgres数据库上创建一些唯一的约束违规,这会破坏工件。 该数据库位于同一主机上,仅用于Artifactory。该计算机上没有其他服务在运行。

  • Artifactory OSS 5.10.1修订版51001900
  • PostgreSQL Server 9.6 x64
  • 主机:Windows Server 2012 R2
  

2018-07-22 20:04:24,434 [art-exec-255611] [INFO](oasaArchiveIndexerImpl:145)-索引存档:prime-internal-gradle:de / vps / vps-prime_modules-tenant / 0.186 /vps-prime_modules-tenant-0.186.war

     

2018-07-22 20:04:25,715 [art-exec-255611] [INFO](oasaArchiveIndexerImpl:145)-索引存档:prime-internal-gradle:de / vps / vps-prime_modules-ussp / 0.186 /vps-prime_modules-ussp-0.186.war

     

2018-07-22 20:40:40,950 [http-nio-8081-exec-1291] [错误](o.a.r.d.DbStoringRepoMixin:274)-无法保存资源,原因:   org.artifactory.storage.fs.VfsException:org.postgresql.util.PSQLException:FEHLER:doppelterSchlüsselwert版本唯一约束»nodes_repo_path_checksum«     详细信息:Schlüssel»(repo_path_checksum)=(a44c29d26a4ea4a37bb11b7c3c2587da817d45d3)«存在。       在org.artifactory.storage.db.fs.service.FileServiceImpl.createFile(FileServiceImpl.java:168)

Postgres异常的翻译:

  

错误:重复的键值违反了唯一约束“ nodes_repo_path_checksum”

     

详细信息:密钥(repo_path_checksum)=(a44c29d26a4ea4a37bb11b7c3c2587da817d45d3)已经存在。”

从Artifactory的用户界面中,无法再下载,移动,删除或重新上传相关的工件。 由于这种独特的违规违规行为,再次发布相同(损坏)的工件也行不通。 同样,在这种状态下,postgres数据库的重新索引不再有效。 解决此问题的唯一方法是手动删除postgres db本身中的受影响条目:

DELETE FROM public.nodes WHERE repo_path_checksum = 'a44c29d26a4ea4a37bb11b7c3c2587da817d45d3'

有时需要首先关联更多相关统计信息:

DELETE FROM stats WHERE node_id = (SELECT node_id FROM public.nodes WHERE repo_path_checksum = 'a44c29d26a4ea4a37bb11b7c3c2587da817d45d3');

然后,我可以重新发布该工件。 发布是通过maven-publish Gradle插件完成的。

此修复程序需要应用于每个唯一的约束违例(有时20-100个工件),并且只能解决症状,而不能解决问题的根源。

其他人都看到了这些问题,或者知道如何缓解该问题? 也许是错误的/错误的Artifactory设置?

0 个答案:

没有答案