Hi
In order to fix the issue that we are discussing @
http://apache-ignite-users.70518.x6.nabble.com/Issue-with-adding-nested-index-dynamically-tc29571.html
I found a workaround to override GridQueryProcessor and use
CustomGridQueryProcessor which extends GridQueryProcessor and override few
functionality. To do that I am getting hold of KernalContext and stopping
existing GridQueryProcessor that has been already started during startup and
adding my CustomGridQueryProcessor. But my worry is when Ignite instance is
created it is open for discovery, traffic will be started and existing
GridQueryProcessor might get traffic. But if stop and start meanwhile if we
get any message, I might loose it.
My question is :
1) Is there any other better way to override GridQueryProcessor ? (or)
2) Is there any way we can stop traffic in local node for that moment until
new CustomGridQueryProcessor has been started and restart it ?
List<Ignite> igniteLocalGrids = Ignition.allGrids();
for(Ignite igniteLocalGrid : igniteLocalGrids) {
GridKernalContextImpl kernalContext =
((GridKernalContextImpl)((IgniteKernal)igniteLocalGrid).context());
kernalContext.query().stop(true);
CustomGridQueryProcessor processor = new
CustomGridQueryProcessor(kernalContext);
processor.start();
GridCacheProcessor gridCacheProcessor = kernalContext.cache();
for (final IgniteInternalCache cache :
gridCacheProcessor.caches()) {
GridCacheContext cctx = cache.context();
DynamicCacheDescriptor desc =
gridCacheProcessor.cacheDescriptor(cctx.name());
processor.onCacheStart0(cctx, desc.schema());
}
processor.onCacheKernalStart();
kernalContext.add(processor, true);
}
--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/