You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ozone.apache.org by "Ritesh H Shukla (Jira)" <ji...@apache.org> on 2021/08/23 23:18:00 UTC

[jira] [Comment Edited] (HDDS-5614) The OzoneClient in s3 endpoint is not closed correctly

    [ 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:17 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 

{{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: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org