You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu> on 2021/08/10 20:58:12 UTC

Change in asterixdb[master]: [ASTERIXDB-2945][EXT] Ensure the size of S3 connection pool

From Wael Alkowaileet <wa...@gmail.com>:

Wael Alkowaileet has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763 )


Change subject: [ASTERIXDB-2945][EXT] Ensure the size of S3 connection pool
......................................................................

[ASTERIXDB-2945][EXT] Ensure the size of S3 connection pool

- user mode changes: no
- storage format changes: no
- interface changes: no

Details:
- We set the S3 connection pool size to twice the number
  of partitions.

Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
---
M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java
M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
3 files changed, 48 insertions(+), 29 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/63/12763/1

diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java
index c9eb489..803e657 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java
@@ -51,7 +51,8 @@
 
         //Configure Hadoop S3 input splits
         JobConf conf = createHdfsConf(serviceCtx, configuration);
-        ExternalDataUtils.AwsS3.configureAwsS3HdfsJobConf(conf, configuration);
+        int numberOfPartitions = getPartitionConstraint().getLocations().length;
+        ExternalDataUtils.AwsS3.configureAwsS3HdfsJobConf(conf, configuration, numberOfPartitions);
         configureHdfsConf(conf, configuration);
     }
 
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
index 51865f0..7445fbd 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
@@ -320,9 +320,17 @@
         public static final String HADOOP_ACCESS_KEY_ID = "fs.s3a.access.key";
         public static final String HADOOP_SECRET_ACCESS_KEY = "fs.s3a.secret.key";
         public static final String HADOOP_SESSION_TOKEN = "fs.s3a.session.token";
-        public static final String HADOOP_PATH_STYLE_ACCESS = "fs.s3a.path.style.access";
         public static final String HADOOP_REGION = "fs.s3a.region";
         public static final String HADOOP_SERVICE_END_POINT = "fs.s3a.endpoint";
+
+        /*
+         * Internal configurations
+         */
+        //Allows accessing directories as file system path
+        public static final String HADOOP_PATH_STYLE_ACCESS = "fs.s3a.path.style.access";
+        //The number of maximum HTTP connections in connection pool
+        public static final String HADOOP_S3_CONNECTION_POOL_SIZE = "fs.s3a.connection.maximum";
+        //S3 used protocol
         public static final String HADOOP_S3_PROTOCOL = "s3a";
 
         //Hadoop credentials provider key
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
index 750ff13..fbdcd30 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
@@ -25,6 +25,7 @@
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_ANONYMOUS_ACCESS;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_CREDENTIAL_PROVIDER_KEY;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_PATH_STYLE_ACCESS;
+import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_S3_CONNECTION_POOL_SIZE;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_SECRET_ACCESS_KEY;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_SESSION_TOKEN;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_TEMP_ACCESS;
@@ -96,6 +97,8 @@
 import org.apache.hyracks.dataflow.common.data.parsers.LongParserFactory;
 import org.apache.hyracks.dataflow.common.data.parsers.UTF8StringParserFactory;
 import org.apache.hyracks.util.StorageUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import com.azure.storage.blob.BlobContainerClient;
 import com.azure.storage.blob.BlobServiceClient;
@@ -121,7 +124,7 @@
 import software.amazon.awssdk.services.s3.model.S3Response;
 
 public class ExternalDataUtils {
-
+    private static final Logger LOGGER = LogManager.getLogger();
     private static final Map<ATypeTag, IValueParserFactory> valueParserFactoryMap = new EnumMap<>(ATypeTag.class);
     private static final int DEFAULT_MAX_ARGUMENT_SZ = 1024 * 1024;
     private static final int HEADER_FUDGE = 64;
@@ -196,8 +199,8 @@
     }
 
     public static boolean isExternal(String aString) {
-        return ((aString != null) && aString.contains(ExternalDataConstants.EXTERNAL_LIBRARY_SEPARATOR)
-                && (aString.trim().length() > 1));
+        return ((aString != null) && aString.contains(ExternalDataConstants.EXTERNAL_LIBRARY_SEPARATOR) && (
+                aString.trim().length() > 1));
     }
 
     public static String getLibraryName(String aString) {
@@ -284,7 +287,8 @@
             throw new AsterixException("to use " + ExternalDataConstants.EXTERNAL + " reader, the parameter "
                     + ExternalDataConstants.KEY_READER_FACTORY + " must be specified.");
         }
