Val,

Good catch! Can we try leaving SPIs and base methods untouched? Will it API
be consistent in this case?

On Fri, Feb 3, 2017 at 10:22 PM, Valentin Kulichenko <
valentin.kuliche...@gmail.com> wrote:

> Folks,
>
> I tend to think that the problem is that we try to apply 'builder approach'
> to *ALL* setters. Let's approach this smarter.
>
> This approach is actually applicable only for configuration setters
> available on public API, i.e. it's only about setters on ***Configuration
> classes and SPI *implementations*. For SPI interface methods like
> 'CollisionSpi.setExternalCollisionListener' this makes no sense, I would
> not touch them.
>
> The only thing I still don't like is MBeans. Returning something except
> void on MBean interfaces look ugly, but without doing this we will break
> API consistency on the implementation. Any ideas on how to approach this?
>
> -Val
>
> On Fri, Feb 3, 2017 at 10:29 AM, Denis Magda <dma...@apache.org> wrote:
>
> > Sorry, “public modifications” -> “public APIs”
> >
> > —
> > Denis
> >
> > > On Feb 3, 2017, at 10:03 AM, Denis Magda <dma...@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.mashen...@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 <
> voze...@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.kuliche...@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.mashen...@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.kuliche...@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.mashen...@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
> > >
> >
> >
>

Reply via email to