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

Manik Surtani manik at jboss.org
Tue Sep 28 14:50:33 EDT 2010


On 28 Sep 2010, at 18:05, Sanne Grinovero wrote:

> 2010/9/28 Manik Surtani <manik at jboss.org>:
>> 
>> On 27 Sep 2010, at 18:13, Sanne Grinovero wrote:
>> 
>>> 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
>>> _______________________________________________
>>> infinispan-dev mailing list
>>> infinispan-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>> 
>> 
>> Does this patch affect any other tests?  It looks good to me...
> 
> Yes it seems to work fine, no new failing tests; You think I should
> apply the flushTimeout too?
> Anyway, I really didn't look into what is supposed to happen when the
> caches which weren't initially known are finally started; I would
> expect them to start another statetransfer to retrieve whatever
> initial state they should have, but didn't check for these cases.
> Did you have already a clear idea about how this should work?

What you described is about what I would expect as well.

> Is there a JIRA about this thread's topic?

No there isn't - go ahead and create one.

> 
> Sanne
> 
>> 
>> --
>> Manik Surtani
>> manik at jboss.org
>> Lead, Infinispan
>> Lead, JBoss Cache
>> http://www.infinispan.org
>> http://www.jbosscache.org
>> 
>> 
>> 
>> 
>> 
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>> 
> 
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev

--
Manik Surtani
manik at jboss.org
Lead, Infinispan
Lead, JBoss Cache
http://www.infinispan.org
http://www.jbosscache.org







More information about the infinispan-dev mailing list