-        String[] libraryAndFactory = readerFactory.split(ExternalDataConstants.EXTERNAL_LIBRARY_SEPARATOR); //TODO(MULTI_PART_DATAVERSE_NAME):REVISIT
+        String[] libraryAndFactory = readerFactory.split(
+                ExternalDataConstants.EXTERNAL_LIBRARY_SEPARATOR); //TODO(MULTI_PART_DATAVERSE_NAME):REVISIT
         if (libraryAndFactory.length != 2) {
             throw new AsterixException("The parameter " + ExternalDataConstants.KEY_READER_FACTORY
                     + " must follow the format \"DataverseName.LibraryName#ReaderFactoryFullyQualifiedName\"");
@@ -294,7 +298,8 @@
             throw new AsterixException("The parameter " + ExternalDataConstants.KEY_READER_FACTORY
                     + " must follow the format \"DataverseName.LibraryName#ReaderFactoryFullyQualifiedName\"");
         }
-        DataverseName dataverseName = DataverseName.createSinglePartName(dataverseAndLibrary[0]); //TODO(MULTI_PART_DATAVERSE_NAME):REVISIT
+        DataverseName dataverseName =
+                DataverseName.createSinglePartName(dataverseAndLibrary[0]); //TODO(MULTI_PART_DATAVERSE_NAME):REVISIT
         String libraryName = dataverseAndLibrary[1];
         ILibrary lib;
         try {
@@ -329,10 +334,8 @@
                 throw new AsterixException("Unexpected library language: " + lib.getLanguage());
             }
             ClassLoader classLoader = ((JavaLibrary) lib).getClassLoader();
-            return (IDataParserFactory) classLoader
-                    .loadClass(parserFactoryName
-                            .substring(parserFactoryName.indexOf(ExternalDataConstants.EXTERNAL_LIBRARY_SEPARATOR) + 1))
-                    .newInstance();
+            return (IDataParserFactory) classLoader.loadClass(parserFactoryName.substring(
+                    parserFactoryName.indexOf(ExternalDataConstants.EXTERNAL_LIBRARY_SEPARATOR) + 1)).newInstance();
         } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
             throw new AsterixException("Failed to create an external parser factory", e);
         }
@@ -455,8 +458,8 @@
             configuration.put(ExternalDataConstants.KEY_PARSER, ExternalDataConstants.FORMAT_NOOP);
             configuration.put(ExternalDataConstants.KEY_FORMAT, ExternalDataConstants.FORMAT_PARQUET);
         }
-        if (!configuration.containsKey(ExternalDataConstants.KEY_PARSER)
-                && configuration.containsKey(ExternalDataConstants.KEY_FORMAT)) {
+        if (!configuration.containsKey(ExternalDataConstants.KEY_PARSER) && configuration.containsKey(
+                ExternalDataConstants.KEY_FORMAT)) {
             configuration.put(ExternalDataConstants.KEY_PARSER, configuration.get(ExternalDataConstants.KEY_FORMAT));
         }
     }
@@ -652,8 +655,9 @@
                         String stuffEscaped = stuffBuilder.toString();
 
                         // Escape the set operations
-                        stuffEscaped = stuffEscaped.replace("&&", "\\&\\&").replace("~~", "\\~\\~")
-                                .replace("||", "\\|\\|").replace("--", "\\-\\-");
+                        stuffEscaped =
+                                stuffEscaped.replace("&&", "\\&\\&").replace("~~", "\\~\\~").replace("||", "\\|\\|")
+                                        .replace("--", "\\-\\-");
 
                         result.append("[").append(stuffEscaped).append("]");
                         charPosition = closingBracketPosition + 1;
