硬件及系统: 主MUC架构:armv7 内核版本:linux 4.9.84。
Background:正常使用oss SDK一段时间后,新的需求要求升级openssl1.0.2o -> 1.1.1f,导致其相应的依赖curl7.79.1及oss SDK也进行了重新编译。
问题描述:新的SDK在进行下载时遇到了这个问题,但使用date -u -R以及apr_time_now() 校验本地时间未发现异常。
于是写了一个上传sample去抓response body 发现requestTime时间异常。若不保持sdk运行且多次请求响应体的请求时间依旧保持一个定值。
相应时间改变请求时间仍为定值
但如果重新运行SDK的话,requestTime会变成另一个定值
已解决
给交叉编译的朋友们提供一个参考
由于之前编译了x86与arm不同架构的SDK,修改过oss的CMakeList。
在交叉编译时,务必要在CMakeList的开头指定交叉编译的Toolchain!否则会使用默认的编译器,导致链接apr库时,可能会链接到一些其他版本的apr。
【由此导致OSS依赖的apr_time_now()获取时间出现错误,OSS处理Http请求头的Date的业务在这(从oss_do_get_object_to_file追到这追了好一会呢...)】
同时自己的SDK依赖了正确的apr库,所以自己调用apr_time_now()打印的时间却是正确的。导致先入为主的认为apr库是没有问题的,使得问题变的很迷惑= =
根据您提供的信息,这个问题可能是由于SDK在运行过程中,requestTime的值没有正确更新导致的。为了解决这个问题,您可以尝试以下方法:
检查您的代码中是否有对requestTime进行设置的地方,如果有,请确保设置的是正确的时间值。
在上传和下载操作之前,使用oss_client_options_set_timeout
函数设置超时时间,以确保SDK有足够的时间来处理请求和响应。
如果问题仍然存在,您可以尝试升级OSS SDK到最新版本,看看是否已经解决了这个问题。
"RequestTimeTooSkewed"错误通常是由于客户端和服务器之间的时间戳不同步导致的。在开发板上使用OSS SDK进行上传下载时,如果遇到这个错误,可以尝试以下方法解决:
确保开发板上的时间是准确的。可以使用NTP(网络时间协议)来同步时间。
检查网络连接是否稳定。如果网络不稳定,可能会导致时间戳不同步。
在创建OSS客户端时,设置合适的超时时间。例如,可以设置connectTimeout
、readTimeout
和writeTimeout
参数。
如果问题仍然存在,可以尝试升级OSS SDK到最新版本,或者查看阿里云官方文档以获取更多关于这个问题的信息。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
对象存储 OSS 是一款安全、稳定、高性价比、高性能的云存储服务,可以帮助各行业的客户在互联网应用、大数据分析、机器学习、数据归档等各种使用场景存储任意数量的数据,以及进行任意位置的访问,同时通过丰富的数据处理能力更便捷地使用数据。