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/