hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chris Nauroth (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HDFS-4909) Protocol buffer support compiles under C, but fails to link due to duplicate symbols
Date Wed, 16 Apr 2014 17:52:20 GMT

     [ https://issues.apache.org/jira/browse/HDFS-4909?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Chris Nauroth updated HDFS-4909:

    Attachment: HDFS-4909.002.patch

Hi, Colin.  Thanks for doing this.  I remember when I looked at it a few months ago, I also
thought we'd be able to simplify our build a little bit.  There are multiple protoc invocations
right now, and that's just a workaround due to duplicate symbol inclusion when everything
was in one protobuf namespace.  I just tried using a single protoc invocation with your patch,
and sure enough, it worked.  I'm attaching patch v2, which is your patch plus the pom.xml

I'm +1 for v2 of the patch pending Jenkins.

> 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
>            Assignee: Colin Patrick McCabe
>            Priority: Blocker
>         Attachments: HDFS-4909.001.patch, HDFS-4909.002.patch, 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
> Ralph

This message was sent by Atlassian JIRA

View raw message