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

Duong edited comment on HDDS-6559 at 6/16/22 7:40 PM:
------------------------------------------------------

That makes sense, [~kerneltime]. It's a good practice to not log customer 
data/events to application log for security and privacy purposes.

I got thought the S3G code and identified some points.

1. Customer events are sometimes logged in application log, e.g. 
[here|#L250-L250].] We need to review and clean up those.

2. OMException (which indicates user errors?) is sometimes logged in 
application log as well they're sent to audit log already. Those logs can just 
be removed as they're also in audit logs already.

3. OMExceptions are always pushed to framework level (Jersey/Netty). However, 
there's no appropriate exception handler plugged to the framework and those 
OMExceptions are consider as unknown exception by default. This result in wrong 
API responses (always 500 Internal Server Error while  I believe most 
OMExceptions should be 4xx) and logs like.

```

{{2022-06-16 18:14:29,340 [qtp1912821769-23] WARN server.HttpChannel: 
handleException /bucket_2 INVALID_BUCKET_NAME 
org.apache.hadoop.ozone.om.exceptions.OMException: Bucket or Volume name has an 
unsupported character : }}_{{{}2022-06-16 18:14:29,341 [qtp1912821769-23] WARN 
server.HttpChannelState: unhandled due to prior 
sendError{}}}{{{}javax.servlet.ServletException: 
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: 
INVALID_BUCKET_NAME org.apache.hadoop.ozone.om.exceptions.OMException: Bucket 
or Volume name has an unsupported character :{}}}_ {{{}at 
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:162){}}}{{{}at
 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127){}}}{{{}at
 org.eclipse.jetty.server.Server.handle(Server.java:516){}}}{{{}at 
org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388){}}}{{{}at
 org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633){}}}{{{}at 
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380){}}}{{{}at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277){}}}{{{}at
 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311){}}}{{{}at
 org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105){}}}{{{}at 
org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104){}}}

```

We should implement proper exception handler to 1) map Exceptions to correct 
API responses and 2) log correctly. 

 

I believe fixing those points would results a clean status for the Application 
logs (and also the API).

 


was (Author: JIRAUSER290990):
That makes sense, [~kerneltime]. It's a good practice to not log customer 
data/events to application log for security and privacy purposes.

I got thought the S3G code and identified some points.
 # Customer events are sometimes logged in application log, e.g. 
[here|[https://github.com/duongnguyen0/ozone/blob/7c64595ee01f05a77675a3c5abf156d63378d727/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/BucketEndpoint.java#L250-L250].]
 We need to review and clean up those.
 # OMException (which indicates user errors?) is sometimes logged in 
application log as well they're sent to audit log already. Those logs can just 
be removed as they're also in audit logs already.

 #  
OMExceptions are always pushed to framework level (Jersey/Netty). However, 
there's no appropriate exception handler plugged to the framework and those 
OMExceptions are consider as unknown exception by default. This result in wrong 
API responses (always 500 Internal Server Error while  I believe most 
OMExceptions should be 4xx) and logs like.

{{{}2022-06-16 18:14:29,340 [qtp1912821769-23] WARN server.HttpChannel: 
handleException /bucket_2 INVALID_BUCKET_NAME 
org.apache.hadoop.ozone.om.exceptions.OMException: Bucket or Volume name has an 
unsupported character : _{}}}{{{}2022-06-16 18:14:29,341 [qtp1912821769-23] 
WARN server.HttpChannelState: unhandled due to prior 
sendError{}}}{{{}javax.servlet.ServletException: 
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: 
INVALID_BUCKET_NAME org.apache.hadoop.ozone.om.exceptions.OMException: Bucket 
or Volume name has an unsupported character : _{}}}{{{}at 
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:162){}}}{{{}at
 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127){}}}{{{}at
 org.eclipse.jetty.server.Server.handle(Server.java:516){}}}{{{}at 
org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388){}}}{{{}at
 org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633){}}}{{{}at 
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380){}}}{{{}at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277){}}}{{{}at
 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311){}}}{{{}at
 org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105){}}}{{{}at 
org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104){}}}

We should implement proper exception handler to 1) map Exceptions to correct 
API responses and 2) log correctly. 

 

I believe fixing those points would results a clean status for the Application 
logs (and also the API).

 

> S3G client logging review
> -------------------------
>
>                 Key: HDDS-6559
>                 URL: https://issues.apache.org/jira/browse/HDDS-6559
>             Project: Apache Ozone
>          Issue Type: Improvement
>          Components: S3
>            Reporter: Ritesh H Shukla
>            Assignee: Duong
>            Priority: Major
>
> Currently a broad range of errors get logged to S3G's log which include 
> errors that can be induced by a client. Ideally these should not be logged 
> (Example invalid header), there can be an access log which only captures HTTP 
> requests and responses but the S3G log should be for the internal state of 
> S3G.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

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

Reply via email to