android - أوس S3 ترانسفرزيرفيس تحميل فشل دون أخطاء



amazon-web-services amazon-s3 (1)

لقد نفذت أوس الأساسية و S3 سك للتعامل مع تحميل الملف. للأسف لا يعمل التحميل بشكل صحيح في بعض الأحيان. (يبدو أن يكون فقط تحت اتصال واي فاي ولكن أنا لا 100٪ متأكدا من أن حقيقة)

لسبب غير معروف خدمة أوس يتلقى استجابة ناجحة على الرغم من أن الملف لم ينته التحميل ثم كل شيء معلقة.

أستطيع أن أرى أن يتم بدء خدمة النقل، وعلى سبيل المثال يبدأ الملف الأول تحميل بشكل صحيح وينتهي ولكن الثاني لا ينتهي تحميل و توقف ترانسفرزيرفيس بصمت دون لي تلقي أي خطأ من خلال المستمعين نقل ... لقد مكنت سجلات التصحيح ل أوس لمعرفة ما اذا كان يمكنني الحصول على مزيد من المعلومات عبر

   java.util.logging.Logger.getLogger("com.amazonaws").setLevel(java.util.logging.Level.FINEST);

وهنا سجل التحميل الذي نجح فيه تحميل الملف الأول والثانية فشلت - أنا مجرد بدء تشغيل الملف التالي عند أول واحد بإعلام اكتمالها. (بدون أسماء الطرود والطوابع الزمنية لتسهيل التحليل):

D/AwsUploadManager: Uploading file: /storage/emulated/0/folder/profile20160219_123233.jpg
D/AwsUploadManager: Uploading under key: 56cb00d2121bbfcc0e8c68e7-843f1417-3f44-4d76-915d-f3a72c56a7d4
D/AwsUploadManager: AwsUploadManager 56cb00d2121bbfcc0e8c68e7-843f1417-3f44-4d76-915d-f3a72c56a7d4
D/TransferSerivce: Starting Transfer Service
D/TransferSerivce: Loading transfers from database
D/TransferSerivce: 1 transfers are loaded from database
W/TransferSerivce: Transfer has already been added: 6
D/TransferSerivce: Network connected: true
D/AwsUploadManager: onStateChanged IN_PROGRESS
D/AwsUploadManager: onProgressChanged id= 6 ::bytesCurrent0 bytesTotal16917
D/com.amazonaws.request: Sending Request: PUT.........
D/libc: [NET] android_getaddrinfofornet+,hn 41(0x6369616f2d696d),sn(),hints(known),family 0,flags 4
D/libc: [NET] android_getaddrinfofornet-, err=8
D/libc: [NET] android_getaddrinfofornet+,hn 41(0x6369616f2d696d),sn(),hints(known),family 0,flags 1024
D/libc: [NET] android_getaddrinfofornet-, pass to proxy
D/libc: [NET] android_getaddrinfo_proxy+
D/libc: [NET] android_getaddrinfo_proxy get netid:0
D/libc: [NET] android_getaddrinfo_proxy-, success
D/AwsUploadManager: onProgressChanged id= 6 ::bytesCurrent16917 bytesTotal16917
D/com.amazonaws.request: Received successful response: 200, AWS Request ID: 85952ED0E0FCF444
D/AwsUploadManager: onProgressChanged id= 6 ::bytesCurrent16917 bytesTotal16917
D/AwsUploadManager: onStateChanged COMPLETED
D/AwsUploadManager: Upload finished: 56cb00d2121bbfcc0e8c68e7-843f1417-3f44-4d76-915d-f3a72c56a7d4
D/AwsUploadManager: Uploaded url: https://server-name.s3.eu-central-1.amazonaws.com/56cb00d2121bbfcc0e8c68e7-843f1417-3f44-4d76-915d-f3a72c56a7d4
D/AwsUploadManager: Uploading file: /storage/emulated/0/folder/profile20160219_122512.jpg
D/AwsUploadManager: Uploading under key: 56cb00d2121bbfcc0e8c68e7-7ea27f9e-0e48-4fde-81a1-7d72383ada2d
D/AwsUploadManager: AwsUploadManager 56cb00d2121bbfcc0e8c68e7-7ea27f9e-0e48-4fde-81a1-7d72383ada2d
D/AwsUploadManager: onStateChanged IN_PROGRESS
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent0 bytesTotal1930575
D/com.amazonaws.request: Sending Request: PUT https://server-name.s3.eu-central-1.amazonaws.com /56cb00d2121bbfcc0e8c68e7-7ea27f9e-0e48-4fde-81a1-7d72383ada2d Headers: (x-amz-decoded-content-length: 1930575, Content-MD5....
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent655360 bytesTotal1930575
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent1048576 bytesTotal1930575
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent1310720 bytesTotal1930575
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent1703936 bytesTotal1930575
D/com.amazonaws.request: Received successful response: 200, AWS Request ID: DE9670A8450D4BAB
**D/TransferSerivce: Stop self**  --And here amazon stopped self without notifying registered listeners about transfer..

الرمز المستخدم لاستدعاء التحميل:

TransferObserver transferObserver = mTransferUtility.upload(BUCKET_NAME, fileKey, file);
transferObserver.setTransferListener(new TransferListener() {...}

كل شيء هو معيار من العينات، إلا أنني باستخدام أسلوب مصادقة القياسية مع حانة / ثانية مفتاح الاعتماد بدلا من بركة كوغنيتو.

  mAwsCredentials = new BasicAWSCredentials(mContext.getString(R.string.aws_accress_key), context.getString(R.string.aws_secret_key));
  mAmazonS3Client = new AmazonS3Client(mAwsCredentials);
  mAmazonS3Client.setRegion(com.amazonaws.regions.Region.getRegion(REGION));
  mTransferUtility = new TransferUtility(mAmazonS3Client, mContext);

راجع للشغل هذه المشكلة يحدث في بعض الأحيان على أول تحميل الملف في بعض الأحيان على 3rd، لا تتعلق عدد من الملفات أحاول تحميل. أيضا في بعض الأحيان يتم تشغيل أونبروغريسشانجيد مرة واحدة فقط قبل أن يعلق التحميل ويمكنني أن أرى تلقى استجابة ناجحة ووقف النفس بعد ذلك.

السؤال: هل واجه أي شخص هذه المسألة من قبل وماذا يمكن أن تكون ذات صلة؟ أنا تعاني من هذا نسبيا في كثير من الأحيان (كل مرة ثانية)، وبالتالي لست متأكدا إذا شبكة لها ذات الصلة. حتى لو كان، كنت أتوقع الأمازون للتعامل بشكل صحيح أخطاء الشبكة أو على الأقل إعلام المستمعين المسجلين. بالإضافة لقد ذهبت من خلال بعض التعليمات البرمجية المصدر وحصلت على شعور من المستندات الخاصة بهم أنهم يتعاملون مع قضايا الشبكة بشكل صحيح حتى أنا التنقل أنا أفعل شيئا خاطئا بشكل رهيب على جانبي.


التغيير الأخير في v2.2.12 يبقى فقط إشارة ضعيفة من المستمعين نقل المسجلين. المستخدم هو المسؤول عن عقد المستمع نقل حتى انتهاء النقل. والقصد من ذلك هو منع تسرب الذاكرة. ومع ذلك لم يتم توثيق استخدامها بشكل واضح. ونحن نخطط لقرص في الإصدارات المستقبلية. ترّقب.





amazon