Cache.stop() should not remove the cache from the cache manager.
But AFAIK the ComponentRegistry that holds all the cache-scoped components
is destroyed, and recreated by Cache.start(). In the constructor it should
register Query's CommandInitializer again, so LifecycleManager should find
it and you shouldn't get the NPE...
Dan
On Tue, Aug 28, 2012 at 12:15 AM, Ales Justin <ales.justin(a)gmail.com> wrote:
Uh, the workaround results in NPE:
23:10:27,160 ERROR
[org.apache.catalina.core.ContainerBase.[jboss.web].[default-host]]
(http-/192.168.1.101:8080-2) Exception sending request initialized
lifecycle event to listener instance of class
org.jboss.capedwarf.appidentity.GAEListener: java.lang.NullPointerException
at
org.infinispan.query.impl.LifecycleManager.cacheStarted(LifecycleManager.java:125)
at
org.infinispan.factories.ComponentRegistry.start(ComponentRegistry.java:178)
[infinispan-core-5.2.0.ALPHA2.jar:5.2.0.ALPHA2]
at org.infinispan.CacheImpl.start(CacheImpl.java:523)
[infinispan-core-5.2.0.ALPHA2.jar:5.2.0.ALPHA2]
at
org.infinispan.AbstractDelegatingCache.start(AbstractDelegatingCache.java:343)
[infinispan-core-5.2.0.ALPHA2.jar:5.2.0.ALPHA2]
at
org.jboss.capedwarf.common.infinispan.InfinispanUtils.checkCache(InfinispanUtils.java:72)
[capedwarf-common-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
at
org.jboss.capedwarf.common.infinispan.InfinispanUtils.getCache(InfinispanUtils.java:82)
[capedwarf-common-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
This is the code I added:
private static <K, V> Cache<K, V> checkCache(String cacheName) {
final Cache<K, V> cache = cacheManager.getCache(cacheName, false);
if (cache != null) {
final ComponentStatus status = cache.getStatus();
if (status != ComponentStatus.INITIALIZING && status !=
ComponentStatus.RUNNING) {
cache.start();
}
}
return cache;
}
Any other idea?
-Ales
On Aug 27, 2012, at 10:51 PM, Ales Justin <ales.justin(a)gmail.com> wrote:
> OK, let me try this workaround.
>
> But should Cache::stop also remove it or not?
>
> If yes, I might dig deeper into finding the culprit,
> if not, then the workaround should do, I guess.
>
> -Ales
>
>> As a workaround, couldn't you check what the status of the cache is
before using it? If it's stopped, you could call cache.start() again.
>>
>> On Aug 25, 2012, at 3:44 PM, Ales Justin wrote:
>>
>>> When running CapeDwarf tests these days I get this broken behavior:
>>> (using: Ispan 5.2.0.Alpha2)
>>>
>>> On 1st test all works OK:
>>> * getting the X cache
>>> * passing it to SearchManager (from Ispan Query)
>>> * doing queries, etc
>>> * stopping the X cache on app (aka Arquillian test) undeploy
>>>
>>> But when running 2nd app (more Arquillian tests) it breaks.
>>>
>>> I'm again using X cache, via this lookup:
>>> (where toCacheName == X)
>>>
>>> final Cache<K, V> cache =
cacheManager.getCache(toCacheName(config, appId), false);
>>> if (cache != null)
>>> return cache;
>>>
>>> And I actually get some cache, where I would expect none.
>>>
>>> Since this cache is not new, it's never run against Ispan Query's
LifecycleManager,
>>> hence there is no QueryInterceptor in its component registry.
>>>
>>> Which is where the app breaks: SearchManager requires QueryInterceptor
in cache' component registry.
>>>
>>> Shouldn't Cache::stop also remove the cache from EmbeddedCacheManager?
>>> btw: this used to work, dunno when it broke ...
>>>
>>> Anyone else seeing something similar?
>>>
>>> -Ales
>>>
>>> ----------
>>>
>>> 15:32:06,810 ERROR
[org.apache.catalina.core.ContainerBase.[jboss.web].[default-host]]
(http-/192.168.1.101:8080-3) Exception sending request initialized
lifecycle event to listener instance of class
org.jboss.capedwarf.appidentity.GAEListener:
java.lang.IllegalArgumentException: Indexing was not enabled on this cache.
class org.infinispan.query.backend.QueryInterceptor not found in registry
>>> at
org.infinispan.query.impl.ComponentRegistryUtils.getComponent(ComponentRegistryUtils.java:40)
>>> at
org.infinispan.query.SearchManagerImpl.<init>(SearchManagerImpl.java:57)
>>> at org.infinispan.query.Search.getSearchManager(Search.java:39)
>>> at
org.jboss.capedwarf.datastore.AbstractDatastoreService.<init>(AbstractDatastoreService.java:61)
[capedwarf-datastore-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
>>> at
org.jboss.capedwarf.datastore.JBossDatastoreService.<init>(JBossDatastoreService.java:56)
[capedwarf-datastore-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
>>> at
com.google.appengine.api.datastore.DatastoreServiceFactory.getDatastoreService(DatastoreServiceFactory.java)
[appengine-api-1.0-sdk-1.7.0.jar:]
>>> at
org.jboss.capedwarf.log.JBossLogService.requestStarted(JBossLogService.java:215)
[capedwarf-log-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
>
_______________________________________________
infinispan-dev mailing list
infinispan-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev