Alex, This is seems to be one more poor documented feature :)
To be serious my preference is to throw an exception in response to an attempt to create a LOCAL cache on a client node because client nodes can't store cache data by notion.
Any other thoughts? -- Denis On 11/30/2015 12:41 PM, Alexey Kuznetsov wrote:
Ignites, If I start client node and create local cache on it seems that local cache created on client node. Is this correct behaviour or not not? From API consistency - seems not, because PARTITIONED and REPLICATED caches throw exception. But from user point it may be very useful in some cases, because LOCAL cache is a kind of HashMap on "steroids" (it has transactions, evictions, and more). So we should throw exception or describe in documentation. Thoughs? Code that show local cache on client node: public class LocalCacheOnClient { public static void main(String[] args) throws IgniteException { IgniteConfiguration cfgSrv = new IgniteConfiguration(); cfgSrv.setGridName("srv"); Ignite n1 = Ignition.start(cfgSrv); IgniteConfiguration cfgClm = new IgniteConfiguration(); cfgClm.setGridName("cln"); cfgClm.setClientMode(true); Ignite n2 = Ignition.start(cfgClm); CacheConfiguration<Integer, Integer> ccfg = new CacheConfiguration<>("local"); ccfg.setCacheMode(CacheMode.LOCAL); IgniteCache<Integer, Integer> c = n2.getOrCreateCache(ccfg); c.put(1, 100); n1.close(); // stop server node c.put(2, 200); // local cache works fine. System.out.println(c.get(1)); System.out.println(c.get(2)); } }
-- Regards, Denis Magda Lead Professional Services Engineer, GridGain Systems http://www.gridgain.com/