[infinispan-dev] [jgroups-dev] Incompatible change in 3.1.0

Bela Ban bban at redhat.com
Tue Nov 29 04:50:00 EST 2011



On 11/29/11 10:20 AM, Galder Zamarreño wrote:
> Hmmm, why do you need to break API here?
>
> Couldn't you maintain the current API and add?:
> void Message.setMsgFlag(short flag)
> void Message.clearMsgFlag(short flag)
> boolean Message.isMsgFlagSet(short flag)


The problem here is that if you call Message.setFlag(byte flag) with 
Message.OOB, you'll have to change your code anyway, namely narrow the 
short to a byte.


> Any new flags you add could be added to Message or a different interface and define them as short?
>
> I think you can avoid breaking old clients here. Also, I don't think it's good to break such API in 3.1, should have been done in 3.0 :)


No shit ? That's why I sent this email !$%#$ :-)



> On Nov 28, 2011, at 5:38 PM, Bela Ban wrote:
>
>> FYI
>>
>> -------- Original Message --------
>> Subject: [jgroups-dev] Incompatible change in 3.1.0
>> Date: Mon, 28 Nov 2011 17:36:49 +0100
>> From: Bela Ban<belaban at yahoo.com>
>> To: jg-users<javagroups-users at lists.sourceforge.net>,	jg-dev
>> <javagroups-development at lists.sourceforge.net>
>>
>> I'm working on an issue that requires a change in Message and
>> RequestOptions: I want to change the 'flags' field from a byte to a
>> short. I'd changethe follwoing methods and fields:
>>
>> - Message.OOB, DONT_BUNDLE, NO_FC, SCOPED, NO_RELIABILITY,
>> NO_TOTAL_ORDER, NO_RELAY would become a short from a byte
>>
>> - void Message.setFlag(byte flag) -->  void Message.setFlag(short flag);
>> - void Message.clearFlag(byte flag) -->  void Message.clearFlag(short flag)
>> - boolean Message.isFlagSet(byte flag) -->  boolean
>> Message.isFlagSet(short flag)
>>
>> A typical use case such as:
>>
>> Message msg=new Message(...);
>> msg.setFlag(Message.OOB);
>>
>> would *not* require any change at all.
>>
>> However, if you have:
>>
>> byte flags=Message.OOB;
>> msg.setFlag(flags);
>>
>> This wouldn't work as 'flags' would have to be a short (or downcast to a
>> byte).
>>
>> Also, in RequestOptions, the 'flags' field would have to be changed to a
>> short (from a byte). RequestOptions.setFlags()/getFlags()/clearFlags()
>> would be affected. Again, typical code like this:
>> RequestOptions opts=new RequestOptions(ResponseMode.GET_ALL, 5000,
>> false).setFlags(Message.OOB)
>>
>> would not have to be changed at all.
>>
>>
>> What do people think ? I know this is an API change, although a minor
>> one, and I wanted to see if anyone's code would break.
>>
>> I checked Infinispan (master) and this doesn't cause any code breakage.
>>
>>
>> [1] https://issues.jboss.org/browse/JGRP-1250
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>
> --
> Galder Zamarreño
> Sr. Software Engineer
> Infinispan, JBoss Cache
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev

-- 
Bela Ban
Lead JGroups (http://www.jgroups.org)
JBoss / Red Hat


More information about the infinispan-dev mailing list