Hi,

If tenant domain is not set, we can derive it via tenant id, right? But the
method getCacheManager in CacheManagerFactoryImpl [1] do not do this, and
therefore fails with a NPE. Following error was observed when a datasource
addition triggered a cluster notification, and the worker node tried to
process it. Only the tenant id is set in the cluster message.

[1] org.wso2.carbon.caching.impl.CacheManagerFactoryImpl#getCacheManager


[2013-08-04 23:15:36,947] ERROR
{org.wso2.carbon.core.clustering.hazelcast.HazelcastClusterMessageListener}
-  Cannot process ClusteringMessage
org.apache.axis2.clustering.ClusteringFault: Error in handling data source
stat message: Error in updating data source 'test' from registry
[remove:false]: Tenant domain has not been set in CarbonContext
 at
org.wso2.carbon.ndatasource.core.DataSourceStatMessage.execute(DataSourceStatMessage.java:74)
at
org.wso2.carbon.core.clustering.hazelcast.HazelcastClusterMessageListener.onMessage(HazelcastClusterMessageListener.java:54)
 at
com.hazelcast.impl.ListenerManager.callListener(ListenerManager.java:419)
at
com.hazelcast.impl.ListenerManager.callListeners(ListenerManager.java:334)
 at com.hazelcast.impl.BaseManager$2.run(BaseManager.java:1392)
at
com.hazelcast.impl.executor.ParallelExecutorService$ParallelExecutorImpl$ExecutionSegment.run(ParallelExecutorService.java:212)
 at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:662)
at
com.hazelcast.impl.ExecutorThreadFactory$1.run(ExecutorThreadFactory.java:45)
Caused by: org.wso2.carbon.ndatasource.common.DataSourceException: Error in
updating data source 'test' from registry [remove:false]: Tenant domain has
not been set in CarbonContext
at
org.wso2.carbon.ndatasource.core.DataSourceRepository.updateDataSource(DataSourceRepository.java:186)
 at
org.wso2.carbon.ndatasource.core.DataSourceRepository.refreshUserDataSource(DataSourceRepository.java:157)
at
org.wso2.carbon.ndatasource.core.DataSourceStatMessage.execute(DataSourceStatMessage.java:71)
 ... 9 more
*Caused by: java.lang.NullPointerException: Tenant domain has not been set
in CarbonContext*
* at
org.wso2.carbon.caching.impl.CacheManagerFactoryImpl.getCacheManager(CacheManagerFactoryImpl.java:79)
*
 at
org.wso2.carbon.registry.core.utils.RegistryUtils.getCacheManager(RegistryUtils.java:289)
at
org.wso2.carbon.registry.core.utils.RegistryUtils.getResourceCache(RegistryUtils.java:272)
 at
org.wso2.carbon.registry.core.caching.CacheBackedRegistry.getCache(CacheBackedRegistry.java:62)
at
org.wso2.carbon.registry.core.caching.CacheBackedRegistry.resourceExists(CacheBackedRegistry.java:246)
 at
org.wso2.carbon.registry.core.session.UserRegistry.resourceExists(UserRegistry.java:629)
at
org.wso2.carbon.ndatasource.core.DataSourceRepository.getDataSourceMetaInfoFromRegistryPath(DataSourceRepository.java:409)
 at
org.wso2.carbon.ndatasource.core.DataSourceRepository.updateDataSource(DataSourceRepository.java:164)
... 11 more


-- 
*Kasun Gajasinghe*
Software Engineer;
Development Technologies Team, WSO2 Inc.; http://wso2.com


 ,
*email: **kasung AT spamfree wso2.com


** cell: **+94 (77) 678-0813*
*linked-in: *http://lk.linkedin.com/in/gajasinghe


*
*
*blog: **http://kasunbg.org* <http://kasunbg.org>


*
twitter: **http://twitter.com/kasunbg* <http://twitter.com/kasunbg>


*
*
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to