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

Ayush Saxena commented on HADOOP-18143:
---------------------------------------

[~quapaw] Trying to understand the issue.

Seems the concurrency issue tends to occur when {{requestHeader}} is in 
progress of being written, means half written and during that phase someone 
calls {{getRequestHeader}} or say {{toString}} which indirectly calls 
{{{}getRequestHeader{}}}. Can happen while debugging since the debugger calls 
{{{}toString{}}}, or if someone is logging when the write is in progress. 
May be making both {{getRequestHeader}} and {{writeTo}} synchronized or having 
a lock as in the PR should solve this problem.

Seems this problem should surface even for ProtobufRpcEngine as well. I don't 
see any reason which will prevent it there. If my understanding is correct.

I think this would surface during debugging only, if we remove the log 
statement, right? I am not sure of the performance penalty what making a method 
synchronized or taking lock can bring. But just a simple search on the internet 
shows it would bring in some, if that is true, I don't think  we can take that 
cost, considering this is some commonly used code.

> toString method of RpcCall throws IllegalArgumentException
> ----------------------------------------------------------
>
>                 Key: HADOOP-18143
>                 URL: https://issues.apache.org/jira/browse/HADOOP-18143
>             Project: Hadoop Common
>          Issue Type: Bug
>            Reporter: András Győri
>            Assignee: András Győri
>            Priority: Critical
>              Labels: pull-request-available
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> We have observed breaking tests such as TestApplicationACLs. We have located 
> the root cause, which is HADOOP-18082. It seems that there is a concurrency 
> issue within ProtobufRpcEngine2. When using a debugger, the missing fields 
> are there, hence the suspicion of concurrency problem. The stack trace:
> {noformat}
> java.lang.IllegalArgumentException
>     at java.nio.Buffer.position(Buffer.java:244)
>     at 
> org.apache.hadoop.ipc.RpcWritable$ProtobufWrapper.readFrom(RpcWritable.java:131)
>     at org.apache.hadoop.ipc.RpcWritable$Buffer.getValue(RpcWritable.java:232)
>     at 
> org.apache.hadoop.ipc.ProtobufRpcEngine2$RpcProtobufRequest.getRequestHeader(ProtobufRpcEngine2.java:645)
>     at 
> org.apache.hadoop.ipc.ProtobufRpcEngine2$RpcProtobufRequest.toString(ProtobufRpcEngine2.java:663)
>     at java.lang.String.valueOf(String.java:3425)
>     at java.lang.StringBuilder.append(StringBuilder.java:516)
>     at org.apache.hadoop.ipc.Server$RpcCall.toString(Server.java:1328)
>     at java.lang.String.valueOf(String.java:3425)
>     at java.lang.StringBuilder.append(StringBuilder.java:516)
>     at org.apache.hadoop.ipc.Server$Handler.run(Server.java:3097){noformat}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org

Reply via email to