diff --git a/plugin.xml b/plugin.xml index f3dfa44..6f58f0e 100644 --- a/plugin.xml +++ b/plugin.xml @@ -5,7 +5,7 @@ com.fanruan.fs yes no - 1.3.6 + 1.3.7 11.0~11.0 2021-08-30 richie diff --git a/src/main/java/com/fanruan/fs/s3/repository/core/S3ResourceRepository.java b/src/main/java/com/fanruan/fs/s3/repository/core/S3ResourceRepository.java index d39e435..2e62af5 100644 --- a/src/main/java/com/fanruan/fs/s3/repository/core/S3ResourceRepository.java +++ b/src/main/java/com/fanruan/fs/s3/repository/core/S3ResourceRepository.java @@ -37,7 +37,8 @@ public class S3ResourceRepository extends BaseResourceRepository { private static final String DELIMITER = "/"; - private final AmazonS3 s3; + private final AmazonS3 readClient; + private final AmazonS3 writeClient; private final String bucket; @@ -52,7 +53,8 @@ public class S3ResourceRepository extends BaseResourceRepository { clientConfiguration.setUseTcpKeepAlive(config.getKeepAlive()); clientConfiguration.setMaxConnections(config.getMaxConnection()); amazonS3ClientBuilder = amazonS3ClientBuilder.withClientConfiguration(clientConfiguration); - this.s3 = amazonS3ClientBuilder.build(); + this.readClient = amazonS3ClientBuilder.build(); + this.writeClient = amazonS3ClientBuilder.build(); this.bucket = config.getBucket(); } @@ -64,7 +66,7 @@ public class S3ResourceRepository extends BaseResourceRepository { @Override public FineFileEntry getEntry(String path) { try { - ObjectMetadata metadata = s3.getObjectMetadata(bucket, path); + ObjectMetadata metadata = readClient.getObjectMetadata(bucket, path); return s3Object2FileEntry(metadata, path); } catch (Exception e) { FineLoggerFactory.getLogger().error(e, "{} not exist!", path); @@ -83,7 +85,7 @@ public class S3ResourceRepository extends BaseResourceRepository { String nextMarker = null; ObjectListing objectListing; do { - objectListing = this.s3.listObjects(listObjectsRequest.withMarker(nextMarker)); + objectListing = this.readClient.listObjects(listObjectsRequest.withMarker(nextMarker)); for (S3ObjectSummary summary : objectListing.getObjectSummaries()) { String key = summary.getKey(); if (!key.endsWith(DELIMITER)) { @@ -110,7 +112,7 @@ public class S3ResourceRepository extends BaseResourceRepository { public InputStream read(String filePath) throws ResourceIOException { GetObjectRequest request = new GetObjectRequest(bucket, filePath); try { - return s3.getObject(request).getObjectContent(); + return readClient.getObject(request).getObjectContent(); } catch (Exception e) { FineLoggerFactory.getLogger().error(e, "[S3] read path {} is error!", filePath); return new ByteArrayInputStream(new byte[0]); @@ -121,7 +123,7 @@ public class S3ResourceRepository extends BaseResourceRepository { public void write(String path, byte[] data) { ObjectMetadata metadata; try { - metadata = this.s3.getObjectMetadata(this.bucket, path); + metadata = this.readClient.getObjectMetadata(this.bucket, path); } catch (Exception e) { FineLoggerFactory.getLogger().warn("[S3] getObjectMetaData error ,path {}", path); metadata = new ObjectMetadata(); @@ -133,18 +135,18 @@ public class S3ResourceRepository extends BaseResourceRepository { if (metadata != null) { metadata.setContentLength(data.length); } - s3.putObject(bucket, path, new ByteArrayInputStream(data), metadata); + writeClient.putObject(bucket, path, new ByteArrayInputStream(data), metadata); } @Override public void write(String path, InputStream inputStream) throws ResourceIOException { if (null == inputStream) { - this.s3.putObject(this.bucket, path, ""); + this.writeClient.putObject(this.bucket, path, ""); } else { ObjectMetadata metadata = new ObjectMetadata(); try { metadata.setContentLength(inputStream.available()); - this.s3.putObject(this.bucket, path, inputStream, metadata); + this.writeClient.putObject(this.bucket, path, inputStream, metadata); } catch (Exception e) { FineLoggerFactory.getLogger().info("S3 inputStream.putObject error,path is {}, error message {}", path, e.getMessage()); } finally { @@ -165,7 +167,7 @@ public class S3ResourceRepository extends BaseResourceRepository { String parent = paths.get(i); PutObjectRequest req = new PutObjectRequest(this.bucket, parent, new ByteArrayInputStream(new byte[0]), buildEmptyMetadata()); try { - this.s3.putObject(req); + this.writeClient.putObject(req); } catch (Exception e) { FineLoggerFactory.getLogger().error(e, "[S3] Failed to create parent path {}", parent); return false; @@ -184,7 +186,7 @@ public class S3ResourceRepository extends BaseResourceRepository { String parent = paths.get(i); PutObjectRequest req = new PutObjectRequest(bucket, parent, new ByteArrayInputStream(new byte[0]), buildEmptyMetadata()); try { - s3.putObject(req); + writeClient.putObject(req); } catch (Exception e) { FineLoggerFactory.getLogger().error(e, "[S3] Failed to create parent path {}", parent); return false; @@ -195,7 +197,7 @@ public class S3ResourceRepository extends BaseResourceRepository { @Override public boolean delete(String path) { - this.s3.deleteObject(this.bucket, path); + this.writeClient.deleteObject(this.bucket, path); String prefix = path; if (!path.endsWith(DELIMITER)) { prefix = path + DELIMITER; @@ -206,11 +208,11 @@ public class S3ResourceRepository extends BaseResourceRepository { ObjectListing objectListing; String nextMarker = null; do { - objectListing = this.s3.listObjects(listObjectsRequest.withMarker(nextMarker)); + objectListing = this.readClient.listObjects(listObjectsRequest.withMarker(nextMarker)); for (S3ObjectSummary summary : objectListing.getObjectSummaries()) { String key = summary.getKey(); if (!key.endsWith(DELIMITER)) { - this.s3.deleteObject(this.bucket, key); + this.writeClient.deleteObject(this.bucket, key); } } for (String pre : objectListing.getCommonPrefixes()) { @@ -221,14 +223,14 @@ public class S3ResourceRepository extends BaseResourceRepository { } catch (Exception e) { FineLoggerFactory.getLogger().error(e, "[S3] delete error path {}", path); } - this.s3.deleteObject(this.bucket, prefix); + this.writeClient.deleteObject(this.bucket, prefix); return true; } @Override public boolean exist(String path) { try { - return this.s3.doesObjectExist(this.bucket, path) || this.s3.doesObjectExist(this.bucket, path + DELIMITER); + return this.readClient.doesObjectExist(this.bucket, path) || this.readClient.doesObjectExist(this.bucket, path + DELIMITER); } catch (Exception e) { FineLoggerFactory.getLogger().error(e, "[S3] exist error path {}", path); return false; @@ -246,7 +248,7 @@ public class S3ResourceRepository extends BaseResourceRepository { String nextMarker = null; ObjectListing objectListing; do { - objectListing = this.s3.listObjects(listObjectsRequest.withMarker(nextMarker)); + objectListing = this.readClient.listObjects(listObjectsRequest.withMarker(nextMarker)); for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) { String key = objectSummary.getKey(); if (StringKit.equals(key, dir)) { @@ -286,7 +288,7 @@ public class S3ResourceRepository extends BaseResourceRepository { @Override public long lastModified(String path) { try { - S3Object s3Object = this.s3.getObject(this.bucket, path); + S3Object s3Object = this.readClient.getObject(this.bucket, path); if (s3Object != null) { try { return s3Object.getObjectMetadata().getLastModified().getTime(); @@ -303,7 +305,7 @@ public class S3ResourceRepository extends BaseResourceRepository { @Override public long length(String path) { try { - ObjectMetadata metadata = this.s3.getObjectMetadata(this.bucket, path); + ObjectMetadata metadata = this.readClient.getObjectMetadata(this.bucket, path); return metadata.getContentLength(); } catch (Exception e) { LogKit.info("[S3] {} not exist!", path); @@ -327,13 +329,14 @@ public class S3ResourceRepository extends BaseResourceRepository { @Override public boolean copyFile(String origPath, String desPath) throws ResourceIOException { - s3.copyObject(bucket, origPath, bucket, desPath); + writeClient.copyObject(bucket, origPath, bucket, desPath); return exist(desPath); } @Override public void shutDown() { - s3.shutdown(); + readClient.shutdown(); + writeClient.shutdown(); } @Override