Thursday, 15 May 2014

GridGain remote cache size always zero -



GridGain remote cache size always zero -

i have configuration cache kept in 1 node , accessed another. although able get() , put() fine, operations size(), keyset() etc don't homecoming me right results.

test1 client node cache config

<bean id="test-cache" class="org.gridgain.grid.cache.gridcacheconfiguration"> <property name="name" value="testcache"/> <property name="cachemode" value="partitioned"/> <property name="distributionmode" value="client_only" /> <property name="swapenabled" value="true"/> </bean>

test1 client node class

public class gridgaintest1 { public static void main(string[] args) throws exception { //client mode grid g = gridgain.start("etc/config/grid-test1.xml"); //put in remote cache g.cache("testcache").put(1, "abc"); g.cache("testcache").put(2, "xyz"); system.out.println("size of cache :- " + g.cache("testcache").size()); system.out.println("value 1 :- " + g.cache("testcache").get(1)); system.out.println("value 2 :- " + g.cache("testcache").get(2)); }

test2 info node cache config

<bean id="test-cache" class="org.gridgain.grid.cache.gridcacheconfiguration"> <property name="name" value="testcache"/> <property name="cachemode" value="partitioned"/> <property name="swapenabled" value="true"/> </bean>

test2 info node class

public class gridgaintest2 { public static void main(string[] args) throws exception { grid g = gridgain.start("etc/config/grid-test2.xml"); } }

the output node 1 follows size comes in 0 though there entries in map. not sure if due misconfiguration.

size of cache :- 0 value 1 :- abc value 2 :- xyz

in gridgain cache api methods size(), primarysize(), nearsize(), keyset(), primarykeyset(), values(), primaryvalues(), entryset(), primaryentryset() local, homecoming sizes or collections keys stored on local node.

in case started cache on test1 in client_only mode, node not store keys. reason why see 0 cache size.

if need global cache size, can utilize next code:

gridcallable<integer> sizecallable = new gridcallable<integer>() { @override public integer call() throws exception { homecoming g.cache("testcache").size(); } }; collection<integer> sizes = g.forcache("testcache").compute() .broadcast(sizecallable).get(); int globalsize = 0; (integer s : sizes) globalsize += s;

convenience gridcache.globalsize() method added in upcoming gridgain 6.2 release.

gridgain

No comments:

Post a Comment