[infinispan-dev] RPCs for non-existant caches ought not throw exception

Sanne Grinovero sanne.grinovero at gmail.com
Mon Sep 27 13:13:24 EDT 2010


2010/9/27 Manik Surtani <manik at jboss.org>:
>
> On 22 Sep 2010, at 00:07, Sanne Grinovero wrote:
>
>> 2010/9/14 Manik Surtani <manik at jboss.org>:
>>> FYI, just checked in
>>> http://fisheye.jboss.org/changelog/Infinispan/branches/4.2.x?cs=2361
>>> and tests run clean.
>>
>> I just crashed against this, and after finding ISPN-648 I've tried to
>> set strictPeerToPeer="false", this seemed initially to improve the
>> situation as no more complaints about inexistent caches where logged,
>> but then I got timeouts during StateTransfers, so I opened ISPN-661
>> (which contains the full stacktraces of this timeout).
>>
>> After changing Infinispan to timeout after 10 minutes, I'm back to the
>> exceptions
>> "org.infinispan.remoting.InboundInvocationHandlerImpl] Cache named
>> (cachename) does not exist on this cache manager!"
>>
>> Is there any known workaround to have a second node join the cluster
>> while not all caches are initialized at the same time?
>>
>> BTW from what I understood it seems I definitely need
>> strictPeerToPeer="false", shouldn't this be the default?
>> I think my use case is quite common, I just start more than one cache
>> lazily. (Also I can't pre-start them as the configuration is not known
>> until a service requests a cache, the invoker's context affects this
>> configuration)
>
> You start the caches lazily, but the cache managers eagerly?
>

Yes, just I have only one CacheManager per node, so the first request
for any cache will trigger the CacheManager factory,
other caches are then started on demand.
It *seems* to be working fine, after applying this additional patch
(yes I was waiting for you to come back) :
[also see ISPN-661]:

Index: core/src/main/java/org/infinispan/remoting/InboundInvocationHandlerImpl.java
===================================================================
--- core/src/main/java/org/infinispan/remoting/InboundInvocationHandlerImpl.java	(revision
2443)
+++ core/src/main/java/org/infinispan/remoting/InboundInvocationHandlerImpl.java	(working
copy)
@@ -45,7 +45,7 @@
    }

    private boolean isDefined(String cacheName) {
-      log.error("Defined caches: {0}", embeddedCacheManager.getCacheNames());
+      log.trace("Defined caches: {0}", embeddedCacheManager.getCacheNames());
       return embeddedCacheManager.getCacheNames().contains(cacheName);
    }

@@ -67,8 +67,9 @@
          }

          if (cr == null) {
-            if (log.isInfoEnabled()) log.info("Cache named {0} does
not exist on this cache manager!", cacheName);
-            return new ExceptionResponse(new
NamedCacheNotFoundException(cacheName));
+            if (log.isInfoEnabled()) log.info("Cache named {0} does
not exist on this cache manager! Response ignored", cacheName);
+	    return RequestIgnoredResponse.INSTANCE;
          }
       }

Index: core/src/main/java/org/infinispan/statetransfer/StateTransferManagerImpl.java
===================================================================
--- core/src/main/java/org/infinispan/statetransfer/StateTransferManagerImpl.java	(revision
2443)
+++ core/src/main/java/org/infinispan/statetransfer/StateTransferManagerImpl.java	(working
copy)
@@ -178,7 +178,7 @@
    private void generateTransactionLog(ObjectOutput oo) throws Exception {
       // todo this should be configurable
       int maxNonProgressingLogWrites = 100;
-      int flushTimeout = 60000;
+      int flushTimeout = 600000;

       DistributedSync distributedSync =
rpcManager.getTransport().getDistributedSync();

Cheers,
Sanne


More information about the infinispan-dev mailing list