[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