S3AbortableInputStream: не все байты были прочитаны из S3ObjectInputStream - PullRequest
1 голос
/ 04 апреля 2019

Я получаю это предупреждение при выполнении запроса SET GET Object s3

WARN 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

Я посмотрел на AmazonS3: Получение предупреждения: S3AbortableInputStream: Не все байты были прочитаны из S3ObjectInputStream, прерывая HTTP-соединение

У меня нет четкого понимания того, что необходимо сделать.

Ниже приведен фрагмент кода, который я использую

 try {
    s3obj = s3Client.getObject(s3Bucket, objectSummary.getKey)
    val name = s3obj.getKey.substring(dirPath.length + 1)
    val filename = name.replace(".xml", "")
    endpoints += base_url + filename
  } catch {
    case e@(_: IOException |_ : JSONException | _: Exception) =>
      println(e)
  } finally {
    if (s3obj != null)
      s3obj.close()
  }

1 Ответ

0 голосов
/ 04 апреля 2019

По сути, это то, что он делает, если клиент S3 пытается закрыть InputStream, не потребляя его полностью после чтения N байтов, он выдает предупреждающее сообщение, потому что ему необходимо закрыть HttpRequest и базовое http-соединение с удалением соединения из соединения.бассейн.
Это может произойти, когда:
Веб-приложение сначала считывает данные из S3, а S3 DataStore обычно кэширует данные в локальной файловой системе, и в то время, когда это происходит, если веб-посетитель отключает соединение HTTP, ипоэтому, если Tomcat указывает это, поток обработки http будет остановлен, и в результате InputStream будет закрыт.

Пожалуйста, перейдите по следующей ссылке: https://docs.aws.amazon.com/AmazonS3/latest/dev/RetrievingObjectUsingJava.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...