[ 
https://issues.apache.org/jira/browse/HDDS-5614?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17403427#comment-17403427
 ] 

Ritesh H Shukla edited comment on HDDS-5614 at 8/23/21, 11:27 PM:
------------------------------------------------------------------

Tried out the patch and I see a new client for each request and the close 
occurring as well. During this time I am seeing around 6000 - 16k connections.

diff --git 
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/OzoneClientProducer.java
 
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/OzoneClientProducer.java
index 4264f415a5..fa7c6cc26c 100644
--- 
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/OzoneClientProducer.java
+++ 
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/OzoneClientProducer.java
@@ -26,6 +26,7 @@
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.security.PrivilegedExceptionAction;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.io.Text;
@@ -58,6 +59,8 @@
 private static final Logger LOG =
 LoggerFactory.getLogger(OzoneClientProducer.class);
 
+ private static final AtomicInteger COUNT = new AtomicInteger();
+ private int id = COUNT.incrementAndGet();
 private OzoneClient client;
 
 @Inject
@@ -77,12 +80,17 @@
 
 @Produces
 public OzoneClient createClient() throws OS3Exception, IOException {
+ LOG.info("client {}",id);
+ if (client != null) {
+ throw new AssertionError("client is not null, id=" + id);
+ }
 client = getClient(ozoneConfiguration);
 return client;
 }
 
 @PreDestroy
 public void destroy() throws IOException {
+ LOG.info("close client{}",id);
 client.close();
 }

 

 

{{2021-08-23 16:16:51,870 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30399}}
 {{2021-08-23 16:16:51,870 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30413}}
 {{2021-08-23 16:16:51,871 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30400}}
 {{2021-08-23 16:16:51,871 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30393}}
 {{2021-08-23 16:16:51,871 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30395}}
 {{2021-08-23 16:16:51,871 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30390}}
 {{2021-08-23 16:16:51,872 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30414}}
 {{2021-08-23 16:16:51,876 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30415}}
 {{2021-08-23 16:16:51,877 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30389}}
 {{2021-08-23 16:16:51,877 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30416}}
 {{2021-08-23 16:16:51,877 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30417}}
 {{2021-08-23 16:16:51,877 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30418}}
 {{2021-08-23 16:16:51,878 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30402}}
 {{2021-08-23 16:16:51,878 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30388}}
 {{2021-08-23 16:16:51,878 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30398}}
 {{2021-08-23 16:16:51,879 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30419}}
 {{2021-08-23 16:16:51,879 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30420}}
 {{2021-08-23 16:16:51,880 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30421}}
 {{2021-08-23 16:16:51,881 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30422}}
 {{2021-08-23 16:16:51,896 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30397}}
 {{2021-08-23 16:16:51,897 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30423}}


was (Author: kerneltime):
Tried out the patch and I see a new client for each request and the close 
occurring as well. During this time I am seeing around 6000 - 16k connections.

{{diff --git 
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/OzoneClientProducer.java
 
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/OzoneClientProducer.java}}
 {{index 4264f415a5..fa7c6cc26c 100644}}
 {{--- 
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/OzoneClientProducer.java}}
 {{+++ 
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/OzoneClientProducer.java}}
 {{@@ -26,6 +26,7 @@}}
 \{{ import java.io.IOException;}}
 \{{ import java.nio.charset.StandardCharsets;}}
 \{{ import java.security.PrivilegedExceptionAction;}}
 {{+import java.util.concurrent.atomic.AtomicInteger;}}

{\{ import org.apache.hadoop.hdds.conf.OzoneConfiguration;}}
 \{{ import org.apache.hadoop.io.Text;}}
 {{@@ -58,6 +59,8 @@}}
 \{{ private static final Logger LOG =}}
 \{{ LoggerFactory.getLogger(OzoneClientProducer.class);}}

{{+ private static final AtomicInteger COUNT = new AtomicInteger();}}
 {{+ private int id = COUNT.incrementAndGet();}}
 \{{ private OzoneClient client;}}

{\{ @Inject}}
 {{@@ -77,12 +80,17 @@}}

{\{ @Produces}}
 \{{ public OzoneClient createClient() throws OS3Exception, IOException {}}
 {{+ LOG.info("client {}",id);}}
 {{+ if (client != null) {}}
 {{+ throw new AssertionError("client is not null, id=" + id);}}
 \{{+ }}}
 \{{ client = getClient(ozoneConfiguration);}}
 \{{ return client;}}
 \{{ }}}

{\{ @PreDestroy}}
 \{{ public void destroy() throws IOException {}}
 {{+ LOG.info("close client{}",id);}}
 \{{ client.close();}}
 \{{ }}}

 

 

{{2021-08-23 16:16:51,870 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30399}}
 {{2021-08-23 16:16:51,870 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30413}}
 {{2021-08-23 16:16:51,871 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30400}}
 {{2021-08-23 16:16:51,871 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30393}}
 {{2021-08-23 16:16:51,871 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30395}}
 {{2021-08-23 16:16:51,871 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30390}}
 {{2021-08-23 16:16:51,872 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30414}}
 {{2021-08-23 16:16:51,876 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30415}}
 {{2021-08-23 16:16:51,877 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30389}}
 {{2021-08-23 16:16:51,877 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30416}}
 {{2021-08-23 16:16:51,877 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30417}}
 {{2021-08-23 16:16:51,877 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30418}}
 {{2021-08-23 16:16:51,878 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30402}}
 {{2021-08-23 16:16:51,878 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30388}}
 {{2021-08-23 16:16:51,878 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30398}}
 {{2021-08-23 16:16:51,879 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30419}}
 {{2021-08-23 16:16:51,879 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30420}}
 {{2021-08-23 16:16:51,880 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30421}}
 {{2021-08-23 16:16:51,881 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30422}}
 {{2021-08-23 16:16:51,896 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
close client30397}}
 {{2021-08-23 16:16:51,897 INFO org.apache.hadoop.ozone.s3.OzoneClientProducer: 
client 30423}}

> The OzoneClient in s3 endpoint is not closed correctly
> ------------------------------------------------------
>
>                 Key: HDDS-5614
>                 URL: https://issues.apache.org/jira/browse/HDDS-5614
>             Project: Apache Ozone
>          Issue Type: Bug
>          Components: S3
>            Reporter: Tsz-wo Sze
>            Assignee: Tsz-wo Sze
>            Priority: Major
>
> In [~kerneltime]'s S3 tests, we found that the close() method in 
> EndpointBase.client, which is an OzoneClient, is never called.
> In OzoneClientProducer, client.close() is called in the destroy() method. 
> However, the createClient() method keeps overwriting the "client" field. Only 
> the last client will be closed.
> {code:java}
> //OzoneClientProducer.java
>   @Produces
>   public OzoneClient createClient() throws WebApplicationException,
>       IOException {
>     client = getClient(ozoneConfiguration);
>     return client;
>   }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to