Thanks.

在 2015年9月15日星期二 UTC+8上午4:17:40,Feng Xiao写道:
>
> On Mon, Sep 14, 2015 at 5:23 AM, sam sun <[email protected] <javascript:>> 
> wrote:
>
>> Since the map type is important to me, i decided to use proto3, so i 
>> moved hashLong method from  
>> com.google.protobuf.Internal.hashLong/hashEnum/xx 
>> to GeneratedMessage in proto3 source code and solved the problem,  however, 
>> to maintain a special version by myself is really a bad idea. 
>> I do think it's  very import to keep full backward compatibility with 
>> code generated by proto2 since so many widely used opensource libs depends 
>> on protobuf as i have mentioned before,   especially protobuf2.5.
>>
> We will take this into consideration and see what we can do. Maintaining 
> full compatibility is hard though (especially when we already have 
> incompatible changes in v3.0.0 alpha/beta releases).
>  
>
>> Thanks
>>
>> 在 2015年9月7日星期一 UTC+8下午3:05:50,sam sun写道:
>>
>>> I knew it, because yarn depends on proto2 but my lib depends on proto3. 
>>> The reason is that proto3 runtime doesn't keep backward compatibility. The 
>>> problem can be reproduced if set option java_generate_equals_and_hash = 
>>> true with proto2.
>>>
>>> I hope msg with proto2 still work with proto3 jar since proto2 has been 
>>> widely used in opensource system like yarn, hbase, etc.
>>>
>>>
>>>
>>> 在 2015年9月7日星期一 UTC+8下午2:31:04,Feng Xiao写道:
>>>>
>>>> On Sat, Sep 5, 2015 at 9:08 PM, sam sun <[email protected]> wrote:
>>>>
>>>>> I use proto3 to log user event and then run a mapreduce to stat same 
>>>>> metrics. But it reports an error:
>>>>>
>>>>> Exception in thread "Thread-2" java.lang.NoSuchMethodError: 
>>>>> org.apache.hadoop.yarn.proto.YarnProtos$LocalResourceProto.hashLong(J)I
>>>>> at 
>>>>> org.apache.hadoop.yarn.proto.YarnProtos$LocalResourceProto.hashCode(YarnProtos.java:11555)
>>>>> at 
>>>>> org.apache.hadoop.yarn.api.records.impl.pb.LocalResourcePBImpl.hashCode(LocalResourcePBImpl.java:62)
>>>>> at java.util.HashMap.hash(HashMap.java:338)
>>>>> at java.util.HashMap.put(HashMap.java:611)
>>>>>
>>>>> The problem is proto3 doesn't keep backward compatibility with proto2. 
>>>>> hashLong is no longer exists in generated code with proto3. Now I faced a 
>>>>> deed situation that neither proto2 nor proto3 can be loaded when i run a 
>>>>>  mapreduce job.
>>>>>
>>>> It seems the problem is that your binary depends on both proto2 Java 
>>>> runtime and also proto3 Java runtime. One of them will be shadowed by the 
>>>> other and you will see such runtime errors. The suggestion is to stick 
>>>> with 
>>>> one version through out your project (including all your project's 
>>>> dependencies).
>>>>  
>>>>
>>>>>
>>>>>
>>>>> -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "Protocol Buffers" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to [email protected].
>>>>> To post to this group, send email to [email protected].
>>>>> Visit this group at http://groups.google.com/group/protobuf.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Protocol Buffers" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at http://groups.google.com/group/protobuf.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to