ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Denis Magda <dma...@apache.org>
Subject Re: Ensure that builder approach is used for all setters in public API
Date Fri, 03 Feb 2017 18:29:29 GMT
Sorry, “public modifications” -> “public APIs”

—
Denis

> On Feb 3, 2017, at 10:03 AM, Denis Magda <dmagda@apache.org> wrote:
> 
> Andrey,
> 
> If the changes affect public modifications don’t forget to update this page:
> https://cwiki.apache.org/confluence/display/IGNITE/Apache+Ignite+2.0+Migration+Guide
<https://cwiki.apache.org/confluence/display/IGNITE/Apache+Ignite+2.0+Migration+Guide>
> 
> —
> Denis
> 
>> On Feb 3, 2017, at 12:24 AM, Andrey Mashenkov <andrey.mashenkov@gmail.com>
wrote:
>> 
>> Vladimir,
>> 
>> Ok. I'll go ahead with changing SPI interfaces and run TC test.
>> I think, it would be better to have this branch merged to master as 2
>> separate commits at least.
>> And may be we should make changes of SPI interfaces in separate Jira
>> ticket?
>> 
>> On Fri, Feb 3, 2017 at 11:08 AM, Vladimir Ozerov <vozerov@gridgain.com>
>> wrote:
>> 
>>> Andrey,
>>> 
>>> This is very important change from usability standpoint. But my main
>>> concern is changes to SPI *interfaces*. If we do so users who implemented
>>> custom SPIs will have broken compatibility. On the other hand, I doubt
>>> there will be too much affected users, and we break compilation in AI 2.0
>>> anyway. So looks like we can go ahead with it.
>>> 
>>> Thoughts?
>>> 
>>> On Fri, Feb 3, 2017 at 7:46 AM, Valentin Kulichenko <
>>> valentin.kulichenko@gmail.com> wrote:
>>> 
>>>> My only concern is MBean interfaces. These are not called from code, but
>>>> from MBean viewers, and I'm not sure setters not returning voids will be
>>>> properly treated as setters by these viewers. This needs to be checked.
>>>> 
>>>> -Val
>>>> 
>>>> On Thu, Feb 2, 2017 at 8:32 PM, Andrey Mashenkov <
>>>> andrey.mashenkov@gmail.com
>>>>> wrote:
>>>> 
>>>>> Val,
>>>>> 
>>>>> Yes, you are right. I don't think we should care about compilation
>>>>> error on user side, as we break compatibility with previous versions.
>>>>> But we talk about public interfaces and may be someone has some cons
>>>>> or suggestions?
>>>>> 
>>>>> On Fri, Feb 3, 2017 at 5:31 AM, Valentin Kulichenko <
>>>>> valentin.kulichenko@gmail.com> wrote:
>>>>> 
>>>>>> Andrey,
>>>>>> 
>>>>>> In which case compatibility is broken? If there is a method that
>>>> returns
>>>>>> void and you change it to return some type, it doesn't break
>>> anything,
>>>>>> because currently nobody can assign the result of this method to
a
>>>>>> variable. I.e. in old code the returned value will be always ignored,
>>>>>> therefore it can be of any type.
>>>>>> 
>>>>>> Is there anything else that I'm missing?
>>>>>> 
>>>>>> -Val
>>>>>> 
>>>>>> On Thu, Feb 2, 2017 at 3:49 AM, Andrey Mashenkov <
>>>>>> andrey.mashenkov@gmail.com
>>>>>>> wrote:
>>>>>> 
>>>>>>> Hi Igniters,
>>>>>>> 
>>>>>>> 
>>>>>>> I'm working on IGNITE-4564 [1] to make our configuration classes
>>> and
>>>>> SPI
>>>>>>> classes more convenient.
>>>>>>> 
>>>>>>> There is no problem to change return type in setter method
>>> signatures
>>>>>>> and override methods in child child classes to make them return
>>> more
>>>>>>> accurate type.
>>>>>>> 
>>>>>>> But, I found that we have set methods in some of our interfaces
and
>>>>>>> changing its signature may broke compatibility with user
>>>>> implementations.
>>>>>>> 
>>>>>>> Here are example interfaces with setters:
>>>>>>> org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicyMBean
>>>>>>> org.apache.ignite.cache.eviction.igfs.
>>> IgfsPerBlockLruEvictionPolicyM
>>>>>> XBean
>>>>>>> org.apache.ignite.cache.eviction.lru.LruEvictionPolicyMBean
>>>>>>> org.apache.ignite.cache.eviction.sorted.SortedEvictionPolicyMBean
>>>>>>> org.apache.ignite.spi.checkpoint.CheckpointSpi
>>>>>>> org.apache.ignite.spi.collision.CollisionSpi
>>>>>>> org.apache.ignite.spi.collision.fifoqueue.
>>> FifoQueueCollisionSpiMBean
>>>>>>> 
>>>>>>> However we have interfaces with NO setters
>>>>>>> org.apache.ignite.spi.loadbalancing.adaptive.
>>>>>>> AdaptiveLoadBalancingSpiMBean.
>>>>>>> 
>>>>>>> What can we do with it?
>>>>>>> Change signature of setters without regarding compatibility?
Or may
>>>> be
>>>>> it
>>>>>>> is possible to remove setters from some interfaces?
>>>>>>> 
>>>>>>> Thought?
>>>>>>> 
>>>>>>> 
>>>>>>> [1] https://issues.apache.org/jira/browse/IGNITE-4564
>>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> --
>>>>> С уважением,
>>>>> Машенков Андрей Владимирович
>>>>> Тел. +7-921-932-61-82
>>>>> 
>>>>> Best regards,
>>>>> Andrey V. Mashenkov
>>>>> Cerr: +7-921-932-61-82
>>>>> 
>>>> 
>>> 
>> 
>> 
>> 
>> -- 
>> С уважением,
>> Машенков Андрей Владимирович
>> Тел. +7-921-932-61-82
>> 
>> Best regards,
>> Andrey V. Mashenkov
>> Cerr: +7-921-932-61-82
> 


Mime
View raw message