@@ -701,19 +705,17 @@
                 includes.add(entry);
             } else if (key.equals(ExternalDataConstants.KEY_EXCLUDE)) {
                 excludes.add(entry);
-            } else if (key.startsWith(ExternalDataConstants.KEY_INCLUDE)
-                    || key.startsWith(ExternalDataConstants.KEY_EXCLUDE)) {
+            } else if (key.startsWith(ExternalDataConstants.KEY_INCLUDE) || key.startsWith(
+                    ExternalDataConstants.KEY_EXCLUDE)) {
 
                 // Split by the "#", length should be 2, left should be include/exclude, right should be integer
                 String[] splits = key.split("#");
 
-                if (key.startsWith(ExternalDataConstants.KEY_INCLUDE) && splits.length == 2
-                        && splits[0].equals(ExternalDataConstants.KEY_INCLUDE)
-                        && NumberUtils.isIntegerNumericString(splits[1])) {
+                if (key.startsWith(ExternalDataConstants.KEY_INCLUDE) && splits.length == 2 && splits[0].equals(
+                        ExternalDataConstants.KEY_INCLUDE) && NumberUtils.isIntegerNumericString(splits[1])) {
                     includes.add(entry);
-                } else if (key.startsWith(ExternalDataConstants.KEY_EXCLUDE) && splits.length == 2
-                        && splits[0].equals(ExternalDataConstants.KEY_EXCLUDE)
-                        && NumberUtils.isIntegerNumericString(splits[1])) {
+                } else if (key.startsWith(ExternalDataConstants.KEY_EXCLUDE) && splits.length == 2 && splits[0].equals(
+                        ExternalDataConstants.KEY_EXCLUDE) && NumberUtils.isIntegerNumericString(splits[1])) {
                     excludes.add(entry);
                 } else {
                     throw new CompilationException(ErrorCode.INVALID_PROPERTY_FORMAT, key);
@@ -801,8 +803,8 @@
             } else {
                 // auth required, check for temporary or permanent credentials
                 if (sessionToken != null) {
-                    credentialsProvider = StaticCredentialsProvider
-                            .create(AwsSessionCredentials.create(accessKeyId, secretAccessKey, sessionToken));
+                    credentialsProvider = StaticCredentialsProvider.create(
+                            AwsSessionCredentials.create(accessKeyId, secretAccessKey, sessionToken));
                 } else {
                     credentialsProvider =
                             StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKeyId, secretAccessKey));
@@ -833,9 +835,11 @@
         /**
          * Builds the S3 client using the provided configuration
          *
-         * @param configuration properties
+         * @param configuration      properties
+         * @param numberOfPartitions number of partitions in the cluster
          */
-        public static void configureAwsS3HdfsJobConf(JobConf conf, Map<String, String> configuration) {
+        public static void configureAwsS3HdfsJobConf(JobConf conf, Map<String, String> configuration,
+                int numberOfPartitions) {
             String accessKeyId = configuration.get(ExternalDataConstants.AwsS3.ACCESS_KEY_ID_FIELD_NAME);
             String secretAccessKey = configuration.get(ExternalDataConstants.AwsS3.SECRET_ACCESS_KEY_FIELD_NAME);
             String sessionToken = configuration.get(ExternalDataConstants.AwsS3.SESSION_TOKEN_FIELD_NAME);
@@ -867,6 +871,11 @@
              */
             conf.set(HADOOP_PATH_STYLE_ACCESS, ExternalDataConstants.TRUE);
 
+            /*
+             * Set the size of S3 connection pool to twice the number of partitions
+             */
+            conf.set(HADOOP_S3_CONNECTION_POOL_SIZE, String.valueOf(2 * numberOfPartitions));
+
             if (serviceEndpoint != null) {
                 // Validation of the URL should be done at hadoop-aws level
                 conf.set(ExternalDataConstants.AwsS3.HADOOP_SERVICE_END_POINT, serviceEndpoint);
@@ -935,8 +944,9 @@
                 }
             }
 
-            boolean isEmpty = useOldApi ? ((ListObjectsResponse) response).contents().isEmpty()
-                    : ((ListObjectsV2Response) response).contents().isEmpty();
+            boolean isEmpty = useOldApi ?
+                    ((ListObjectsResponse) response).contents().isEmpty() :
+                    ((ListObjectsV2Response) response).contents().isEmpty();
             if (isEmpty && collector.shouldWarn()) {
                 Warning warning = Warning.of(srcLoc, ErrorCode.EXTERNAL_SOURCE_CONFIGURATION_RETURNED_NO_FILES);
                 collector.warn(warning);

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
Gerrit-Change-Number: 12763
Gerrit-PatchSet: 1
Gerrit-Owner: Wael Alkowaileet <wa...@gmail.com>
Gerrit-MessageType: newchange

Change in asterixdb[master]: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Wael Alkowaileet <wa...@gmail.com>:

Wael Alkowaileet has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763 )

Change subject: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool
......................................................................


Patch Set 4: Code-Review+1


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
Gerrit-Change-Number: 12763
Gerrit-PatchSet: 4
Gerrit-Owner: Wael Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Hussain Towaileb <hu...@gmail.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Wael Alkowaileet <wa...@gmail.com>
Gerrit-CC: Till Westmann <ti...@apache.org>
Gerrit-Comment-Date: Wed, 11 Aug 2021 20:11:00 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-2945][EXT] Ensure the size of S3 connection pool

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Wael Alkowaileet <wa...@gmail.com>:

Wael Alkowaileet has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763 )


Change subject: [ASTERIXDB-2945][EXT] Ensure the size of S3 connection pool
......................................................................

[ASTERIXDB-2945][EXT] Ensure the size of S3 connection pool

- user mode changes: no
- storage format changes: no
- interface changes: no

Details:
- We set the S3 connection pool size to twice the number
  of partitions.

Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
---
M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java
M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
3 files changed, 48 insertions(+), 29 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/63/12763/1

diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java
index c9eb489..803e657 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java
@@ -51,7 +51,8 @@
 
         //Configure Hadoop S3 input splits
         JobConf conf = createHdfsConf(serviceCtx, configuration);
-        ExternalDataUtils.AwsS3.configureAwsS3HdfsJobConf(conf, configuration);
+        int numberOfPartitions = getPartitionConstraint().getLocations().length;
+        ExternalDataUtils.AwsS3.configureAwsS3HdfsJobConf(conf, configuration, numberOfPartitions);
         configureHdfsConf(conf, configuration);
     }
 
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
index 51865f0..7445fbd 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
@@ -320,9 +320,17 @@
         public static final String HADOOP_ACCESS_KEY_ID = "fs.s3a.access.key";
         public static final String HADOOP_SECRET_ACCESS_KEY = "fs.s3a.secret.key";
         public static final String HADOOP_SESSION_TOKEN = "fs.s3a.session.token";
