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