ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexey Goncharuk <alexey.goncha...@gmail.com>
Subject Re: Partition data lost event
Date Thu, 19 Jan 2017 06:17:08 GMT
Val et al,

Currently partition lost event is fired on nodes which should become
partition owners, but did not find other partition owners to rebalance data
from. In your example one of the node should have became an owner for
partitions 1, 3, the other - for partitions 2, 4 (according to the affinity
function assignment), thus this set of events is fired.

In Ignite 2.0 lost partitions will be handled on coordinator and events
will be fired for all partitions on all cache nodes.

--AG

2017-01-18 23:39 GMT+03:00 Denis Magda <dmagda@apache.org>:

> Alex G. and Yakov should be able to clarify this since they took part in
> the creation of the following tickets related to partitions lost consistency
> https://issues.apache.org/jira/browse/IGNITE-1605 <
> https://issues.apache.org/jira/browse/IGNITE-1605>
> https://issues.apache.org/jira/browse/IGNITE-2378 <
> https://issues.apache.org/jira/browse/IGNITE-2378>
>
> —
> Denis
>
> > On Jan 18, 2017, at 12:16 PM, Valentin Kulichenko <
> valentin.kulichenko@gmail.com> wrote:
> >
> > Folks,
> >
> > Does anyone know how the EVT_CACHE_REBALANCE_PART_DATA_LOST event is
> fired?
> > I just create a small test and the result confused me. This is what I do:
> >
> > 1. Start several server nodes, all listen to
> > EVT_CACHE_REBALANCE_PART_DATA_LOST event.
> > 2. Create a cache with no backups.
> > 3. Put some values.
> > 4. Stop one of the nodes (lose some partitions).
> >
> > What I noticed is that the event is fired on all nodes that are still in
> > topology, but for different partitions. For example, if there are 4
> > partitions lost (1,2,3,4), I can get notifications for 1,3 on first node
> > and 2,4 on second node. This seems weird and it's not clear to me how to
> > use this event.
> >
> > Can anyone explain this behavior? Is this expected?
> >
> > Here is the test code:
> >
> > public class PartitionTest {
> >    public static void main(String[] args) throws InterruptedException {
> >        for (int i = 0; i < 4; i++)
> >            Ignition.start(config("server-" + i));
> >
> >        Ignition.setClientMode(true);
> >
> >        Ignite ignite = Ignition.start();
> >
> >        CacheConfiguration<Integer, Integer> cfg = new
> > CacheConfiguration<>("test");
> >
> >        cfg.setAffinity(new RendezvousAffinityFunction(20, null));
> >
> >        IgniteCache<Integer, Integer> cache = ignite.createCache(cfg);
> >
> >        for (int i = 0; i < 100; i++)
> >            cache.put(i, i);
> >
> >        System.out.println("Populated.");
> >
> >        Thread.sleep(2000);
> >
> >        Ignition.stop("server-3", true);
> >    }
> >
> >    private static IgniteConfiguration config(String name) {
> >        IgniteConfiguration cfg = new IgniteConfiguration();
> >
> >        cfg.setGridName(name);
> >
> > cfg.setIncludeEventTypes(EventType.EVT_CACHE_REBALANCE_PART_DATA_LOST);
> >        cfg.setLocalEventListeners(Collections.<IgnitePredicate<? extends
> > Event>, int[]>singletonMap(
> >            new IgnitePredicate<Event>() {
> >                @Override public boolean apply(Event event) {
> >                    U.debug("EVENT: " + event);
> >
> >                    return true;
> >                }
> >            },
> >            new int[] {EventType.EVT_CACHE_REBALANCE_PART_DATA_LOST}
> >        ));
> >
> >        return cfg;
> >    }
> > }
> >
> > -Val
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message