Val, Alex, could anyone of you document this on readme.io <http://readme.io/>?
— Denis > On Jan 19, 2017, at 9:49 AM, Valentin Kulichenko > <[email protected]> wrote: > > Alex, > > Thanks for response! > > -Val > > On Wed, Jan 18, 2017 at 10:17 PM, Alexey Goncharuk < > [email protected]> wrote: > >> 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 <[email protected]>: >> >>> 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 < >>> [email protected]> 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 >>> >>> >>
