You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by Artem Shutak <as...@gridgain.com> on 2016/02/10 13:39:41 UTC

NoopSwapSpaceSpi and dynamically started caches

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 --

Re: NoopSwapSpaceSpi and dynamically started caches

Posted by Konstantin Margorin <ru...@gmail.com>.
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 <ru...@gmail.com>
wrote:

> Yakov, thank you. Sounds good. I'll do this way.
>
> On Thu, Feb 18, 2016 at 1:43 PM, Yakov Zhdanov <yz...@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 <ru...@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 <yz...@apache.org>
>> > wrote:
>> >
>> > > I think, yes
>> > >
>> > > --Yakov
>> > >
>> > > 2016-02-16 14:19 GMT+03:00 Konstantin Margorin <ru...@gmail.com>:
>> > >
>> > > > Should we use optional=false in @IgniteSpiConsistencyChecked ?
>> > > >
>> > > > On Tue, Feb 16, 2016 at 1:15 PM, Dmitriy Setrakyan <
>> > > dsetrakyan@apache.org>
>> > > > wrote:
>> > > >
>> > > > > Sounds good to me.
>> > > > >
>> > > > > On Tue, Feb 16, 2016 at 2:13 AM, Yakov Zhdanov <
>> yzhdanov@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 <
>> ruskim@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 <
>> > > ashutak@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 <
>> > > > > > > dsetrakyan@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 <
>> > > > > ashutak@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 --
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>
>

Re: NoopSwapSpaceSpi and dynamically started caches

Posted by Konstantin Margorin <ru...@gmail.com>.
Yakov, thank you. Sounds good. I'll do this way.

On Thu, Feb 18, 2016 at 1:43 PM, Yakov Zhdanov <yz...@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 <ru...@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 <yz...@apache.org>
> > wrote:
> >
> > > I think, yes
> > >
> > > --Yakov
> > >
> > > 2016-02-16 14:19 GMT+03:00 Konstantin Margorin <ru...@gmail.com>:
> > >
> > > > Should we use optional=false in @IgniteSpiConsistencyChecked ?
> > > >
> > > > On Tue, Feb 16, 2016 at 1:15 PM, Dmitriy Setrakyan <
> > > dsetrakyan@apache.org>
> > > > wrote:
> > > >
> > > > > Sounds good to me.
> > > > >
> > > > > On Tue, Feb 16, 2016 at 2:13 AM, Yakov Zhdanov <
> yzhdanov@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 <ruskim@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 <
> > > ashutak@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 <
> > > > > > > dsetrakyan@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 <
> > > > > ashutak@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 --
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: NoopSwapSpaceSpi and dynamically started caches

Posted by Yakov Zhdanov <yz...@apache.org>.
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 <ru...@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 <yz...@apache.org>
> wrote:
>
> > I think, yes
> >
> > --Yakov
> >
> > 2016-02-16 14:19 GMT+03:00 Konstantin Margorin <ru...@gmail.com>:
> >
> > > Should we use optional=false in @IgniteSpiConsistencyChecked ?
> > >
> > > On Tue, Feb 16, 2016 at 1:15 PM, Dmitriy Setrakyan <
> > dsetrakyan@apache.org>
> > > wrote:
> > >
> > > > Sounds good to me.
> > > >
> > > > On Tue, Feb 16, 2016 at 2:13 AM, Yakov Zhdanov <yz...@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 <ru...@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 <
> > ashutak@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 <
> > > > > > dsetrakyan@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 <
> > > > ashutak@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 --
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: NoopSwapSpaceSpi and dynamically started caches

Posted by Konstantin Margorin <ru...@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 <yz...@apache.org> wrote:

> I think, yes
>
> --Yakov
>
> 2016-02-16 14:19 GMT+03:00 Konstantin Margorin <ru...@gmail.com>:
>
> > Should we use optional=false in @IgniteSpiConsistencyChecked ?
> >
> > On Tue, Feb 16, 2016 at 1:15 PM, Dmitriy Setrakyan <
> dsetrakyan@apache.org>
> > wrote:
> >
> > > Sounds good to me.
> > >
> > > On Tue, Feb 16, 2016 at 2:13 AM, Yakov Zhdanov <yz...@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 <ru...@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 <
> ashutak@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 <
> > > > > dsetrakyan@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 <
> > > ashutak@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 --
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: NoopSwapSpaceSpi and dynamically started caches

Posted by Yakov Zhdanov <yz...@apache.org>.
I think, yes

--Yakov

2016-02-16 14:19 GMT+03:00 Konstantin Margorin <ru...@gmail.com>:

> Should we use optional=false in @IgniteSpiConsistencyChecked ?
>
> On Tue, Feb 16, 2016 at 1:15 PM, Dmitriy Setrakyan <ds...@apache.org>
> wrote:
>
> > Sounds good to me.
> >
> > On Tue, Feb 16, 2016 at 2:13 AM, Yakov Zhdanov <yz...@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 <ru...@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 <as...@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 <
> > > > dsetrakyan@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 <
> > ashutak@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 --
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: NoopSwapSpaceSpi and dynamically started caches

Posted by Konstantin Margorin <ru...@gmail.com>.
Should we use optional=false in @IgniteSpiConsistencyChecked ?

On Tue, Feb 16, 2016 at 1:15 PM, Dmitriy Setrakyan <ds...@apache.org>
wrote:

> Sounds good to me.
>
> On Tue, Feb 16, 2016 at 2:13 AM, Yakov Zhdanov <yz...@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 <ru...@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 <as...@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 <
> > > dsetrakyan@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 <
> ashutak@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 --
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: NoopSwapSpaceSpi and dynamically started caches

Posted by Dmitriy Setrakyan <ds...@apache.org>.
Sounds good to me.

On Tue, Feb 16, 2016 at 2:13 AM, Yakov Zhdanov <yz...@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 <ru...@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 <as...@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 <
> > dsetrakyan@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 <as...@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 --
> > > > >
> > > >
> > >
> >
>

Re: NoopSwapSpaceSpi and dynamically started caches

Posted by Yakov Zhdanov <yz...@apache.org>.
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 <ru...@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 <as...@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 <
> dsetrakyan@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 <as...@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 --
> > > >
> > >
> >
>

Re: NoopSwapSpaceSpi and dynamically started caches

Posted by Konstantin Margorin <ru...@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 <as...@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 <ds...@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 <as...@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 --
> > >
> >
>

Re: NoopSwapSpaceSpi and dynamically started caches

Posted by Artem Shutak <as...@gridgain.com>.
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 <ds...@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 <as...@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 --
> >
>

Re: NoopSwapSpaceSpi and dynamically started caches

Posted by Dmitriy Setrakyan <ds...@apache.org>.
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 <as...@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 --
>