[
https://issues.jboss.org/browse/ISPN-8411?page=com.atlassian.jira.plugin....
]
Emond Papegaaij edited comment on ISPN-8411 at 10/17/17 5:31 AM:
-----------------------------------------------------------------
[~NadirX] Can you point me to the location of this cluster-wide clear command? The
documentation of {{Cache.clear}} states it's local and should not be used:
"_Note: This should never be invoked in production unless you can guarantee no other
invocations are ran concurrently. If the cache is transactional, it will not interact with
the transaction._" However, the implementation seems to execute a ClearCommand and
participate in the transaction. Also note that Infinispan's own JCache (JSR 107)
implementation uses the same iterate and remove technique:
https://github.com/infinispan/infinispan/blob/9.1.1.Final/jcache/remote/s...
[~rvansa] Yes, we are using transactional invalidation caches. We took this configuration
from the Infinispan 8.2 documentation and the default configuration provided by WildFly
(10.1 and 11.0). From those we concluded that transactional caches are advised. Is this
wrong? Prior to using Infinispan, we used EH Cache 2, which was read-write.
was (Author: papegaaij):
[~NadirX] Can you point me to the location of this cluster-wide clear command? The
documentation of {{Cache.clear}} states it's local and should not be used:
"_Note: This should never be invoked in production unless you can guarantee no other
invocations are ran concurrently. If the cache is transactional, it will not interact with
the transaction._" However, the implementation seems to execute a ClearCommand and
participate in the transaction. Also note that Infinispan's own JCache (JSR 107)
implementation uses the same iterate and remove technique:
https://github.com/infinispan/infinispan/blob/9.1.1.Final/jcache/remote/s...
[~rvansa] Yes, we are using transaction invalidation caches. We took this configuration
from the Infinispan 8.2 documentation and the default configuration provided by WildFly
(10.1 and 11.0). From those we concluded that transactional caches are advised. Is this
wrong? Prior to using Infinispan, we used EH Cache 2, which was read-write.
Add support for efficient removeAll
-----------------------------------
Key: ISPN-8411
URL:
https://issues.jboss.org/browse/ISPN-8411
Project: Infinispan
Issue Type: Feature Request
Components: Hibernate Cache
Affects Versions: 8.2.8.Final, 9.1.1.Final
Environment: WildFly 10.1.0, WildFly 11.0.0.CR1, WildFly master, Hibernate 2LC
Reporter: Emond Papegaaij
Assignee: Galder ZamarreƱo
Infinispan currently does not seem to implement an efficient way to clear an entire cache
cluster-wide. This forces Hibernate to remove all entries one by one when a cache region
needs to be cleared, for example when a buld CriteriaUpdate or CriteriaDelete is used.
The behavior we are observing is:
# All nodes in the cluster are queried for the keyset in a region
# A lock seems to be in place for this region for the duration of the commit
# The initiating node constructs a message with {{InvalidateCommands}} for all keys
# This large message (230MB for 200k entries) is sent to all nodes in the cluster
For large caches this can take very long. We had to increase the remote-timeout to 60
seconds to prevent timeouts. During this time, the entire cluster is locked an busy
processing the cache invalidations. As you can understand, this is not a workable solution
for us. On some places we can prevent the cache clear by updating the records one by one,
but in other places this is not an option.
The corresponding report at Hibernate can be found here:
https://hibernate.atlassian.net/browse/HHH-12036
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)