-        public static final String HADOOP_PATH_STYLE_ACCESS = "fs.s3a.path.style.access";
         public static final String HADOOP_REGION = "fs.s3a.region";
         public static final String HADOOP_SERVICE_END_POINT = "fs.s3a.endpoint";
+
+        /*
+         * Internal configurations
+         */
+        //Allows accessing directories as file system path
+        public static final String HADOOP_PATH_STYLE_ACCESS = "fs.s3a.path.style.access";
+        //The number of maximum HTTP connections in connection pool
+        public static final String HADOOP_S3_CONNECTION_POOL_SIZE = "fs.s3a.connection.maximum";
+        //S3 used protocol
         public static final String HADOOP_S3_PROTOCOL = "s3a";
 
         //Hadoop credentials provider key
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
index 750ff13..fbdcd30 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
@@ -25,6 +25,7 @@
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_ANONYMOUS_ACCESS;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_CREDENTIAL_PROVIDER_KEY;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_PATH_STYLE_ACCESS;
+import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_S3_CONNECTION_POOL_SIZE;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_SECRET_ACCESS_KEY;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_SESSION_TOKEN;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_TEMP_ACCESS;
@@ -96,6 +97,8 @@
 import org.apache.hyracks.dataflow.common.data.parsers.LongParserFactory;
 import org.apache.hyracks.dataflow.common.data.parsers.UTF8StringParserFactory;
 import org.apache.hyracks.util.StorageUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import com.azure.storage.blob.BlobContainerClient;
 import com.azure.storage.blob.BlobServiceClient;
@@ -121,7 +124,7 @@
 import software.amazon.awssdk.services.s3.model.S3Response;
 
 public class ExternalDataUtils {
-
+    private static final Logger LOGGER = LogManager.getLogger();
     private static final Map<ATypeTag, IValueParserFactory> valueParserFactoryMap = new EnumMap<>(ATypeTag.class);
     private static final int DEFAULT_MAX_ARGUMENT_SZ = 1024 * 1024;
     private static final int HEADER_FUDGE = 64;
@@ -196,8 +199,8 @@
     }
 
     public static boolean isExternal(String aString) {
-        return ((aString != null) && aString.contains(ExternalDataConstants.EXTERNAL_LIBRARY_SEPARATOR)
-                && (aString.trim().length() > 1));
+        return ((aString != null) && aString.contains(ExternalDataConstants.EXTERNAL_LIBRARY_SEPARATOR) && (
+                aString.trim().length() > 1));
     }
 
     public static String getLibraryName(String aString) {
@@ -284,7 +287,8 @@
             throw new AsterixException("to use " + ExternalDataConstants.EXTERNAL + " reader, the parameter "
                     + ExternalDataConstants.KEY_READER_FACTORY + " must be specified.");
         }
