Example usage for com.amazonaws.services.s3.model MultipartUploadListing MultipartUploadListing

List of usage examples for com.amazonaws.services.s3.model MultipartUploadListing MultipartUploadListing

Introduction

In this page you can find the example usage for com.amazonaws.services.s3.model MultipartUploadListing MultipartUploadListing.

Prototype

MultipartUploadListing

Source Link

Usage

From source file:org.apache.nifi.processors.aws.s3.PutS3Object.java

License:Apache License

protected MultipartUploadListing getS3AgeoffListAndAgeoffLocalState(final ProcessContext context,
        final AmazonS3Client s3, final long now) {
    final long ageoff_interval = context.getProperty(MULTIPART_S3_AGEOFF_INTERVAL)
            .asTimePeriod(TimeUnit.MILLISECONDS);
    final String bucket = context.getProperty(BUCKET).evaluateAttributeExpressions().getValue();
    final Long maxAge = context.getProperty(MULTIPART_S3_MAX_AGE).asTimePeriod(TimeUnit.MILLISECONDS);
    final long ageCutoff = now - maxAge;

    final List<MultipartUpload> ageoffList = new ArrayList<>();
    if ((lastS3AgeOff.get() < now - ageoff_interval) && s3BucketLock.tryLock()) {
        try {/*from   w w  w .  j a va2  s. co  m*/

            ListMultipartUploadsRequest listRequest = new ListMultipartUploadsRequest(bucket);
            MultipartUploadListing listing = s3.listMultipartUploads(listRequest);
            for (MultipartUpload upload : listing.getMultipartUploads()) {
                long uploadTime = upload.getInitiated().getTime();
                if (uploadTime < ageCutoff) {
                    ageoffList.add(upload);
                }
            }

            // ageoff any local state
            ageoffLocalState(ageCutoff);
            lastS3AgeOff.set(System.currentTimeMillis());
        } catch (AmazonClientException e) {
            if (e instanceof AmazonS3Exception && ((AmazonS3Exception) e).getStatusCode() == 403
                    && ((AmazonS3Exception) e).getErrorCode().equals("AccessDenied")) {
                getLogger().warn("AccessDenied checking S3 Multipart Upload list for {}: {} "
                        + "** The configured user does not have the s3:ListBucketMultipartUploads permission "
                        + "for this bucket, S3 ageoff cannot occur without this permission.  Next ageoff check "
                        + "time is being advanced by interval to prevent checking on every upload **",
                        new Object[] { bucket, e.getMessage() });
                lastS3AgeOff.set(System.currentTimeMillis());
            } else {
                getLogger().error("Error checking S3 Multipart Upload list for {}: {}",
                        new Object[] { bucket, e.getMessage() });
            }
        } finally {
            s3BucketLock.unlock();
        }
    }
    MultipartUploadListing result = new MultipartUploadListing();
    result.setBucketName(bucket);
    result.setMultipartUploads(ageoffList);
    return result;
}

From source file:org.finra.dm.dao.impl.MockS3OperationsImpl.java

License:Apache License

/**
 * <p>//from   w  w  w.  ja  va 2s  . co  m
 * Returns a mock {@link MultipartUploadListing}.
 * </p>
 * <p>
 * The return object has the following properties.
 * <dl>
 * <dt>multipartUploads</dt>
 * <dd>Length 3 list</dd>
 * <p/>
 * <dt>multipartUploads[0].initiated</dt>
 * <dd>5 minutes prior to the object creation time.</dd>
 * <p/>
 * <dt>multipartUploads[1].initiated</dt>
 * <dd>15 minutes prior to the object creation time.</dd>
 * <p/>
 * <dt>multipartUploads[2].initiated</dt>
 * <dd>20 minutes prior to the object creation time.</dd>
 * </dl>
 * <p/>
 * All other properties as set to default as defined in the by {@link MultipartUploadListing} constructor.
 * </p>
 *
 * @return a mock object
 */
private MultipartUploadListing getMultipartUploadListing() {
    // Return 3 multipart uploads with 2 of them started more than 10 minutes ago.
    MultipartUploadListing multipartUploadListing = new MultipartUploadListing();
    List<MultipartUpload> multipartUploads = new ArrayList<>();
    multipartUploadListing.setMultipartUploads(multipartUploads);
    Date now = new Date();
    multipartUploads.add(getMultipartUpload(DmDateUtils.addMinutes(now, -5)));
    multipartUploads.add(getMultipartUpload(DmDateUtils.addMinutes(now, -15)));
    multipartUploads.add(getMultipartUpload(DmDateUtils.addMinutes(now, -20)));
    return multipartUploadListing;
}

From source file:org.finra.herd.dao.impl.MockS3OperationsImpl.java

License:Apache License

/**
 * <p> Returns a mock {@link MultipartUploadListing}. </p> <p> The return object has the following properties. <dl> <dt>multipartUploads</dt> <dd>Length 3
 * list</dd> <p/> <dt>multipartUploads[0].initiated</dt> <dd>5 minutes prior to the object creation time.</dd> <p/> <dt>multipartUploads[1].initiated</dt>
 * <dd>15 minutes prior to the object creation time.</dd> <p/> <dt>multipartUploads[2].initiated</dt> <dd>20 minutes prior to the object creation time.</dd>
 * </dl> <p/> All other properties as set to default as defined in the by {@link MultipartUploadListing} constructor. </p>
 *
 * @return a mock object/*from   w w w  .jav  a 2s  . com*/
 */
private MultipartUploadListing getMultipartUploadListing() {
    // Return 3 multipart uploads with 2 of them started more than 10 minutes ago.
    MultipartUploadListing multipartUploadListing = new MultipartUploadListing();
    List<MultipartUpload> multipartUploads = new ArrayList<>();
    multipartUploadListing.setMultipartUploads(multipartUploads);
    Date now = new Date();
    multipartUploads.add(getMultipartUpload(HerdDateUtils.addMinutes(now, -5)));
    multipartUploads.add(getMultipartUpload(HerdDateUtils.addMinutes(now, -15)));
    multipartUploads.add(getMultipartUpload(HerdDateUtils.addMinutes(now, -20)));
    return multipartUploadListing;
}