/** * Delete mock parent directories which are no longer needed. * Retry policy: retrying; exceptions swallowed. * @param path path */ @Retries.RetryExceptionsSwallowed private void deleteUnnecessaryFakeDirectories(Path path) { List<DeleteObjectsRequest.KeyVersion> keysToRemove = new ArrayList<>(); while (!path.isRoot()) { String key = pathToKey(path); key = (key.endsWith("/")) ? key : (key + "/"); LOG.trace("To delete unnecessary fake directory {} for {}", key, path); keysToRemove.add(new DeleteObjectsRequest.KeyVersion(key)); path = path.getParent(); } try { removeKeys(keysToRemove, false, true); } catch(AmazonClientException | IOException e) { instrumentation.errorIgnored(); if (LOG.isDebugEnabled()) { StringBuilder sb = new StringBuilder(); for(DeleteObjectsRequest.KeyVersion kv : keysToRemove) { sb.append(kv.getKey()).append(","); } LOG.debug("While deleting keys {} ", sb.toString(), e); } } }
LOGGER.info("s3Key=\"{}\" s3VersionId=\"{}\"", keyVersion.getKey(), keyVersion.getVersion());
LOGGER.info("s3Key=\"{}\" s3VersionId=\"{}\"", keyVersion.getKey(), keyVersion.getVersion());
@Override public DeleteObjectsResult deleteObjects(DeleteObjectsRequest deleteObjectsRequest, AmazonS3 s3Client) { LOGGER.debug("deleteObjects(): deleteObjectRequest.getBucketName() = " + deleteObjectsRequest.getBucketName() + ", deleteObjectRequest.getKeys() = " + deleteObjectsRequest.getKeys()); List<DeletedObject> deletedObjects = new ArrayList<>(); MockS3Bucket mockS3Bucket = mockS3Buckets.get(deleteObjectsRequest.getBucketName()); for (KeyVersion keyVersion : deleteObjectsRequest.getKeys()) { String s3ObjectKey = keyVersion.getKey(); String s3ObjectVersion = keyVersion.getVersion(); String s3ObjectKeyVersion = s3ObjectKey + (s3ObjectVersion != null ? s3ObjectVersion : ""); mockS3Bucket.getObjects().remove(s3ObjectKey); if (mockS3Bucket.getVersions().remove(s3ObjectKeyVersion) != null) { DeletedObject deletedObject = new DeletedObject(); deletedObject.setKey(s3ObjectKey); deletedObject.setVersionId(s3ObjectVersion); deletedObjects.add(deletedObject); } } return new DeleteObjectsResult(deletedObjects); }
private void writeKeyVersion(XmlWriter xml, KeyVersion keyVersion) { xml.start("Object"); xml.start("Key").value(keyVersion.getKey()).end(); if (keyVersion.getVersion() != null) { xml.start("VersionId").value(keyVersion.getVersion()).end(); } xml.end(); }
@Override public DeleteObjectsResult deleteObjects(DeleteObjectsRequest deleteObjectsRequest) throws AmazonClientException, AmazonServiceException { maybeFail(); for (DeleteObjectsRequest.KeyVersion keyVersion : deleteObjectsRequest.getKeys()) { registerDeleteObject(keyVersion.getKey(), deleteObjectsRequest.getBucketName()); } return super.deleteObjects(deleteObjectsRequest); }
private void writeKeyVersion(XmlWriter xml, KeyVersion keyVersion) { xml.start("Object"); xml.start("Key").value(keyVersion.getKey()).end(); if (keyVersion.getVersion() != null) { xml.start("VersionId").value(keyVersion.getVersion()).end(); } xml.end(); }
private void writeKeyVersion(XmlWriter xml, KeyVersion keyVersion) { xml.start("Object"); xml.start("Key").value(keyVersion.getKey()).end(); if (keyVersion.getVersion() != null) { xml.start("VersionId").value(keyVersion.getVersion()).end(); } xml.end(); }
private void writeKeyVersion(XmlWriter xml, KeyVersion keyVersion) { xml.start("Object"); xml.start("Key").value(keyVersion.getKey()).end(); if (keyVersion.getVersion() != null) { xml.start("VersionId").value(keyVersion.getVersion()).end(); } xml.end(); }