Java-клиент S3 часто дает сбой из-за «преждевременного окончания тела сообщения с разделителями Content-Length» или «сокет java.net.SocketException закрыт»

У меня есть приложение, которое много работает на S3, в основном загружая файлы. от него. Я вижу много таких ошибок, и я хотел бы знать, связано ли это с моим кодом или служба действительно ненадежна.

Код, который я использую для чтения из потока объектов S3, выглядит следующим образом:

public static final void write(InputStream stream, OutputStream output) {

  byte[] buffer = new byte[1024];

  int read = -1;

  try {

    while ((read = stream.read(buffer)) != -1) {
      output.write(buffer, 0, read);
    }

    stream.close();
    output.flush();
    output.close();
  } catch (IOException e) {
    throw new RuntimeException(e);
  }

}

Этот OutputStreamявляется new BufferedOutputStream( new FileOutputStream( file ) ). Я использую последнюю версию Java-клиента Amazon S3, и этот вызов повторяется четырераза, после чего прекращается. Итак, после попытки это в 4 раза это все еще терпит неудачу.

Приветствуются любые подсказки или подсказки о том, как я могу это улучшить.

12
задан Charles 31 March 2012 в 06:58
поделиться