[
https://issues.apache.org/jira/browse/HDFS-16700?focusedWorklogId=796561&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-796561
]
ASF GitHub Bot logged work on HDFS-16700:
-----------------------------------------
Author: ASF GitHub Bot
Created on: 30/Jul/22 02:45
Start Date: 30/Jul/22 02:45
Worklog Time Spent: 10m
Work Description: ZanderXu commented on code in PR #4659:
URL: https://github.com/apache/hadoop/pull/4659#discussion_r933720916
##########
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Server.java:
##########
@@ -1351,6 +1357,33 @@ private class ResponseParams {
@Override
public String toString() {
+ boolean isCallerContextEnabled = conf.getBoolean(
+ HADOOP_CALLER_CONTEXT_ENABLED_KEY,
+ HADOOP_CALLER_CONTEXT_ENABLED_DEFAULT);
+ CallerContext context = getCallerContext();
+ if (isCallerContextEnabled && context != null &&
context.isContextValid()) {
+ String cc = context.getContext();
+ String clientIp = "";
+ String ipKey = CallerContext.CLIENT_IP_STR +
Review Comment:
HDFS-13248 use `isProxyUsers` to control whether obtain client's ip and port
from `CallerContext`. But in this PR, you plan ignore `isProxyUsers`?
And where is the toString method used in NameNode?
##########
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Server.java:
##########
@@ -1351,6 +1357,33 @@ private class ResponseParams {
@Override
public String toString() {
+ boolean isCallerContextEnabled = conf.getBoolean(
+ HADOOP_CALLER_CONTEXT_ENABLED_KEY,
+ HADOOP_CALLER_CONTEXT_ENABLED_DEFAULT);
+ CallerContext context = getCallerContext();
+ if (isCallerContextEnabled && context != null &&
context.isContextValid()) {
+ String cc = context.getContext();
+ String clientIp = "";
+ String ipKey = CallerContext.CLIENT_IP_STR +
+ CallerContext.Builder.KEY_VALUE_SEPARATOR;
+ int posn = cc.indexOf(ipKey);
+ if (posn != -1) {
+ posn += ipKey.length();
+ int end = cc.indexOf(",", posn);
+ clientIp = (end == -1 ? cc.substring(posn) : cc.substring(posn,
end));
Review Comment:
This logic is same as `NameNode#getClientMachine()`, can you move it to the
common module and can used by here and `NameNode`.
Issue Time Tracking
-------------------
Worklog Id: (was: 796561)
Time Spent: 50m (was: 40m)
> RBF: Record the real client IP carried by the Router in the NameNode log
> ------------------------------------------------------------------------
>
> Key: HDFS-16700
> URL: https://issues.apache.org/jira/browse/HDFS-16700
> Project: Hadoop HDFS
> Issue Type: Improvement
> Components: namenode, rbf
> Affects Versions: 3.3.3
> Reporter: JiangHua Zhu
> Assignee: JiangHua Zhu
> Priority: Major
> Labels: pull-request-available
> Time Spent: 50m
> Remaining Estimate: 0h
>
> Here are some logs recorded by the NameNode when using RBF:
> {code:java}
> 2022-07-28 19:31:07,126 INFO ipc.Server: IPC Server handler 8 on default port
> 8020, call Call#127 Retry#0
> org.apache.hadoop.hdfs.protocol.ClientProtocol.getFileInfo from
> 172.10.100.67:58001
> {code}
> The ip information here is still the router. If the real client ip is
> recorded, it will more clearly express where the request comes from.
> E.g:
> {code:java}
> 2022-07-29 19:31:07,126 INFO ipc.Server: IPC Server handler 8 on default port
> 8020, call Call#127 Retry#0
> org.apache.hadoop.hdfs.protocol.ClientProtocol.getFileInfo from
> 172.10.100.67:58001, client=172.111.65.123:43232
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]