Yakov, thank you. Sounds good. I'll do this way. On Thu, Feb 18, 2016 at 1:43 PM, Yakov Zhdanov <yzhda...@apache.org> wrote:
> Konstantin, > > Here are my comments. > > 1. I would force same swap configuration on all servers. Therefore, I would > add "checkClient" attribute to annotation which is "true" by default > 2. I think all users should properly configure swap along the cluster if > they want to handle possible memory overflow. > > --Yakov > > 2016-02-18 12:35 GMT+03:00 Konstantin Margorin <rus...@gmail.com>: > > > Hi all. > > > > Sorry for asking again, but after some experiments I want to discuss > > several options for grid swap policy. Some of them have odd side effects. > > It's better to explicitly write them down to select the best solution. > > > > 1. Strict policy. > > - @IgniteSpiConsistencyChecked(optional = false) used in FileSwapSpaceSpi > > and NoopSwapSpaceSpi. Nodes with different swap providers could not > coexist > > in the grid. > > - Cache with swap space could be start, only if all nodes in the grid has > > FileSwapSpaceSpi provider enabled. > > In this case if part of nodes in the grid use FileSwapSpaceSpi and other > > part use NoopSwapSpaceSpi, than only random part of them will start. If > the > > first started node has FileSwapSpaceSpi, then all nodes with > > NoopSwapSpaceSpi will fail to start, and vice versa. > > Interesting thing is that client nodes ( with > Ignition.setClientMode(true)) > > should also has the same swap space provider as others nodes in the grid. > > I.e. If nodes in the grid use FileSwapSpaceSpi, client will fail to start > > if it use NoopSwapSpaceSpi. That is strange, because client node does > not > > store any data, so swap policy is irrelevant to them. > > Another interesting thing with client nodes is that client node with > > NoopSwapSpaceSpi will never be able to start cache with swap enabled: > > - if all nodes in the grid use FileSwapSpaceSpi, than client node simply > > will fail to start > > - if all nodes in the grid use NoopSwapSpaceSpi, than cache with swap > will > > not start on such nodes > > 2. Soft policy > > - @IgniteSpiConsistencyChecked(optional = true) used in FileSwapSpaceSpi > > and NoopSwapSpaceSpi. Nodes with different swap providers could coexist, > > warning is printed in case of different providers. > > - Cache with swap space could be start, only if all nodes in the grid has > > FileSwapSpaceSpi provider enabled. > > In this case success of dynamic cache with swap creation depends on order > > in which the nodes start. Suppose we have node with swap (nSwap), node > > without swap (nNoSwap) and a client, who just after start creates dynamic > > cache with swap (cSwap). > > If nSwap and nNoSwap started before cSwap, than cSwap will fail to create > > cache, because not all nodes in the grid support swap space. > > If nSwap started first, than started cSwap. cSwap will create cache > > succesfuly. After that nNoSwap will start. And we have configuration now, > > when nodes with different swap policies are coexist in grid, but cache > with > > swap successfully started. > > 3. Another option, initially suggested by Artem, is always use > > FileSwapSpaceSpi if user doesn't provide SwapSpaceSpi explicitly. > Probably > > will get higher resources usage in this case. > > 4. Leave it as now, but with logging: > > - @IgniteSpiConsistencyChecked(optional = true) > > - log when cache with swap enabled started and there some nodes without > > swap in the grid > > Which option should we choose? > > > > > > On Tue, Feb 16, 2016 at 2:55 PM, Yakov Zhdanov <yzhda...@apache.org> > > wrote: > > > > > I think, yes > > > > > > --Yakov > > > > > > 2016-02-16 14:19 GMT+03:00 Konstantin Margorin <rus...@gmail.com>: > > > > > > > Should we use optional=false in @IgniteSpiConsistencyChecked ? > > > > > > > > On Tue, Feb 16, 2016 at 1:15 PM, Dmitriy Setrakyan < > > > dsetrak...@apache.org> > > > > wrote: > > > > > > > > > Sounds good to me. > > > > > > > > > > On Tue, Feb 16, 2016 at 2:13 AM, Yakov Zhdanov < > yzhda...@apache.org> > > > > > wrote: > > > > > > > > > > > Let's require that all nodes should have same swap space SPI. I > > think > > > > we > > > > > > can put @GridSpiConsistencyChecked on file swap space SPI (any > > other > > > > > > suggestions?). > > > > > > > > > > > > --Yakov > > > > > > > > > > > > 2016-02-15 23:31 GMT+03:00 Konstantin Margorin <rus...@gmail.com > >: > > > > > > > > > > > > > Probably I can handle this ticket, but I want to clarify one > > thing. > > > > > > > > > > > > > > Suppose dynamic cache with enabled swap should be partitioned > > > between > > > > > two > > > > > > > nodes with backups=1. First node started with FileSwapSpaceSpi, > > > > second > > > > > > with > > > > > > > NoopSwapSpaceSpi. > > > > > > > > > > > > > > How cache should start in this case? > > > > > > > > > > > > > > > > > > > > > On Mon, Feb 15, 2016 at 3:45 PM, Artem Shutak < > > > ashu...@gridgain.com> > > > > > > > wrote: > > > > > > > > > > > > > > > I've created a newbie issue for that: > > > > > > > > https://issues.apache.org/jira/browse/IGNITE-2650. > > > > > > > > > > > > > > > > -- Artem -- > > > > > > > > > > > > > > > > On Wed, Feb 10, 2016 at 8:53 PM, Dmitriy Setrakyan < > > > > > > > dsetrak...@apache.org> > > > > > > > > wrote: > > > > > > > > > > > > > > > > > Artem, > > > > > > > > > > > > > > > > > > I like the option with proper exception in case if a > dynamic > > > > cache > > > > > is > > > > > > > > > started with swap enabled while there was no swap > configured > > in > > > > > > Ignite. > > > > > > > > > > > > > > > > > > Starting FileSwapSpaceSpi all the time is not a good option > > as > > > > user > > > > > > > will > > > > > > > > > face the same problem when trying to change to a different > > SPI. > > > > > > > > > > > > > > > > > > D. > > > > > > > > > > > > > > > > > > On Wed, Feb 10, 2016 at 4:39 AM, Artem Shutak < > > > > > ashu...@gridgain.com> > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > Igniters, > > > > > > > > > > > > > > > > > > > > I've noticed an issue with NoopSwapSpaceSpi and > dynamically > > > > > started > > > > > > > > > cashes. > > > > > > > > > > > > > > > > > > > > We have the following logic on node start: > > > > > > > > > > > > > > > > > > > > if (cfg.getSwapSpaceSpi() == null) { > > > > > > > > > > boolean needSwap = false; > > > > > > > > > > > > > > > > > > > > if (cfg.getCacheConfiguration() != null > && > > > > > > > > > > !Boolean.TRUE.equals(cfg.isClientMode())) { > > > > > > > > > > for (CacheConfiguration c : > > > > > > > > > > cfg.getCacheConfiguration()) { > > > > > > > > > > if (c.isSwapEnabled()) { > > > > > > > > > > needSwap = true; > > > > > > > > > > > > > > > > > > > > break; > > > > > > > > > > } > > > > > > > > > > } > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > cfg.setSwapSpaceSpi(needSwap ? new > > > > > > > FileSwapSpaceSpi() : > > > > > > > > > new > > > > > > > > > > NoopSwapSpaceSpi()); > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > According to the code above, if IgniteConfiguration > doesn't > > > > > contain > > > > > > > > cache > > > > > > > > > > configurations or all configured caches configured > without > > > > swap, > > > > > > then > > > > > > > > > node > > > > > > > > > > will be started with NoopSwapSpaceSpi. > > > > > > > > > > As a result in this case, when we start dynamic cache > with > > > > > enabled > > > > > > > swap > > > > > > > > > > then actually swap doesn't work. > > > > > > > > > > > > > > > > > > > > There is simple workaround - user have to explicitly set > > > > > > > > FileSwapSpaceSpi > > > > > > > > > > to configuration. But now, there is no any warning or > > > > exception. > > > > > > > > > > > > > > > > > > > > What we can do: > > > > > > > > > > > > > > > > > > > > 1. Throw an exception on dynamic cache start (with > swap > > > > > enabled) > > > > > > > > > > if NoopSwapSpaceSpi is configured. > > > > > > > > > > 2. Actually, I don't see why we need NoopSwapSpaceSpi > at > > > > all. > > > > > I > > > > > > > > think > > > > > > > > > we > > > > > > > > > > should configure FileSwapSpaceSpi always if user > doesn't > > > > > provide > > > > > > > any > > > > > > > > > > SwapSpaceSpi explicitly. > > > > > > > > > > > > > > > > > > > > Thoughts? > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > -- Artem -- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >