Swiftstack - 容器未被移除

时间:2013-06-03 21:54:00

标签: openstack-swift

即使直接从文件系统中删除容器和对象,Swift也会在对其执行GET命令时列出容器。但是,如果我们尝试使用DELETE命令删除容器,则返回404:Not Found错误消息。请解释是否有错误或是否有某种缓存?

1 个答案:

答案 0 :(得分:1)

我认为问题来自直接从文件系统中删除容器和/或对象。

Swift用于处理对象和容器的写请求的方法必须非常小心,以确保所有分布式索引信息最终保持一致。直接修改文件系统是不够的。听起来好像容器数据库在有机会更新帐户数据库列表之前被删除了 - 可能在删除所有对象索引信息之前手动取消链接?

通常在删除请求之后,容器必须作为“tombstones”暂停一段时间,以确保帐户数据库正确更新。

作为一种解决方法,您可以重新创建它们(使用POST),然后重新发出DELETE;应该成功地允许删除新的容器并直接更新帐户数据库列表。

(注意:容器数据库本身虽然是空的,但仍会作为墓碑存在于磁盘上,直到reclaim_age通过为止)