【发布时间】:2014-08-14 10:46:29
【问题描述】:
我正在尝试使用分段上传 AWS S3 java API 执行文件上传(我使用的是 SDK 1.8.1)。 我能够成功执行上传。
但是,我间歇性地不断收到此异常。
2014 年 7 月 31 日上午 4:39:38 com.amazonaws.http.AmazonHttpClient executeHelper INFO:无法执行 HTTP 请求:连接重置 java.net.SocketException:连接重置在 java.net.SocketInputStream.read(SocketInputStream.java:189) 在 java.net.SocketInputStream.read(SocketInputStream.java:121) 在 sun.security.ssl.InputRecord.readFully(InputRecord.java:312) 在 sun.security.ssl.InputRecord.read(InputRecord.java:350) 在 sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927) 在 sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884) 在 sun.security.ssl.AppInputStream.read(AppInputStream.java:102) 在 org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:166) 在 org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:90) 在 org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:281) 在 org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:92) 在 org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:62) 在 org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:254) 在 org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:289) 在 org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:252) 在 org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:191) 在 org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:300) 在 com.amazonaws.http.protocol.SdkHttpRequestExecutor.doReceiveResponse(SdkHttpRequestExecutor.java:66) 在 org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:127) 在 org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:717) 在 org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:522) 在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) 在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805) 在 com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:402) 在 com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:245) 在 com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3711) 在 com.amazonaws.services.s3.AmazonS3Client.uploadPart(AmazonS3Client.java:2809) 在云端。.writeContent(.java:)
如下代码
try {
_partETags.add(_s3.uploadPart(uploadPartReq).getPartETag());
} catch (AmazonClientException e) {
System.out.println("Amazon service error. Retrying...");
printException(e);
} catch (Exception e) {
printException(e);
throw new UserException("Received an exception while performing upload part");
}
如果我查看文档,它说uploadPart 函数只会抛出两个类AmazonClientException 和AmazonServiceException。
<documentation> ... UploadPartResult uploadPart(UploadPartRequest request) throws AmazonClientException, AmazonServiceException ... Throws: AmazonClientException - If any errors are encountered in the client while making the request or handling the response. AmazonServiceException - If any errors occurred in Amazon S3 while processing the request. ... </documentation>
但是,我收到了不同的例外情况。
我有以下问题
- 这是预期行为吗?如果不是,我该如何解决这个问题?
- 为什么我的 try catch 块无法捕获此异常?
- AmazonClient 或 AmazonServiceException 的情况下,是否建议我们 再次重试上传,或者这些应该被视为 不可恢复的错误?
【问题讨论】:
-
我看到同样的事情
标签: java amazon-web-services amazon-s3