-        String[] libraryAndFactory = readerFactory.split(ExternalDataConstants.EXTERNAL_LIBRARY_SEPARATOR); //TODO(MULTI_PART_DATAVERSE_NAME):REVISIT
+        String[] libraryAndFactory = readerFactory.split(
+                ExternalDataConstants.EXTERNAL_LIBRARY_SEPARATOR); //TODO(MULTI_PART_DATAVERSE_NAME):REVISIT
         if (libraryAndFactory.length != 2) {
             throw new AsterixException("The parameter " + ExternalDataConstants.KEY_READER_FACTORY
                     + " must follow the format \"DataverseName.LibraryName#ReaderFactoryFullyQualifiedName\"");
@@ -294,7 +298,8 @@
             throw new AsterixException("The parameter " + ExternalDataConstants.KEY_READER_FACTORY
                     + " must follow the format \"DataverseName.LibraryName#ReaderFactoryFullyQualifiedName\"");
         }
-        DataverseName dataverseName = DataverseName.createSinglePartName(dataverseAndLibrary[0]); //TODO(MULTI_PART_DATAVERSE_NAME):REVISIT
+        DataverseName dataverseName =
+                DataverseName.createSinglePartName(dataverseAndLibrary[0]); //TODO(MULTI_PART_DATAVERSE_NAME):REVISIT
         String libraryName = dataverseAndLibrary[1];
         ILibrary lib;
         try {
@@ -329,10 +334,8 @@
                 throw new AsterixException("Unexpected library language: " + lib.getLanguage());
             }
             ClassLoader classLoader = ((JavaLibrary) lib).getClassLoader();
-            return (IDataParserFactory) classLoader
-                    .loadClass(parserFactoryName
-                            .substring(parserFactoryName.indexOf(ExternalDataConstants.EXTERNAL_LIBRARY_SEPARATOR) + 1))
-                    .newInstance();
+            return (IDataParserFactory) classLoader.loadClass(parserFactoryName.substring(
+                    parserFactoryName.indexOf(ExternalDataConstants.EXTERNAL_LIBRARY_SEPARATOR) + 1)).newInstance();
         } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
             throw new AsterixException("Failed to create an external parser factory", e);
         }
@@ -455,8 +458,8 @@
             configuration.put(ExternalDataConstants.KEY_PARSER, ExternalDataConstants.FORMAT_NOOP);
             configuration.put(ExternalDataConstants.KEY_FORMAT, ExternalDataConstants.FORMAT_PARQUET);
         }
-        if (!configuration.containsKey(ExternalDataConstants.KEY_PARSER)
-                && configuration.containsKey(ExternalDataConstants.KEY_FORMAT)) {
+        if (!configuration.containsKey(ExternalDataConstants.KEY_PARSER) && configuration.containsKey(
+                ExternalDataConstants.KEY_FORMAT)) {
             configuration.put(ExternalDataConstants.KEY_PARSER, configuration.get(ExternalDataConstants.KEY_FORMAT));
         }
     }
@@ -652,8 +655,9 @@
                         String stuffEscaped = stuffBuilder.toString();
 
                         // Escape the set operations
-                        stuffEscaped = stuffEscaped.replace("&&", "\\&\\&").replace("~~", "\\~\\~")
-                                .replace("||", "\\|\\|").replace("--", "\\-\\-");
+                        stuffEscaped =
+                                stuffEscaped.replace("&&", "\\&\\&").replace("~~", "\\~\\~").replace("||", "\\|\\|")
+                                        .replace("--", "\\-\\-");
 
                         result.append("[").append(stuffEscaped).append("]");
                         charPosition = closingBracketPosition + 1;
