[
https://issues.apache.org/jira/browse/HDDS-1591?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Arpit Agarwal updated HDDS-1591:
--------------------------------
Target Version/s: 0.7.0
> Protocol buffer classes are incompatible between builds
> -------------------------------------------------------
>
> Key: HDDS-1591
> URL: https://issues.apache.org/jira/browse/HDDS-1591
> Project: Hadoop Distributed Data Store
> Issue Type: Bug
> Reporter: Eric Yang
> Priority: Major
>
> The generated classes are incompatible between builds. If developer run mvn
> clean package to build the entire Ozone project and did not preserve the
> generated jar files in maven cache. When he rebuild certain subproject, he
> might end up using snapshot jar files from nightly build. However, the
> protobuff message generated locally is not compatible with newly downloaded
> protobuff classes from nightly build. This result in strange RPC behavior
> such as:
> {code:java}
> 2019-05-22 17:57:14,650 INFO retry.RetryInvocationHandler
> (RetryInvocationHandler.java:log(411)) -
> com.google.protobuf.ServiceException:
> org.apache.hadoop.ipc.RemoteException(com.google.protobuf.InvalidProtocolBufferException):
> Message missing required fields:
> createVolumeRequest.volumeInfo.volumeAcls[0].rights,
> createVolumeRequest.volumeInfo.volumeAcls[1].rights,
> createVolumeRequest.volumeInfo.volumeAcls[2].rights,
> createVolumeRequest.volumeInfo.volumeAcls[3].rights
> at
> com.google.protobuf.UninitializedMessageException.asInvalidProtocolBufferException(UninitializedMessageException.java:81)
> at
> com.google.protobuf.AbstractParser.checkMessageInitialized(AbstractParser.java:71)
> at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:89)
> at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:95)
> at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:49)
> at
> org.apache.hadoop.ipc.RpcWritable$ProtobufWrapper.readFrom(RpcWritable.java:125)
> at org.apache.hadoop.ipc.RpcWritable$Buffer.getValue(RpcWritable.java:187)
> at
> org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:514)
> at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1025)
> at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:876)
> at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:822)
> at java.security.AccessController.doPrivileged(Native Method)
> at javax.security.auth.Subject.doAs(Subject.java:422)
> at
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1730)
> at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2682)
> , while invoking $Proxy19.submitRequest over null(localhost:9862). Trying to
> failover immediately.{code}
> This is a codegen issue that version control of the generated code is not
> done correctly, and result in incompatible RPC calls. There are two
> solutions, using proto3 to remove mandatory fields, or get better at version
> control the codegen process.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]