Projects >> aws-sdk-java >>a401dbf04c4fee68c634439dd70accea1beee585

Chunk
Conflicting content
        String uploadId = initiateResult.getUploadId();

        try {
<<<<<<< HEAD
	        List binaryChecksums = new LinkedList();

	        long currentPosition = 0;
	        while (currentPosition < file.length()) {
	            long length = partSize;
	            if (currentPosition + partSize > file.length()) {
	                length = file.length() - currentPosition;
	            }

                Exception failedException = null;
                boolean completed = false;
                int tries = 0;

                while(!completed && tries<5){
                    tries++;
                    InputStream inputSubStream = newInputSubstream(file, currentPosition, length);
                    inputSubStream.mark(-1);
                    String checksum = TreeHashGenerator.calculateTreeHash(inputSubStream);
                    byte[] binaryChecksum = BinaryUtils.fromHex(checksum);
                    inputSubStream.reset();
                    try {
                        glacier.uploadMultipartPart(new UploadMultipartPartRequest()
                                .withAccountId(accountId)
                                .withChecksum(checksum)
                                .withBody(inputSubStream)
                                .withRange("bytes " + currentPosition + "-" + (currentPosition + length - 1) + "/*")
                                .withUploadId(uploadId)
                                .withVaultName(vaultName));
                        completed = true;
                        binaryChecksums.add(binaryChecksum);
                    } catch (Exception e){
                        failedException = e;
                    } finally {
                        try {inputSubStream.close();} catch (Exception e) {}
                    }
                }
                if(!completed && failedException!=null){
                    throw failedException;
                }

	            currentPosition += partSize;
	        }

	        String checksum = TreeHashGenerator.calculateTreeHash(binaryChecksums);

	        String archiveSize = Long.toString(file.length());
	        CompleteMultipartUploadResult completeMultipartUploadResult =
	            glacier.completeMultipartUpload(new CompleteMultipartUploadRequest()
	                .withAccountId(accountId)
	                .withArchiveSize(archiveSize)
	                .withVaultName(vaultName)
	                .withChecksum(checksum)
	                .withUploadId(uploadId));

	        String artifactId = completeMultipartUploadResult.getArchiveId();
	        return new UploadResult(artifactId);
		} catch (Exception e) {
			glacier.abortMultipartUpload(new AbortMultipartUploadRequest(accountId, vaultName, uploadId));
			throw new AmazonClientException("Unable to finish the upload", e);
		}
=======
            List binaryChecksums = new LinkedList();

            long currentPosition = 0;
            while (currentPosition < file.length()) {
                long length = partSize;
                if (currentPosition + partSize > file.length()) {
                    length = file.length() - currentPosition;
                }

                inputSubStream.mark(-1);
                InputStream inputSubStream = newInputSubstream(file, currentPosition, length);
                String checksum = TreeHashGenerator.calculateTreeHash(inputSubStream);
                byte[] binaryChecksum = BinaryUtils.fromHex(checksum);
                binaryChecksums.add(binaryChecksum);
                inputSubStream.reset();

                try {
                    glacier.uploadMultipartPart(new UploadMultipartPartRequest()
                        .withAccountId(accountId)
                        .withChecksum(checksum)
                        .withBody(inputSubStream)
                        .withRange("bytes " + currentPosition + "-" + (currentPosition + length - 1) + "/*")
                        .withUploadId(uploadId)
                        .withVaultName(vaultName));
                } finally {
                    try {inputSubStream.close();} catch (Exception e) {}
                }

                currentPosition += partSize;
            }

            String checksum = TreeHashGenerator.calculateTreeHash(binaryChecksums);

            String archiveSize = Long.toString(file.length());
            CompleteMultipartUploadResult completeMultipartUploadResult =
                glacier.completeMultipartUpload(new CompleteMultipartUploadRequest()
                    .withAccountId(accountId)
                    .withArchiveSize(archiveSize)
                    .withVaultName(vaultName)
                    .withChecksum(checksum)
                    .withUploadId(uploadId));

            String artifactId = completeMultipartUploadResult.getArchiveId();
            return new UploadResult(artifactId);
        } catch (Exception e) {
            glacier.abortMultipartUpload(new AbortMultipartUploadRequest(accountId, vaultName, uploadId));
            throw new AmazonClientException("Unable to finish the upload", e);
        }
>>>>>>> ef31f4906e32c7ce076d8c5765921b66050b09b9
    }

Solution content
        String uploadId = initiateResult.getUploadId();

        try {
	        List binaryChecksums = new LinkedList();

	        long currentPosition = 0;
	        while (currentPosition < file.length()) {
	            long length = partSize;
	            if (currentPosition + partSize > file.length()) {
	                length = file.length() - currentPosition;
	            }

                Exception failedException = null;
                boolean completed = false;
                int tries = 0;

                while(!completed && tries<5){
                    tries++;
                    InputStream inputSubStream = newInputSubstream(file, currentPosition, length);
                    inputSubStream.mark(-1);
                    String checksum = TreeHashGenerator.calculateTreeHash(inputSubStream);
                    byte[] binaryChecksum = BinaryUtils.fromHex(checksum);
                    inputSubStream.reset();
                    try {
                        glacier.uploadMultipartPart(new UploadMultipartPartRequest()
                                .withAccountId(accountId)
                                .withChecksum(checksum)
                                .withBody(inputSubStream)
                                .withRange("bytes " + currentPosition + "-" + (currentPosition + length - 1) + "/*")
                                .withUploadId(uploadId)
                                .withVaultName(vaultName));
                        completed = true;
                        binaryChecksums.add(binaryChecksum);
                    } catch (Exception e){
                        failedException = e;
                    } finally {
                        try {inputSubStream.close();} catch (Exception e) {}
                    }
                }
                if(!completed && failedException!=null){
                    throw failedException;
                }

	            currentPosition += partSize;
	        }

	        String checksum = TreeHashGenerator.calculateTreeHash(binaryChecksums);

	        String archiveSize = Long.toString(file.length());
	        CompleteMultipartUploadResult completeMultipartUploadResult =
	            glacier.completeMultipartUpload(new CompleteMultipartUploadRequest()
	                .withAccountId(accountId)
	                .withArchiveSize(archiveSize)
	                .withVaultName(vaultName)
	                .withChecksum(checksum)
	                .withUploadId(uploadId));

	        String artifactId = completeMultipartUploadResult.getArchiveId();
	        return new UploadResult(artifactId);
		} catch (Exception e) {
			glacier.abortMultipartUpload(new AbortMultipartUploadRequest(accountId, vaultName, uploadId));
			throw new AmazonClientException("Unable to finish the upload", e);
		}
    }

File
ArchiveTransferManager.java
Developer's decision
Version 1
Kind of conflict
Catch clause
Method invocation
Return statement
Variable
While statement