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

Chris Nauroth commented on HDFS-4909:
-------------------------------------

The full import of hdfs.proto causing duplicate definitions is the same reason 
that we've needed to use 4 separate protoc executions in the pom.xml.  We 
likely need some refactoring across all of the HDFS proto files to prevent the 
need for multiple protoc build steps and also prevent duplicate symbols at link 
time.  I don't yet know the full scope of this refactoring though.
                
> Protocol buffer support compiles under C, but fails to link due to duplicate 
> symbols
> ------------------------------------------------------------------------------------
>
>                 Key: HDFS-4909
>                 URL: https://issues.apache.org/jira/browse/HDFS-4909
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: datanode, journal-node, namenode
>    Affects Versions: 3.0.0, 2.1.0-beta
>            Reporter: Ralph Castain
>            Priority: Blocker
>             Fix For: 3.0.0, 2.1.0-beta
>
>         Attachments: pcreate.pl
>
>
> The revised protocol buffer support seems to be compiling for me when using 
> the protobuf-c cross-compiler. However, I still cannot construct a library of 
> the results. This may be a Hadoop issue, or could be an issue with the 
> protobuf-c cross-compiler. What I see are a bunch of these when attempting to 
> link the resulting .o files:
> /home/common/hadoop/hadoop-common/foo/obj/DatanodeProtocol.pb-c.o: In 
> function `hadoop_hdfsreport_bad_blocks_request_proto_init':
> DatanodeProtocol.pb-c.c.text+0x2bb4): multiple definition of 
> `hadoop_hdfsreport_bad_blocks_request_proto_init'
> /home/common/hadoop/hadoop-common/foo/obj/ClientNamenodeProtocol.pb-c.o:ClientNamenodeProtocol.pb-c.c.text+0x277d):
>  first defined here
> From what I can see, this is caused by the
> package hadoop.hdfs;
> line in the .proto files, when combined with the later
> import "hdfs.proto";
> This appears to bring a complete copy of the hdfs.proto file into the source 
> code, which then recompiles it - leading to the duplicate symbols.
> I have attached an updated pcreate.pl script that illustrates the problem. 
> Excluding the following .proto files allows all to be successfully built and 
> linked:
> DatanodeProtocol
> ClientNamenodeProtocol
> QJournalProtocol
> HTH
> Ralph

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to