升级Artifactory至5.8.3后路径校验和计算任务警告的解决问询
Artifactory 5.8.3升级后路径校验和迁移警告的解决办法
首先纠正一下你的推测:这个警告和二进制制品的SHA-256存储布局无关,它指向的是Artifactory 5.5版本引入的**仓库路径校验和(Repo Path Checksum)**特性——这是基于制品在仓库中的完整路径计算的SHA256值,用于路径冲突检测、元数据一致性验证等场景,和二进制文件本身的校验和是两回事。
你的迁移任务日志显示"完成"但仍有剩余制品未处理,大概率是Derby嵌入式数据库的事务特性导致任务中断时,部分记录未被正确标记为完成,或者任务没有真正触发对剩余制品的扫描。下面是具体的解决步骤:
步骤1:强制重新触发路径校验和迁移任务
这是最直接的修复方式,强制任务重新扫描所有未处理的制品:
- 停止Artifactory服务
- 编辑
$ARTIFACTORY_HOME/etc/artifactory.system.properties,添加/修改以下两个属性:artifactory.repo.path.checksum.migration.job.enabled=true artifactory.repo.path.checksum.migration.job.force.start=true - 启动Artifactory,实时观察
$ARTIFACTORY_HOME/logs/path_checksum_migration.log,确认任务开始处理剩余的2000+制品 - 当日志显示
SHA256 migration job has finished successfully后,停止服务,删除artifactory.repo.path.checksum.migration.job.force.start=true这一行(避免每次启动都重复执行),再重启服务
步骤2:修复Derby数据库的一致性(针对独立部署)
Derby作为嵌入式数据库,升级后偶尔会出现索引或数据不一致的情况,导致任务无法正确识别未处理的制品:
- 先停止Artifactory,务必备份
$ARTIFACTORY_HOME/data/derby目录(这是你的数据库文件,出问题可以回滚) - 打开终端,运行Derby的交互式工具:
java -jar $ARTIFACTORY_HOME/third-party/derby/lib/derbyrun.jar ij - 在ij控制台中连接Artifactory的Derby数据库:
connect 'jdbc:derby:$ARTIFACTORY_HOME/data/derby/artifactory;upgrade=true'; - 检查核心表的一致性:
CALL SYSCS_UTIL.SYSCS_CHECK_TABLE('ARTIFACTORY', 'NODE_PROPERTIES'); CALL SYSCS_UTIL.SYSCS_CHECK_TABLE('ARTIFACTORY', 'ARTIFACTS'); - 如果检查出错误,执行修复命令:
CALL SYSCS_UTIL.SYSCS_REPAIR_TABLE('ARTIFACTORY', 'NODE_PROPERTIES', 'REPAIR'); CALL SYSCS_UTIL.SYSCS_REPAIR_TABLE('ARTIFACTORY', 'ARTIFACTS', 'REPAIR'); - 输入
exit;退出ij工具,重启Artifactory,观察警告是否消失
步骤3:手动处理剩余制品(如果前两步无效)
如果上面的方法都没解决,可以手动定位并处理未生成路径校验和的制品:
- 停止Artifactory,用ij连接Derby数据库,执行查询找到问题制品:
SELECT a.ARTIFACT_ID, n.REPO, n.PATH, n.NAME FROM ARTIFACTS a JOIN NODES n ON a.NODE_ID = n.NODE_ID LEFT JOIN NODE_PROPERTIES np ON n.NODE_ID = np.NODE_ID AND np.PROP_KEY = 'repoPathSha256' WHERE np.PROP_KEY IS NULL; - 根据查询结果,用Artifactory的REST API手动触发校验和计算(替换
{repoKey}和{path}为实际值):curl -u admin:your_password -X POST "http://localhost:8081/artifactory/api/storage/{repoKey}/{path}?calculateChecksums=1" - 批量处理完所有问题制品后,重启Artifactory即可
内容的提问来源于stack exchange,提问作者Arnaud Jeansen
相关产品推荐
相关产品推荐

