Trouble starting Infinispan using a Cassandra cache store.
gmels May 25, 2012 10:41 AMHi,
I am currently evaluating using Infinispan on top of a Cassandra cache store. Whenever I start an Infinispan cluster node, and Cassandra contains data from a previous run,
the application immediatly allocates all available memory (1GB) and after a few minutes I get OutOfMemory exceptions in org.infinispan.loaders.cassandra.CassandraCacheStore.purgeInternal.
If I purge Cassandra manually (TRUNCATE InfinispanEntries; TRUNCATE InfinispanExpiration;) and restart the application, everything works again.
Note that there were only around 10000 entries stored in Cassandra (around 150 MB spread over 2 nodes).
Have I found a bug or am I missing something? I am using Infinispan 5.1.4 and Cassandra 1.0.10.
Thanks.
My Infinispan loaders configuration:
<loaders passivation="false" preload="false" shared="true"> <loader class="org.infinispan.loaders.cassandra.CassandraCacheStore" fetchPersistentState="false" ignoreModifications="false" purgeOnStartup="false"> <properties> <!-- property name="autoCreateKeyspace" value="true"/ --> <property name="host" value="localhost" /> <property name="keySpace" value="Infinispan" /> <property name="entryColumnFamily" value="InfinispanEntries" /> <property name="expirationColumnFamily" value="InfinispanExpiration" /> <property name="sharedKeyspace" value="false" /> <property name="readConsistencyLevel" value="ONE" /> <property name="writeConsistencyLevel" value="ONE" /> <property name="configurationPropertiesFile" value="cassandrapool.properties" /> <property name="keyMapper" value="org.infinispan.loaders.keymappers.DefaultTwoWayKey2StringMapper" /> </properties> </loader> </loaders>
The stack trace:
Caused by: java.lang.OutOfMemoryError: Java heap space at java.nio.ByteBuffer.wrap(ByteBuffer.java:367) at java.nio.ByteBuffer.wrap(ByteBuffer.java:390) at org.apache.thrift.TBaseHelper.rightSize(TBaseHelper.java:279) at org.apache.cassandra.thrift.Column.getName(Column.java:195) at org.infinispan.loaders.cassandra.CassandraCacheStore.purgeInternal(CassandraCacheStore.java:539) at org.infinispan.loaders.cassandra.CassandraCacheStore.start(CassandraCacheStore.java:153) at org.infinispan.loaders.CacheLoaderManagerImpl.start(CacheLoaderManagerImpl.java:136) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.infinispan.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:236) at org.infinispan.factories.AbstractComponentRegistry$PrioritizedMethod.invoke(AbstractComponentRegistry.java:885) at org.infinispan.factories.AbstractComponentRegistry.invokeStartMethods(AbstractComponentRegistry.java:639) at org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:628) at org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:531) at org.infinispan.factories.ComponentRegistry.start(ComponentRegistry.java:174) at org.infinispan.CacheImpl.start(CacheImpl.java:521) at org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.java:656) at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:549) at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:521)