@@ -701,19 +705,17 @@
                 includes.add(entry);
             } else if (key.equals(ExternalDataConstants.KEY_EXCLUDE)) {
                 excludes.add(entry);
-            } else if (key.startsWith(ExternalDataConstants.KEY_INCLUDE)
-                    || key.startsWith(ExternalDataConstants.KEY_EXCLUDE)) {
+            } else if (key.startsWith(ExternalDataConstants.KEY_INCLUDE) || key.startsWith(
+                    ExternalDataConstants.KEY_EXCLUDE)) {
 
                 // Split by the "#", length should be 2, left should be include/exclude, right should be integer
                 String[] splits = key.split("#");
 
-                if (key.startsWith(ExternalDataConstants.KEY_INCLUDE) && splits.length == 2
-                        && splits[0].equals(ExternalDataConstants.KEY_INCLUDE)
-                        && NumberUtils.isIntegerNumericString(splits[1])) {
+                if (key.startsWith(ExternalDataConstants.KEY_INCLUDE) && splits.length == 2 && splits[0].equals(
+                        ExternalDataConstants.KEY_INCLUDE) && NumberUtils.isIntegerNumericString(splits[1])) {
                     includes.add(entry);
-                } else if (key.startsWith(ExternalDataConstants.KEY_EXCLUDE) && splits.length == 2
-                        && splits[0].equals(ExternalDataConstants.KEY_EXCLUDE)
-                        && NumberUtils.isIntegerNumericString(splits[1])) {
+                } else if (key.startsWith(ExternalDataConstants.KEY_EXCLUDE) && splits.length == 2 && splits[0].equals(
+                        ExternalDataConstants.KEY_EXCLUDE) && NumberUtils.isIntegerNumericString(splits[1])) {
                     excludes.add(entry);
                 } else {
                     throw new CompilationException(ErrorCode.INVALID_PROPERTY_FORMAT, key);
@@ -801,8 +803,8 @@
             } else {
                 // auth required, check for temporary or permanent credentials
                 if (sessionToken != null) {
-                    credentialsProvider = StaticCredentialsProvider
-                            .create(AwsSessionCredentials.create(accessKeyId, secretAccessKey, sessionToken));
+                    credentialsProvider = StaticCredentialsProvider.create(
+                            AwsSessionCredentials.create(accessKeyId, secretAccessKey, sessionToken));
                 } else {
                     credentialsProvider =
                             StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKeyId, secretAccessKey));
@@ -833,9 +835,11 @@
         /**
          * Builds the S3 client using the provided configuration
          *
-         * @param configuration properties
+         * @param configuration      properties
+         * @param numberOfPartitions number of partitions in the cluster
          */
-        public static void configureAwsS3HdfsJobConf(JobConf conf, Map<String, String> configuration) {
+        public static void configureAwsS3HdfsJobConf(JobConf conf, Map<String, String> configuration,
+                int numberOfPartitions) {
             String accessKeyId = configuration.get(ExternalDataConstants.AwsS3.ACCESS_KEY_ID_FIELD_NAME);
             String secretAccessKey = configuration.get(ExternalDataConstants.AwsS3.SECRET_ACCESS_KEY_FIELD_NAME);
             String sessionToken = configuration.get(ExternalDataConstants.AwsS3.SESSION_TOKEN_FIELD_NAME);
@@ -867,6 +871,11 @@
              */
             conf.set(HADOOP_PATH_STYLE_ACCESS, ExternalDataConstants.TRUE);
 
+            /*
+             * Set the size of S3 connection pool to twice the number of partitions
+             */
+            conf.set(HADOOP_S3_CONNECTION_POOL_SIZE, String.valueOf(2 * numberOfPartitions));
+
             if (serviceEndpoint != null) {
                 // Validation of the URL should be done at hadoop-aws level
                 conf.set(ExternalDataConstants.AwsS3.HADOOP_SERVICE_END_POINT, serviceEndpoint);
@@ -935,8 +944,9 @@
                 }
             }
 
-            boolean isEmpty = useOldApi ? ((ListObjectsResponse) response).contents().isEmpty()
-                    : ((ListObjectsV2Response) response).contents().isEmpty();
+            boolean isEmpty = useOldApi ?
+                    ((ListObjectsResponse) response).contents().isEmpty() :
+                    ((ListObjectsV2Response) response).contents().isEmpty();
             if (isEmpty && collector.shouldWarn()) {
                 Warning warning = Warning.of(srcLoc, ErrorCode.EXTERNAL_SOURCE_CONFIGURATION_RETURNED_NO_FILES);
                 collector.warn(warning);

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
Gerrit-Change-Number: 12763
Gerrit-PatchSet: 1
Gerrit-Owner: Wael Alkowaileet <wa...@gmail.com>
Gerrit-MessageType: newchange

Change in asterixdb[master]: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
Anon. E. Moose #1000171 has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763 )

Change subject: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool
......................................................................


Patch Set 4: Contrib-2

Analytics Compatibility Tests Failed
https://cbjenkins.page.link/KszQgYQNedH7Bdvr5 : UNSTABLE


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
Gerrit-Change-Number: 12763
Gerrit-PatchSet: 4
Gerrit-Owner: Wael Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Comment-Date: Wed, 11 Aug 2021 18:32:33 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Wael Alkowaileet <wa...@gmail.com>:

Wael Alkowaileet has submitted this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763 )

Change subject: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool
......................................................................

[ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool

- user mode changes: no
- storage format changes: no
- interface changes: no

Details:
- We set the S3 connection pool size to be the number of partitions.

Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Wael Alkowaileet <wa...@gmail.com>
Reviewed-by: Hussain Towaileb <hu...@gmail.com>
---
M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java
M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
3 files changed, 21 insertions(+), 5 deletions(-)

Approvals:
  Wael Alkowaileet: Looks good to me, but someone else must approve
  Hussain Towaileb: Looks good to me, approved
  Jenkins: Verified; Verified

Objections:
  Anon. E. Moose #1000171: Violations found



diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java
index c9eb489..803e657 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java
@@ -51,7 +51,8 @@
 
         //Configure Hadoop S3 input splits
         JobConf conf = createHdfsConf(serviceCtx, configuration);
-        ExternalDataUtils.AwsS3.configureAwsS3HdfsJobConf(conf, configuration);
+        int numberOfPartitions = getPartitionConstraint().getLocations().length;
+        ExternalDataUtils.AwsS3.configureAwsS3HdfsJobConf(conf, configuration, numberOfPartitions);
         configureHdfsConf(conf, configuration);
     }
 
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
index 51865f0..7445fbd 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
@@ -320,9 +320,17 @@
         public static final String HADOOP_ACCESS_KEY_ID = "fs.s3a.access.key";
         public static final String HADOOP_SECRET_ACCESS_KEY = "fs.s3a.secret.key";
         public static final String HADOOP_SESSION_TOKEN = "fs.s3a.session.token";
-        public static final String HADOOP_PATH_STYLE_ACCESS = "fs.s3a.path.style.access";
         public static final String HADOOP_REGION = "fs.s3a.region";
         public static final String HADOOP_SERVICE_END_POINT = "fs.s3a.endpoint";
+
+        /*
+         * Internal configurations
+         */
+        //Allows accessing directories as file system path
+        public static final String HADOOP_PATH_STYLE_ACCESS = "fs.s3a.path.style.access";
+        //The number of maximum HTTP connections in connection pool
+        public static final String HADOOP_S3_CONNECTION_POOL_SIZE = "fs.s3a.connection.maximum";
+        //S3 used protocol
         public static final String HADOOP_S3_PROTOCOL = "s3a";
 
         //Hadoop credentials provider key
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
index 750ff13..59f2382 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
@@ -25,6 +25,7 @@
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_ANONYMOUS_ACCESS;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_CREDENTIAL_PROVIDER_KEY;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_PATH_STYLE_ACCESS;
+import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_S3_CONNECTION_POOL_SIZE;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_SECRET_ACCESS_KEY;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_SESSION_TOKEN;
 import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.HADOOP_TEMP_ACCESS;
@@ -121,7 +122,6 @@
 import software.amazon.awssdk.services.s3.model.S3Response;
 
 public class ExternalDataUtils {
-
     private static final Map<ATypeTag, IValueParserFactory> valueParserFactoryMap = new EnumMap<>(ATypeTag.class);
     private static final int DEFAULT_MAX_ARGUMENT_SZ = 1024 * 1024;
     private static final int HEADER_FUDGE = 64;
@@ -833,9 +833,11 @@
         /**
          * Builds the S3 client using the provided configuration
          *
-         * @param configuration properties
+         * @param configuration      properties
+         * @param numberOfPartitions number of partitions in the cluster
          */
-        public static void configureAwsS3HdfsJobConf(JobConf conf, Map<String, String> configuration) {
+        public static void configureAwsS3HdfsJobConf(JobConf conf, Map<String, String> configuration,
+                int numberOfPartitions) {
             String accessKeyId = configuration.get(ExternalDataConstants.AwsS3.ACCESS_KEY_ID_FIELD_NAME);
             String secretAccessKey = configuration.get(ExternalDataConstants.AwsS3.SECRET_ACCESS_KEY_FIELD_NAME);
             String sessionToken = configuration.get(ExternalDataConstants.AwsS3.SESSION_TOKEN_FIELD_NAME);
@@ -867,6 +869,11 @@
              */
             conf.set(HADOOP_PATH_STYLE_ACCESS, ExternalDataConstants.TRUE);
 
+            /*
+             * Set the size of S3 connection pool to be the number of partitions
+             */
+            conf.set(HADOOP_S3_CONNECTION_POOL_SIZE, String.valueOf(numberOfPartitions));
+
             if (serviceEndpoint != null) {
                 // Validation of the URL should be done at hadoop-aws level
                 conf.set(ExternalDataConstants.AwsS3.HADOOP_SERVICE_END_POINT, serviceEndpoint);

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
Gerrit-Change-Number: 12763
Gerrit-PatchSet: 5
Gerrit-Owner: Wael Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Hussain Towaileb <hu...@gmail.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Wael Alkowaileet <wa...@gmail.com>
Gerrit-CC: Till Westmann <ti...@apache.org>
Gerrit-MessageType: merged

Change in asterixdb[master]: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Wael Alkowaileet <wa...@gmail.com>:

Hello Anon. E. Moose #1000171, Jenkins, 

I'd like you to reexamine a change. Please visit

    https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763

to look at the new patch set (#4).

Change subject: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool
......................................................................

[ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool

- user mode changes: no
- storage format changes: no
- interface changes: no

Details:
- We set the S3 connection pool size to be the number of partitions.

Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
---
M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/parquet/AwsS3ParquetReaderFactory.java
M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
3 files changed, 21 insertions(+), 5 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/63/12763/4
-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
Gerrit-Change-Number: 12763
Gerrit-PatchSet: 4
Gerrit-Owner: Wael Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-MessageType: newpatchset

Change in asterixdb[master]: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
Anon. E. Moose #1000171 has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763 )

Change subject: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool
......................................................................


Patch Set 2: Contrib-2

Analytics Compatibility Compilation Failed
https://cbjenkins.page.link/Da5X4gFveFePWHZN7 : UNSTABLE


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
Gerrit-Change-Number: 12763
Gerrit-PatchSet: 2
Gerrit-Owner: Wael Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Comment-Date: Tue, 10 Aug 2021 21:39:43 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Jenkins <je...@fulliautomatix.ics.uci.edu>:

Jenkins has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763 )

Change subject: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool
......................................................................


Patch Set 3: Integration-Tests+1

Integration Tests Successful

https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/12361/ : SUCCESS


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
Gerrit-Change-Number: 12763
Gerrit-PatchSet: 3
Gerrit-Owner: Wael Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Comment-Date: Wed, 11 Aug 2021 04:45:21 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-2945][EXT] Ensure the size of S3 connection pool

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
Anon. E. Moose #1000171 has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763 )

Change subject: [ASTERIXDB-2945][EXT] Ensure the size of S3 connection pool
......................................................................


Patch Set 1:

Analytics Compatibility Compilation Successful
https://cbjenkins.page.link/nksb512MjdVRwzdr9 : SUCCESS


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
Gerrit-Change-Number: 12763
Gerrit-PatchSet: 1
Gerrit-Owner: Wael Alkowaileet <wa...@gmail.com>
Gerrit-CC: Anon. E. Moose #1000171
Gerrit-CC: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Comment-Date: Tue, 10 Aug 2021 21:05:47 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Hussain Towaileb <hu...@gmail.com>:

Hussain Towaileb has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763 )

Change subject: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool
......................................................................


Patch Set 4: Code-Review+2


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
Gerrit-Change-Number: 12763
Gerrit-PatchSet: 4
Gerrit-Owner: Wael Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Hussain Towaileb <hu...@gmail.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Wael Alkowaileet <wa...@gmail.com>
Gerrit-CC: Till Westmann <ti...@apache.org>
Gerrit-Comment-Date: Thu, 12 Aug 2021 08:55:58 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
Anon. E. Moose #1000171 has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763 )

Change subject: [ASTERIXDB-2944][EXT] Ensure the size of S3 connection pool
......................................................................


Patch Set 3:

Analytics Compatibility Compilation Successful
https://cbjenkins.page.link/5u6GrqeLQtGoL1ho8 : SUCCESS


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12763
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I1e1ce66cc7cd39cc81d004f90c36871ad31a685f
Gerrit-Change-Number: 12763
Gerrit-PatchSet: 3
Gerrit-Owner: Wael Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Comment-Date: Wed, 11 Aug 2021 03:44:10 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
Gerrit-MessageType: comment