使用 API ListObjects 或 ListObjectsV2 列出 S3 存储区对象无限循环
摘要: S3 应用程序或 s3cmd 使用 S3 API listobject 或 listobjectv2 从 s3 存储区查询对象,在某些极端情况下,如果 dirCache 存在但未满足请求,则 Powerscale OneFS s3 将返回错误结果,S3 应用程序会因列表对象命中无限循环而挂起。
本文适用于
本文不适用于
本文并非针对某种特定的产品。
本文并非包含所有产品版本。
症状
S3 应用程序只是由于列出存储桶而挂起,无法完成。
S3cmd ls 存储桶重复获取分页列表中返回的相同对象。
S3cmd ls 存储桶重复获取分页列表中返回的相同对象。
原因
这可能会遇到 s3 缓存错误# PSCALE-217613。
如果客户端请求最大条目 = 1000 的 ListObjects,则在内部我们获得 10,000 个条目(如果目录非常宽),并将其中的 1000 个返回给客户端,然后重复使用剩余的 9000 个用于将来的请求。在下一个请求中,如果存在缓存,并且目录下仍有尚未返回到客户端的文件,并且当前缓存没有足够的条目来满足请求,我们将遇到错误并返回错误的结果。
解决方案
工程部门正在研究永久修复,RUP 修补程序将在准备就绪后发布。
当前的解决方法是暂时将 s3 ls DIR_CACHE_TTL 配置为 0:
当前的解决方法是暂时将 s3 ls DIR_CACHE_TTL 配置为 0:
# isi_for_array -X "/usr/likewise/bin/lwsm inject s3 s3_ls_set_dir_cache_ttl on 0"
如果 s3 进程重新启动或节点重新启动,请在节点上再次应用解决方法,因为当 s3 重新启动时,它已恢复为默认值 1 小时。
要关闭手动 DIR_CACHE_TTL:
#isi_for_array -X "/usr/likewise/bin/lwsm inject s3 s3_ls_set_dir_cache_ttl off"
受影响的产品
Isilon, PowerScale文章属性
文章编号: 000223936
文章类型: Solution
上次修改时间: 11 6月 2024
版本: 3
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。