2017-03-31 33 views
7

Son zamanlarda aws-java-sdk 1.11.108 sürümüne yükseltmek zorunda kaldım. S3 nesnelerini (8 ila 10 GB boyutunda) EC2 kutusuna indiren ve bir akış olarak işleyen bir java programım var. Bu program 2 yıldan fazla bir süredir herhangi bir sorun üzerinde çalışıyordu, ama aws-java-sdk'nin son sürümüne güncelledikten sonra dosya-indirme dosyamda aşağıdaki günlük mesajlarla yarı yolda durur (istisna yok)Tüm baytlar S3ObjectInputStream'den okunmadı, HTTP bağlantısı iptal edildi

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.

S3Object s3Obj = s3client.getObject(new GetObjectRequest(bucketName, s3FileName)); 
Reader reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(s3Obj.getObjectContent()); 

birileri akışı hiç istisna atma w/o sessizce durduruluyor ve ne çalışması için en iyi yoldur neden söyleyebilir, takdir edeceklerdir. Eğer tüm gezi boyunca sadece tarama olmadan arşiv içeriğini listeler böylece

Teşekkür

+0

Bir dosyayı doğrudan S3'e ayırırken de aynı sorunu yaşıyorum. – florins

+0

Kulüpte hala bir yeriniz var mı? S3 ile aynı sorunu yaşıyorum. – dcg

+0

Aynı sorunu yaşıyorum. Şimdiye kadar bir çözüm yok. –

cevap

0

ZIP arşivleri, sonunda (yedekli) merkezi dizin yapısı var. Java'nın ZipInputStream hiçbir zaman gerçekte bunu temel akımdan tüketmez; getNextEntry(), nolu merkezi dizinin başlangıcını bulduğu anda null değerini döndürür. Süre ekleyerek girebilirsiniz (in.read()> = 0); Geçersiz kılınmış halde altta yatan akış sonuna kadar okumak için yöntem?

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

0

sadece bir kez close() giriş akışı emin olun.

İlgili konular