Google-云存储 | Artifactory 不删除存储桶中的对象
Google-Cloud-Storage | Artifactory does not delete objects in bucket
我们目前正在 GCP 上设置 Artifactory Pro 实例,并希望使用 GCS 作为其 Filestore。与存储桶的连接成功,通过 Artifactory 上传和下载存储桶 成功 (使用通用存储库)。
但是: Artifactory 不会删除工件 如果我们通过 GUI 告诉它的话。工件在 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
- OS:Debian 10(克星)
- 机器类型:e2-highcpu-4(4 个 vCPU,4 GB 内存)
- 磁盘:200 GB SSD
问题是:.
- 这是否按预期工作? Artifactory 永远不会删除存储桶中的工件吗?
- 相关说明:我们如何说服 Artifactory 在与 GCS 的交互中更加详细? (
artifactory-binarystore.log
可疑是空的,console.log
也很安静...)
您没有看到工件立即从存储中删除的原因是 Artifactory 正在使用 checksum based storage。
TL;DR - 一旦 garbage collection 进程将删除它,您将看到从存储中删除的工件。
Artifactory 只存储任何二进制文件一次。这就是我们所说的“一次性存储”。第一次上传文件时,Artifactory 在存储文件时运行所需的校验和计算,但是,如果再次上传文件(例如,到不同的位置),上传将作为创建另一个记录映射的简单数据库事务实现文件的校验和到它的新位置。无需实际将文件再次存储在存储器中。无论一个文件被上传多少次,文件存储都只保存一个文件副本。
删除文件也是一个简单的数据库事务,其中相应的数据库记录被删除。文件本身不会被直接删除,即使指向它的最后一个数据库条目被删除。 Artifactory 的垃圾收集进程在后台删除了所谓的“孤立”文件。
我们目前正在 GCP 上设置 Artifactory Pro 实例,并希望使用 GCS 作为其 Filestore。与存储桶的连接成功,通过 Artifactory 上传和下载存储桶 成功 (使用通用存储库)。
但是: Artifactory 不会删除工件 如果我们通过 GUI 告诉它的话。工件在 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
- OS:Debian 10(克星)
- 机器类型:e2-highcpu-4(4 个 vCPU,4 GB 内存)
- 磁盘:200 GB SSD
问题是:.
- 这是否按预期工作? Artifactory 永远不会删除存储桶中的工件吗?
- 相关说明:我们如何说服 Artifactory 在与 GCS 的交互中更加详细? (
artifactory-binarystore.log
可疑是空的,console.log
也很安静...)
您没有看到工件立即从存储中删除的原因是 Artifactory 正在使用 checksum based storage。
TL;DR - 一旦 garbage collection 进程将删除它,您将看到从存储中删除的工件。
Artifactory 只存储任何二进制文件一次。这就是我们所说的“一次性存储”。第一次上传文件时,Artifactory 在存储文件时运行所需的校验和计算,但是,如果再次上传文件(例如,到不同的位置),上传将作为创建另一个记录映射的简单数据库事务实现文件的校验和到它的新位置。无需实际将文件再次存储在存储器中。无论一个文件被上传多少次,文件存储都只保存一个文件副本。
删除文件也是一个简单的数据库事务,其中相应的数据库记录被删除。文件本身不会被直接删除,即使指向它的最后一个数据库条目被删除。 Artifactory 的垃圾收集进程在后台删除了所谓的“孤立”文件。