[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