[
https://issues.apache.org/jira/browse/HADOOP-18143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17499056#comment-17499056
]
András Győri commented on HADOOP-18143:
---------------------------------------
[~ayushtkn] Locking does involve some overhead, that is why we wanted some
secondary opinion on this. Synchronization is a coarser locking mechanism, I
think reentrant lock is better in this case. However, I do think that toString
is used outside of debugging, because things started to fall apart when I have
changed something in it (namely to return empty string when requestHeader is
null). All in all, this concurrency issue could occur any time, even in
production, affecting writeTo and toString as well. It seems, that
ProtobufRpcEngine is affected as well.
> 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: [email protected]
For additional commands, e-mail: [email protected]