Known Issues in vFabric GemFire 7.0.0

Last updated: 10/25/2012

Id Created Title Description Workaround
#40693 05/13/09 An explicit cache destroy of an entry will be lost (to the backend database). An explicit cache destroy of an entry will be lost (to the backend database) if the entry has been eviction or expiration destroyed The region.destroy(key) will get EntryNotFoundException, appliation can load the entry and then retry the destroy operation to destroy the entry in the database.
#40791 06/11/09 Applications that use GemFire cache client processes should call Cache.close followed by DistributedSystem.disConnect If applications using a client cache do not call DistributedSystem.disconnect(), stale data may be encountered when the application reopoens the cache and subscribes to updates. Applications that use GemFire client caches should call Cache.close() followed by DistributedSystem.disconnect().
#40894 07/21/09 For Java 1.5, Email alerts in GemFire Agent requires activation.jar from JavaBeans Activation Framework The GemFire Agent requires activation.jar to be in its classpath to send email alerts. This happens only with JRE version 1.5 and older. The jar is distributed by SUN as part of the JavaBeans Activation Framework. It can downloaded from the SUN website at The JavaBeans Activation Framework is distributed as part of Java SE 6 release. For Java 1.5, add JavaBeans Activation Framework jars in classpath before starting the GemFire Agent.
#41156 09/25/09 Stat sampler displays a state value In rare cases, we have observed that a statistic may be recorded with a stale value for a single sample. Set this system property: -Dgemfire.STRIPED_STATS_DISABLED=true
#41174 10/01/09 Region.create from a region with an EMPTY policy does not throw an EntryExistsException CREATE operations invoked on EMPTY regions are converted to PUT operations on the data nodes. Consequently an EntryExistsException is not thrown if the key already exists on one or more data nodes whose data policy is REPLICATED or NORMAL. Additionally, any callbacks invoked on such nodes see the event as a UPDATE event rather than a CREATE event. No workaround.
#42324 09/10/10 Data type in Querying A query from client to server on a Long field does return correct result if 'L' is NOT used with value in WHERE condition(s), like "longID=10". Character 'L' must be used with value in where condition for client-server queries.
#42381 10/01/10 Cache creation does not fail if an index configured in cache.xml can not be created If there is any failure with index creation during cache creation (gemfire startup using xml file), the cache creation was continued. One way to make sure is to look into the stat file to see if all the indexes are created. Or if a query takes a long time than expected, it needs to be analyzed to see if its using the expected index.
#42431 10/25/10 Region expiration may take longer than expected GemFire only uses a single thread to process expired region entries. This can cause expiration to take longer than expected as the schedule expiration queue up waiting for this single thread to process them. This bug is even worse if the expiration needs to remove the entry from disk or do a network hop. If you are not using GemFire transactions or are willing for a transaction to fail because of a conflict caused by a concurrent expiration then in GemFire 6.6 you can set -Dgemfire.EXPIRATIONS_CAUSE_CONFLICTS=true. This allows expirations to take advantage of multiple threads. If you then set -Dgemfire.EXPIRY_THREADS=XXX where XXX is the number of threads to use for expiration then you will have multiple threads doing concurrent expirations.
#42432 10/25/10 Java arguments passed to the gemfire.bat script are not passed to the JVM (Windows) The arguments passed with prefix '-J' to the gemfire script are expected to be passed to the Java VM process. This works on Unix/Linux systems when using the bin/gemfire shell script. However, on Windows systems using the gemfire.bat it does not work and is not supported. The workaround is to set you Java Arguments in the environment via the JAVA_ARGS environment variable and then run the gemfire.bat script and command. The script will then pick up the environments at run time. On Windows systems, set Java arguments using the JAVA_ARGS environment variable. When you run the gemfire.bat script, the arguments are read. There could be two types of arguments (1) Java VM switches (like -Xmx512m) : Use the environment variable JAVA_ARGS (2) GemFire properties that are to be set as System Properties to the Java VM: Use or use the environment variable JAVA_ARGS without using '-J'. e.g. To set gemfire.mcast-port use -Dgemfire.mcast-port=15001
#42436 10/26/10 UnsupportedOperationException with index when two aliases are created for the same collection In a query, when two aliases are created for the same collection and both the aliases are used in the where clause, the following exception is thrown when index on that collection is used: {{{ java.lang.UnsupportedOperationException: This method should not have been invoked at com.gemstone.gemfire.cache.query.internal.AbstractCompiledValue.isConditioningNeededForIndex( at com.gemstone.gemfire.cache.query.internal.AbstractGroupOrRangeJunction.filterEvaluate(AbstractGroupOrRangeJunction?.java:136) at com.gemstone.gemfire.cache.query.internal.CompiledJunction?.filterEvaluate(CompiledJunction?.java:191) at com.gemstone.gemfire.cache.query.internal.CompiledSelect?.evaluate( at com.gemstone.gemfire.cache.query.internal.DefaultQuery?.executeUsingContext(DefaultQuery?.java:268) at com.gemstone.gemfire.cache.query.internal.DefaultQuery?.execute( at com.gemstone.gemfire.cache.query.internal.DefaultQuery?.execute( }}} No workaround for now
#42452 11/08/10 In case of client server function execution, Execution.execute() becomes a blocking call waiting for ResultCollector to get populated with all results In case of client server function execution, Execution.execute() becomes a blocking call waiting for ResultCollector to get populated with all results. For peer to peer case, it is a non blocking call We need to make the client side function execution non-blocking. ---------------------------------------- List futures = null; try { futures = execService.invokeAll(callableTasks); } catch (RejectedExecutionException rejectedExecutionEx) { throw rejectedExecutionEx; } catch (InterruptedException e) { throw new InternalGemFireException(e.getMessage()); } if (futures != null) { Iterator itr = futures.iterator(); while (itr.hasNext() && !execService.isShutdown() && !execService.isTerminated()) { Future fut = (Future); try { fut.get(); } ----------------------------------------
#43496 06/01/11 hang waiting to obtain locks from grantor with no-one holding the lock It is possible for the system to hang trying to obtain locks on a partitioned region bucket with no process owning the lock. We have observed this happening after the failure of a lock grantor who is also the dlock elder. A new elder is elected and it becomes the grantor but fails to assign the lock to any of the processes requesting it. 662SupportKnownBugs
#43536 06/07/11 Function API classes must be included in the CLASSPATH The function APIs perform early deserialization during messaging of function results, filters, arguments, and the functions themselves. Therefore, the class for these objects must be included in the JVM's classpath. It is not possible to define your own class loader just before you read a function result or pass the arguments to your code. Add the classes for functions, function arguments, function filters, and function results to the CLASSPATH.
#43632 06/29/11 Security quickstart example may log a warning at server when the client is killed. A warning, stating an IOException, could be seen in the server's console when the client cache is closed immediately after completing the example steps. This could be avoided by running the example with subscription-enabled="false" in the client's xml.
#43673 07/11/11 "select *" query on region.entrySet Using query "select * from /exampleRegion.entrySet" fails in a client-server topology and/or in a PartitionedRegion. The Following exception is thrown: Exception in thread "main" com.gemstone.gemfire.cache.client.ServerOperationException?: com.gemstone.gemfire.SerializationException?: failed serializing object at com.gemstone.gemfire.cache.client.internal.OpExecutorImpl?.handleException(OpExecutorImpl?.java:530) at - Caused by: com.gemstone.gemfire.SerializationException?: failed serializing object at - com.gemstone.gemfire.internal.cache.tier.sockets.BaseCommand?.writeQueryResponseChunk(BaseCommand?.java:750) at - - Caused by: com.gemstone.gemfire.internal.cache.LocalRegion?$NonTXEntry at at at com.gemstone.gemfire.internal.InternalDataSerializer?.writeSerializableObject(InternalDataSerializer?.java:2032) at Use "select e.key, e.value from /exampleRegion.entrySet e" and construct the entry object in the application developed using Gemfire.
#43758 07/29/11 Suspended transaction from function execution unusable after primary rebalancing When multiple invocations of a function participate in a single transaction (suspending and resuming transactions for each invocation), a high-availablity event may re-balance the primaries, which make it impossible possible to target the original transactional node for function execution. Use the system property gemfire.DISABLE_MOVE_PRIMARIES_ON_STARTUP to allow function execution to target the same member.
#43781 08/04/11 Region put may do multiple serializations of the value A Region put invocation may serialize the value multiple times. If the region being put on has a DataPolicy of EMPTY and it is in a cache server that clients have subscriptions on then one serialization will be done to push the value to peers of the server and another serialization will be done to push the value to the subscribed clients. If the region is using a disk store and it is not partitioned then it may be serialized twice; once to distribute it to peers and once to write it to disk. You could preserialize the value into a byte[] and put the byte[] in the region. But in this case all readers if the cache need to be changed to deserialize the byte[]. See the internal class com.gemstone.gemfire.internal.util.BlobHelper. You can use its static methods serializeToBlob and deserializeBlob.
#43784 08/05/11 How can I tell that a region was closed because I ran out of disk space. We see that when peer runs out of disk space, the regions that failed to persist close automatically. Is there a way to detect this condition? For example, to detect network split or any network issues we add listener to any of our Region and watch for regionDestroy and check operation to be FORCED_DISCONNECT or if whole Cache is closed then we do our own logic and exit the JVM. But in case when Region runs out of disk space each individual region is closed. But the Cache doesn't seem to be closed. So we are not able to detect this condition at all. Is there any way we can detect this in the listeners? The CacheListener afterRegionDestroy is called in this case. The operation will be REGION_CLOSE. We do log a message at "error" level that says: A DiskAccessException has occurred while writing to the disk for region XXX. The region will be closed. If you are able to access the log in your CacheListener then you could check for this log message.
#43866 08/26/11 Cache plugins may fail if read-serialized is true If read-serialized is set to true on your cache and you have plugin classes (for example CacheListener, CacheWriter, CacheLoader), when those plugins are serialized as a PDX, the plugin fails because GemFire sees the plugin as an instance of PdxInstance. This problem only occurs if your plugins are serialized as PDX because you have implemented PdxSerializable or have a PdxSerializer that serializes the plugin class. Note that classes that implement Function are never passed to a PdxSerializer but can still implement PdxSerializable and then fail just like the other plugins. Do not implement PdxSerializable or change your PdxSerializer to serialize that plugin class. Instead, make your plugin class implement DataSerializable. This prevents the plugin from being serialized by a PdxSerializer.
#44006 10/12/11 Hang in primary rebalancing In rare cases, rebalancing primaries may lead to a hang in BucketAdvisor.becomePrimary on one of the members. Stop the hung member and restart it.
#44229 11/30/11 Destroy operation on a region causes offline member to become unusable When some members are offline, a destroy (or local destroy) operation on a persistent region causes the offline member to be unable to start. Start all offline members before destroying a persistent region.
#44399 01/19/12 Changing the distributed-system-id can cause PDX failures If the distributed-system-id is changed and a previously used one is re-used, then PdxType conflicts can occur. Do not change the distributed-system-id after it has been set.
#44404 01/19/12 Partitioned region single hop may fail to direct load balance requests to a newly joined server when optimize-for-write is set to false This problem is caused by stale metadata on the client. The problem occurs when the client is only performing read operations, and a Function has optimize-for-write set to false. Any write operations into the region will fix the problem. Perform a write operation into the region to fix the problem.
#44410 01/20/12 The load-conditioning-interval property does not work as expected when connecting to explicit endpoints When the load-conditioning-interval property is used with explicit servers instead of with locators, connections are still recycled after 5 minutes. The property works as expected when you are using locators to obtain connections for server communication. Use locators to obtain connections for server communication.
#44411 01/20/12 Querying on an enum field always returns an empty result set Querying on enum fields returns an empty result set even when there are qualifying rows. The only workaround available for this issue is to use a bind parameter for the enum field in the query. For example: This query fails: select distinct * from /QueryRegion0 where aDay = Day.Wednesday The query succeeds when the query is rewritten as follows: select distinct * from /QueryRegion0 where aDay = $1 and Day.Wednesday is passed as an execution parameter.
#44606 02/29/12 Registration of instantiators can cause Gateway deadlock Gateways experience deadlock when trying to register instantiators. Register the instantiators in the hubs prior to creating the cache. This prevents the InternalInstantiator .sendRegistrationMessageToServers call
#44961 04/23/12 Mutiple cache creations may fail In some cases, a cache creation request may fail when it should not. Because the cache is a singleton, you can only create one per JVM. If a subsequent cache creation attempts to create an identical cache, the existing cache should be returned. If you have pdx attributes configured in your cache.xml file, and not on the cache factory, then the subsequent creation requests fail with an IllegalStateException saying that the pdx attributes differ. Configure pdx using cache factory methods or change your code to fetch the singleton cache instead of creating it.
#45081 05/25/12 IOException can be thrown with Sun JDK 1.6 on Windows Observed " An operation was attempted on something that is not a socket" on windows with Sun JDK 1.6. This could be because of NIO bug in the JVM that is fixed in JDK 1.7 []. Use JDK 1.7
#45084 05/25/12 Quickstart example of Delta Propagation may see a warning logged. The quickstart example of Delta Propagation feature may see a warning logged at the end of the example-run, saying "Could not stop message dispatcher thread." Note that this does not affect the behavior of the example. No workaround.
#45093 05/29/12 Clients may throw a Null Pointer Exception without a message if the client's server runs out of file descriptors Clients may throw a Null Pointer Exception that has no message if the client's server runs out of file descriptors. The exception may also be reported in the server's log. Increase the file descriptor limit to the appropriate level.
#45251 06/22/12 Performance degrades when publishing to replicated peers from an empty region where concurrency checks are enabled GemFire's concurrency control mechanism currently requires a region configured with DataPolicy.EMPTY to proxy its operations through another process that a DataPolicy configured to use replication. This can cause performance to degrade. VMware recommends that you publish using a region with replication instead of an empty region.
#45685 08/08/12 Some javadocs on Region methods say they will throw UnsupportedOperationException but they do not The following methods on Region say they will throw an UnsupportedOperationException if the region is a partitioned one but this is not true: invalidateRegion() getSubregion(String) containsValue(Object) Ignore the javadocs in these cases. These operations are supported on partitioned regions.
#45734 08/13/12 ShutdownAll will leave distributed system in closing for a few more seconds If you restart a cache immediately after a shutdownall request completes, the cache might fail to start or hang. Wait for a few seconds after the shutdownall request completes before restarting the distributed system.
#45934 08/23/12 AssertionError during startup while updating entries in a persistent replicated region An AssertionError ("Version stamp should have a member at this point for entry ...") may be generated when a member defined with an EMPTY, NORMAL, or PRELOADED data policy for a persistent replicated region begins inserting cache entries using putAll operations while the persistent peers are starting up. Ensure that the persistent members in a replicated region are online before inserting data into members with a data policy of EMPTY, NORMAL, or PRELOADED for that same region.
#45964 08/27/12 Hang doing distributed region destroy during persistent recovery If a running member initiates a distributed destroy of a persistent region using Region.destroyRegion at the same time another member is trying to recover the region from disk, there is a slight chance the distributed destroy and the member recovery will hang. Wait until all members are running before doing a distributed destroy. If this hang is encountered, kill the member that is trying to recover from disk.
#46020 08/31/12 GemFire fails to start if the install directory name contains non-ASCII characters Under Windows, when attempting to launch GemFire scripts (gemfire.bat, cacheserver.bat or gfsh.bat) GemFire may fail to launch if the name of the installed directory contains non-ASCII characters. This issue may also occur if GemFire is launched with the -dir option pointing to a directory whose name contains non-ASCII characters. 1. Relocate the GemFire product tree to a directory structure whose name only includes ASCII characters. 2. Delete the *.dll shared libraries from the lib directory. These libraries provide native startup support but are not required in most cases.
#46054 09/04/12 Gfsh backup disk-store command does not name the disk store The output from the gfsh command "backup disk-store" does not name the disk stores. No workaround.
#46105 09/08/12 Incorrect formatting of tabular gfsh output When running gfsh commands, the formatting for displaying Tabular Results can become distorted when the data contains long values in one or more columns. No workaround
#46112 09/09/12 Moving gfsh to the background is not supported. On Unix systems, jobs can be moved to background (using Ctrl-Z) and then later moved back to the foreground (using fg). This behavior is not supported for gfsh. When you type Ctrl-Z, gfsh exits with a "FATAL Exit". Do not move gfsh jobs to the background.
#46230 09/18/12 JLine DLL issue for multiple instances of gfsh started simultaneously. JLine uses DLLs on Windows to interact with the operating system to read special keys (such as the arrow keys) which are otherwise inaccessible when using the stream. There is a rare possibility of two instances of gfsh trying to load the same DLL at the same time, which causes the second instance to fail. Restart the second instance of gfsh.
#46265 09/19/12 Using auto-complete to enter values for multi-valued, named parameter clears the earlier values for that named parameter. When you attempt to auto-complete values for a multi-valued named parameter using the TAB key, the action clears the earlier values for that named parameter. If you enter the values manually, the values are retained. This occurs when you press the TAB key after a comma. For multivalued parameters, input the values manually.
#46359 09/25/12 In gfsh, auto-completion of named parameters does not work as expected for get/put commands. When you execture get/put commands using gfsh, the auto-completion of named parameters does not work as expected. These commands can be executed by entering named parameters and their values manually. Exectue gfsh get/put commands by entering named parameters and their values manually.
#46391 09/27/12 The MBean for a newly created region may not be available immediately. GemFire Manager has the federated view of the MBeans for the entities on GemFire Members. There is a delay in the updates that reach the Manager. Therefore, after creating a region using "create region" command, the MBean for that region is not available on the member immediately. If subsequent commands perform an operation on that region, you should add a slight delay using the "sleep" command. Add an explicit delay of 1.5 to 3.0 seconds. You can use the Thread.sleep() method or use gfsh command 'sleep'.
#46397 09/27/12 Certain mbean attributes on a member mbean are incorrect The mbean attributes TotalDiskUsage, TotalDiskTasksWaiting have values that are incorrect on the member MBean. No workaround.
#46419 09/28/12 Revoking a non-existent disk store should fail, but instead succeeds with no indication of an error. Disk stores that are considered missing (as reported by the "show missing-disk-store command) may be removed from the system with the "revoke missing-disk-store" command. If, while entering the revoke command, the user inadvertently enters an ID that doesn't match an existing disk store, a result of success will be returned instead of an error. This could lead to the user believing the disk store has been successfully removed when it has not been removed. After using the "revoke missing-disk-store" command the user should again run the "show missing-disk-store" command to confirm that the disk store was successfully removed.
#46485 10/04/12 Executing numerous queries after a low memory event may still cause out of memory exception When a low-memory event occurs, query execution is canceled and all queries are rejected from executing. However, incoming queries still create query objects before being rejected. This can cause an out-of-memory exception. Try tuning the critical heap percentage and/or throttle the number of queries, especially after a query has been canceled due to a low memory condition.
#46597 10/15/12 gfsh can not start when the file path for GemFire product directory contains non-English characters. gfsh can not start when the file path for GemFire product directory contains non-English characters. Move GemFire product directory to a directory whose absolute Path has directories with names having only English characters.
#46602 10/16/12 StatMonitorNotifier Thread may log NullPointerException warning during Cache closure The StatMonitorNotifier Thread may log a NullPointerException warning originating from$MBeanLevelStatisticsListener.handleNotification( This is an unexpected but harmless log message which may occur during Cache closure. It should be ignored and will not adversely affect GemFire, its Management service, or the application. Ignore this warning.
#46603 10/16/12 jmxmbean attributes GarbageCollectionCount and GarbageCollectionTime and operation showJVMMetrics have values that are wrong The mbean attributes GarbageCollectionCount and GarbageCollectionTime will have wrong values once a jvm has done more than one gc. The same is true for the mbean operation "showJVMMetrics" which has a result object whose "gcCount" and "gcTimeMillis" will be wrong after more than one gc. Use the java.lang GarbageCollection mbeans instead. Their "CollectionCount" and "CollectionTime" are correct.
#46604 10/16/12 mbean attributes TotalBucketCount, TotalPrimaryBucketCount, TotalDiskUsage, LruEvictionRate, and LruDestroyRate have values that are incorrect on the member mbean The mbean attributes TotalBucketCount, TotalPrimaryBucketCount, TotalDiskUsage, LruEvictionRate, and LruDestroyRate have values that are incorrect on the member mbean. Note that these same attributes on the member region mbean are correct. Use the per region member mbeans for these attributes.
#46606 10/16/12 gfsh show metrics --member shows wrong values for totalBucketCount, totalPrimaryBucketCount, lruEvictionRate, and lruDestroyRate gfsh 'show metrics --member' shows wrong values for totalBucketCount, totalPrimaryBucketCount, lruEvictionRate, and lruDestroyRate. If the values are 0 they can be trusted; but non-zero value may be too large. Correct values will be shown by 'show metrics --member --region' and 'show metrics --region'.
#46612 10/16/12 Cache creation will hang indefinitely if the directory to which JAR files are deployed is not writable. During Cache creation the directory to which JAR files will be deployed is checked to verify that it is writable. This directory is typically the one in which the member is started. If the directory is not writable, it will be rechecked several times to handle certain network issues and then the process should give up and continue with Cache creation. However, instead of giving up after several tries, the process remains in an infinite loop waiting for the directory to become writable. Ensure that the directory to which JAR files will be deployed is writable. The JAR deployment directory is typically the current working directory at the time the member was started. However, the "deploy-working-dir" GemFire property may be used to specify a different directory for the deployed JAR files. If the current working directory cannot be made writable, it is possible to specify a different directory using this property, but the member must be restarted to accept the new location.
#46623 10/17/12 gfsh connect command's ssl options should not be used The gfsh connect command has the following options: {{{ --key-store --key-store-password --trust-store --trust-store-password }}} They should not be used. If they are then only the jmx-manager connection that connect makes will use ssl. The connection to the locator will not use ssl. If you do use them they will work ok for the first connect but if you do a disconnect and another connect then the values from the first connect will still be used. You need to restart gfsh to fix this problem. Instead you should use these standard system properties: {{{ }}} To set these so that the gfsh script will use them set the JAVA_ARGS environment variable. For example: {{{ JAVA_ARGS=" -Dgemfire.ssl-enabled=true" export JAVA_ARGS gfsh }}} Note that "gemfire.ssl-enabled" needs to be set to true and "" needs to be set to true.
#46625 10/18/12 Not equals queries for HashIndex will no longer work when an object is removed from the Index An error will be thrown when a not equals query is executed after having an object removed from the index. None
#46627 10/18/12 Pulse fails to start When using either the cacheserver or gemfire scripts (or their Windows .bat equivalents) to start a GemFire member and that member is also configured to start the embedded Pulse Web application, Pulse fails to start with a ClassNotFoundException for org.apache.commons.logging.LogFactory. Set the CLASSPATH environment variable to include the commons-logging jar provided in the GemFire product lib directory For example on Linux: export CLASSPATH=<GEMFIRE_HOME>/lib/commons-logging.jar Or on Windows: set CLASSPATH=<GEMFIRE_HOME>\lib\commons-logging.jar
#46651 10/22/12 On some platforms backspace key doesn't work in gfsh. On some platforms like Windows 2008 R2, the backspace key doesn't work in gfsh. Use back arrow & delete key instead of backspace key.
#46653 10/22/12 When gfsh automatically sets the locators property when starting a server you may have some problems When gfsh starts a server it will automatically set the locators gemfire property if gfsh is connected and if the server's configuration does not have "locators" explicitly set. But if you look in the server's log file then it will not say that the locators property is set. And if you do an export config then that server's exported property file will not have locators set in it. Set the locators property explicitly for the server by either putting it in its file or by adding --locators on the command line.
#46658 10/23/12 A possible ArrayIndexOutOfBoundsException could occur during index update with multiple threads When multiple threads are updating an index and there are multiple entries(more than 100) that are being added to the index with the same value for the field on which index is created, there is a possibility of an ArrayIndexOutOfBoundsException. No Workaround for now
#46671 10/25/12 Fixed Partitioning quickstart example fails In the Fixed Partitioning quickstart example, the following files reference cache6_5.dtd when they should reference cache6_6.dtd. FixedPartitionPeer1.xml FixedPartitionPeer2.xml In the following files, change the DTD reference to cache6_6.dtd: quickstart/xml/FixedPartitionPeer1.xml quickstart/xml/FixedPartitionPeer2.xml