2010/9/27 Manik Surtani <manik(a)jboss.org>:
On 22 Sep 2010, at 00:07, Sanne Grinovero wrote:
> 2010/9/14 Manik Surtani <manik(a)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