首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未从S3ObjectInputStream读取所有字节,正在中止HTTP连接

未从S3ObjectInputStream读取所有字节,正在中止HTTP连接
EN

Stack Overflow用户
提问于 2017-04-01 04:42:38
回答 2查看 5K关注 0票数 12

我最近不得不升级到aws-java-sdk 1.11.108。我有一个java程序,下载s3对象(8到10 GB的大小)到EC2盒,并将其作为流处理。此程序已经运行了两年多,没有任何问题,但在更新到最新版本的aws-java-sdk后,我的文件下载中途中止,并在日志中显示以下警告消息(无异常)

WARN:com.amazonaws.services.s3.internal.S3AbortableInputStream - Not all bytes were read from the S3ObjectInputStream, aborting HTTP connection. This is likely an error and may result in sub-optimal behavior. Request only the bytes you need via a ranged GET or drain the input stream after use.

代码语言:javascript
运行
复制
S3Object s3Obj = s3client.getObject(new GetObjectRequest(bucketName, s3FileName));
Reader reader = new BufferedReader(new InputStreamReader(new  GZIPInputStream(s3Obj.getObjectContent());

如果有人能告诉我为什么流在没有抛出任何异常的情况下静默地中止,以及让它工作的最好方法是什么,我将不胜感激。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-06-26 19:53:43

确保只对输入流执行一次close()操作。

票数 1
EN

Stack Overflow用户

发布于 2017-06-19 16:32:25

压缩文件在最后有一个(冗余的)中央目录结构,所以您可以列出归档文件的内容,而无需扫描整个内容。Java的ZipInputStream实际上从不从底层流中使用它;一旦getNextEntry()找到中央目录的开头,它就返回null。您可能会尝试在被覆盖的close方法中添加while (in.read() >= 0);以读取到基础流的末尾?

https://github.com/aws/aws-sdk-java/issues/1111

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43149369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档