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

Sanne Grinovero sanne.grinovero at gmail.com
Tue Sep 28 13:05:54 EDT 2010


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?

Is there a JIRA about this thread's topic?

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
>



More information about the infinispan-dev mailing list