22.9. Other Management Tools and Operations
22.9.1. Accessing Data via URLs
post()methods place data in the cache, and the URL used determines the cache name and key(s) used. The data is the value placed into the cache, and is placed in the body of the request.
HEADmethods are used for data retrieval while other headers control cache settings and behavior.
22.9.2. Limitations of Map Methods
entrySet(), can be used with certain limitations with Red Hat JBoss Data Grid as they are unreliable. These methods do not acquire locks (global or local) and concurrent modification, additions and removals are excluded from consideration in these calls.
From Red Hat JBoss Data Grid 6.3 onwards, the map methods
entrySet() include entries in the cache loader by default whereas previously these methods only included the local data container. The underlying cache loader directly affects the performance of these commands. As an example, when using a database, these methods run a complete scan of the table where data is stored which can result in slower processing. Use
Cache.getAdvancedCache().withFlags(Flag.SKIP_CACHE_LOAD).values() to maintain the old behavior and not loading from the cache loader which would avoid the slower performance.
In JBoss Data Grid 6.3 the
Cache#size() method returned only the number of entries on the local node, ignoring other nodes for clustered caches and including any expired entries. While the default behavior was not changed in JBoss Data Grid 6.4 or later, accurate results can be enabled for bulk operations, including
size(), by setting the
infinispan.accurate.bulk.ops system property to true. In this mode of operation, the result returned by the
size() method is affected by the flags
org.infinispan.context.Flag#CACHE_MODE_LOCAL, to force it to return the number of entries present on the local node, and
org.infinispan.context.Flag#SKIP_CACHE_LOAD, to ignore any passivated entries.
In JBoss Data Grid 6.3, the Hot Rod
size() method obtained the size of a cache by invoking the
STATS operation and using the returned
numberOfEntries statistic. This statistic is not an accurate measurement of the number of entries in a cache because it does not take into account expired and passivated entries and it is only local to the node that responded to the operation. As an additional result, when security was enabled, the client would need the
ADMIN permission instead of the more appropriate
SIZEoperation, and the clients have been updated to use this operation for the
size()method. The JBoss Data Grid server will need to be started with the
infinispan.accurate.bulk.opssystem property set to
trueso that size can be computed accurately.