Troubleshooting Questions
I have created a new cache and its status is STATUS_UNINITIALISED. How do I initialize it?
You need to add a newly created cache to a CacheManager before it gets initialized. Use code like the following:
CacheManager manager = CacheManager.create();
Cache myCache = new Cache("testDiskOnly", 0, true, false, 5, 2);
manager.addCache(myCache);
Why did a crashed standalone BigMemory node not come up with all data intact?
Persistence was not configured or not configured correctly on the node. For more information, see "Configuring Fast Restart" in the BigMemory Go Configuration Guide.
I added data Client 1, but I can't see it on Client 2. Why not?
BigMemory Go does not distribute data, but BigMemory Max does. See the BigMemory Max product documentation.
I have a small data set, and yet latency seems to be high.
There are a few ways to try to solve this, in order of preference:
1. Try pinning the cache. If the data set fits comfortably in heap and is not expected to grow, this will speed up gets by a noticeable factor. Pinning certain elements and/or tuning ARC settings might also be effective for certain use cases.
2. Increase the size of the off-heap store to allow data sets that cannot fit in heap-but can fit in memory-to remain very close to your application.
I am using Java 6 and getting a java.lang.VerifyError on the Backport Concurrent classes. Why?
The backport-concurrent library is used in BigMemory Go to provide java.util.concurrency facilities for Java 4 - Java 6. Use either the Java 4 version which is compatible with Java 4-6, or use the version for your JDK.
I get a javax.servlet.ServletException: Could not initialize servlet filter when using SimplePageCachingFilter. Why?
If you use this default implementation, the cache name is called "SimplePageCachingFilter." You need to define a cache with that name in ehcache.xml. If you override CachingFilter, you are required to set your own cache name.
Why is there a warning in my application's log that a new CacheManager is using a resource already in use by another CacheManager?
WARN CacheManager ... Creating a new instance of CacheManager
using the diskStorePath "C:\temp\tempcache" which is already used by
an existing CacheManager.
This means that, for some reason, your application is trying to create one or more additional instances of CacheManager with the same configuration. Depending upon your persistence strategy, BigMemory Go will automatically resolve the disk-path conflict, or it will let you know that you must explicitly configure the diskStorePath.
To eliminate the warning:
Use a separate configuration per instance.
If you only want one instance, use the singleton creation methods, i.e.,
CacheManager.getInstance(). In Hibernate, there is a special provider for this called
net.sf.ehcache.hibernate.SingletonEhCacheProvider. See the
Integrations book in the Ehcache product documentation.
What does the following error mean? "Caches cannot be added by name when default cache config is not specified in the config. Please add a default cache config in the configuration."
The defaultCache is optional. When you try to programmatically add a cache by name, CacheManager.add(String name), a default cache is expected to exist in the CacheManager configuration. To fix this error, add a defaultCache to the CacheManager's configuration.
Do I have to restart BigMemory Go after redeploying in a container?
Errors could occur if BigMemory Go runs with a web application that has been redeployed, causing BigMemory Go to not start properly or at all. If the web application is redeployed, be sure to restart BigMemory Go.