Hello. Patch for https://issues.apache.org/jira/browse/IGNITE-2650 is available.
Please review. On Thu, Feb 18, 2016 at 2:10 PM, Konstantin Margorin <rus...@gmail.com> wrote: > 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 -- >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> > >