报错:Error parsing expiry"/>
【Ceph Bugs 系列】Red Hat Ceph Storage 3.2 设置 lifecycle 后,JDK 报错:Error parsing expiry
环境信息
Ceph 版本:Red Hat Ceph Storage 3.1(对应社区版为 12.2.8)
问题描述
如果在对象存储的 bucket 上设置了 lifecycle(生命周期),那么 rgw 网关返回给客户端的 response headers 中会加一个 x-amz-expiration。
对于 x-amz-expiration 的格式,Amazon 官网给出的示例为:
x-amz-expiration: expiry-data="Fri, 21 Dec 2012 00:00:00 GMT, rule-id="Rule for testfile.txt"
即 “星期,日 月 年,时:分:秒” 的 GMT 格式。并且 Amazon S3 的 JDK 也是按照这个格式来解析的。
在社区版本的 Ceph Luminous 中,无论是否配置 lifecycle ,均不会有此字段。社区版的 Ceph ,直到 Nautilus 版本才有此功能。
但在红帽的的 rhceph3.1 中,红帽自行修复了此问题,不过返回的 respose header 中,格式却为:
expiry-date="Mon Aug 8 08:32:50 2019"
即 “星期 月 日 时:分:秒 年” 格式。由于格式与 Amazon S3 中明显不同,导致 Amazon S3 client 包在解析时一直报 warn 日志。
原因分析
个人推测,Amazon 的格式为 GMT 标准。在 Ceph 社区版无此功能时,红帽作为一个美国公司,直接按照美式时间日期显示格式设置了返回值,造成与标准 GMT 格式不兼容。
解决办法
升级到 Red Hat Ceph Storage 3.3,或者采用 Ceph Nautilus 社区版即可解决此问题。
更多推荐
【Ceph Bugs 系列】Red Hat Ceph Storage 3.2 设置 lifecycle 后,JDK 报错:Error parsing expir
发布评论