谷歌云存储 | Artifactory 不会删除存储桶中的对象

时间:2021-01-21 14:09:13

标签: google-cloud-platform google-cloud-storage artifactory delete-file

我们目前正在 GCP 上设置 Artifactory Pro 实例,并希望使用 GCS 作为其文件存储。与存储桶的连接成功,通过 Artifactory 向存储桶上传和下载数据成功(使用通用存储库)。

但是:Artifactory不会删除工件,如果我们通过 GUI 告诉它的话。 Artifact 被删除并在 GUI 中消失(垃圾箱在系统设置中被禁用)但继续存在于 GCS 的存储桶中。

这是我们的 binarystore.xml:

<?xml version="1.0" encoding="UTF-8"?>
<config version="v1">
<chain>
   <provider id="cache-fs" type="cache-fs">
       <provider id="eventual" type="eventual">
           <provider id="retry" type="retry">
               <provider id="google-storage" type="google-storage"/>
           </provider>
       </provider>
   </provider>
</chain>

<provider id="google-storage" type="google-storage">
   <endpoint>commondatastorage.googleapis.com</endpoint>
    <bucketName>rtfdev</bucketName>
   <identity>xxx</identity>
   <credential>xxx</credential>
   <bucketExists>false</bucketExists>
   <httpsOnly>true</httpsOnly>
   <httpsPort>443</httpsPort>
</provider>
</config>

我们的设置:

  • Artifactory 7.12.6
  • 操作系统:Debian 10(破坏者)
  • 机器类型:e2-highcpu-4(4 个 vCPU,4 GB 内存)
  • 磁盘:200 GB SSD

问题是:

  • 这是否按预期工作? Artifactory 永远不会删除存储桶中的工件吗?
  • 相关说明:我们如何说服 Artifactory 在与 GCS 的交互中更加详细? (artifactory-binarystore.log 可疑地是空的,console.log 也很安静……)

1 个答案:

答案 0 :(得分:3)

您没有看到工件立即从存储中删除的原因是 Artifactory 正在使用 checksum based storage
TL;DR - 一旦 garbage collection 进程将其删除,您将看到从存储中删除的工件。

Artifactory 只存储任何二进制文件一次。这就是我们所说的“一次性存储”。第一次上传文件时,Artifactory 在存储文件时运行所需的校验和计算,但是,如果再次上传文件(例如,上传到不同的位置),上传将作为创建另一个记录映射的简单数据库事务来实现文件的校验和到它的新位置。无需将文件再次实际存储在存储中。无论文件上传多少次,文件存储区都只托管文件的一个副本。
删除文件也是一个简单的数据库事务,其中相应的数据库记录被删除。即使删除了指向它的最后一个数据库条目,文件本身也不会被直接删除。 Artifactory 的垃圾收集进程会在后台删除所谓的“孤立”文件。