使用 API ListObjects 或 ListObjectsV2 無限列出 S3 儲存器物件循環

摘要: S3 應用程式或 s3cmd 使用 S3 API listobject 或 listobjectv2 從 s3 貯體查詢物件,在某些極端情況下,Powerscale OneFS s3 會傳回錯誤的結果 如果 dirCache 存在但未履行要求,則 S3 應用程式會因清單物件達到無限循環而當機。

本文适用于 本文不适用于 本文并非针对某种特定的产品。 本文并非包含所有产品版本。

症状

S3 應用程式只是掛起,因為列出無法完成的儲存桶。
S3cmd ls 儲存桶會重複取得分頁清單中傳回的相同物件。

原因

這可能會發生 s3 快取錯誤# PSCALE-217613。 
 
如果用戶端請求最大條目 = 1000 的 ListObjects,則在內部我們獲得 10,000 個條目(如果目錄非常寬)並將其中的 1000 個返回給用戶端,然後重複使用剩餘的 9000 個用於將來的請求。在下一個請求中,如果有緩存,並且目錄下仍有檔尚未返回到客戶端,並且當前緩存沒有足夠的條目來滿足請求,我們遇到了一個錯誤並返回錯誤的結果。

解决方案

工程部門正在開發永久修正程式,RUP 修補程式將在準備就緒後發佈。
目前的因應措施是將 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
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。