Ensure that S3object gets closed if file does not exist. (#588)

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>
This commit is contained in:
Kai Zimmermann
2017-10-10 17:26:30 +02:00
committed by GitHub
parent 47ced4f45e
commit c3908c9c34

View File

@@ -179,19 +179,23 @@ public class S3Repository implements ArtifactRepository {
final String key = objectKey(tenant, sha1Hash);
LOG.info("Retrieving S3 object from bucket {} and key {}", s3Properties.getBucketName(), key);
final S3Object s3Object = amazonS3.getObject(s3Properties.getBucketName(), key);
if (s3Object == null) {
try (final S3Object s3Object = amazonS3.getObject(s3Properties.getBucketName(), key)) {
if (s3Object == null) {
return null;
}
final ObjectMetadata s3ObjectMetadata = s3Object.getObjectMetadata();
// the MD5Content is stored in the ETag
return new S3Artifact(amazonS3, s3Properties, key, sha1Hash,
new DbArtifactHash(sha1Hash,
BaseEncoding.base16().lowerCase()
.encode(BaseEncoding.base64().decode(s3ObjectMetadata.getETag()))),
s3ObjectMetadata.getContentLength(), s3ObjectMetadata.getContentType());
} catch (final IOException e) {
LOG.error("Could not verify S3Object", e);
return null;
}
final ObjectMetadata s3ObjectMetadata = s3Object.getObjectMetadata();
// the MD5Content is stored in the ETag
return new S3Artifact(amazonS3, s3Properties, key, sha1Hash,
new DbArtifactHash(sha1Hash,
BaseEncoding.base16().lowerCase()
.encode(BaseEncoding.base64().decode(s3ObjectMetadata.getETag()))),
s3ObjectMetadata.getContentLength(), s3ObjectMetadata.getContentType());
}
private static void checkHashes(final AbstractDbArtifact artifact, final DbArtifactHash hash) {