Hi all;
The reason is,  there are "Axis2ConfigurationContextObserver"
implementations at Event +datasource components and where, tenantID/domain
is set to "currentContext()"

eg: PrivilegedCarbonContext.getCurrentContext().setTenantId(tenantId, true);

Changed that to "ThreadLocalCarbonContext" and now issue is solved.

 eg:
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(tenantId,
true);

@senaka,anjana..
I have attached the patch which contains above change..Please check and let
us know if there any issue..
Else, we will commit that to branch

Thanks.


On 27 August 2013 17:47, Vijayaratha Vijayasingam <[email protected]> wrote:

>
> Hi all;
> We are facing a severe blocker in APIM 4.2.0 based product..
> When we publish an API from publisher to gateway following error[1] is
> thrown and APIs are not deployed in tenant space.
>
> *what we do is*
>
> In the Admin service (RESTAPI admin) we set tenant domain explicitly and
> creating  CarbonContext  using  getThreadLocalCarbonContext(). (Because
> there is an issue at AbstarctAdmin service, where it creates CarbonContext
> using  PrivilegedCarbonContext.getCurrentContext, and that always contains
> SuperTenant domain in  it. This was discussed at the last release time and
> as a solution  we overwrites that method from our end to use
> PrivilegedCarbonContext.getThreadLocalCarbonContext() )
>
> Our sample AdminService code is;
>
> public boolean addApiForTenant(String apiData, String tenantDomain) throws
> APIException {
> try {
>  PrivilegedCarbonContext.startTenantFlow();
>
> PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(tenantDomain,
>
>  true);
> boolean status = addApiFromString(apiData);
>  return status;
> } finally {
> PrivilegedCarbonContext.endTenantFlow();
>  }
> }
>
> //overwriting this
> protected ConfigurationContext getConfigContext() {
> .....................................................................
> PrivilegedCarbonContext carbonContext =
>  PrivilegedCarbonContext.getThreadLocalCarbonContext();
> String domain = carbonContext.getTenantDomain();
>  if (domain != null &&
> !MultitenantConstants.SUPER_TENANT_DOMAIN_NAME.equals(domain)) {
> System.out.println(" Tenant domain *********" +domain);
>  return TenantAxisUtils.getTenantConfigurationContext(domain,
> mainConfigContext);
> .....................................................
> }
>
> Can anyone point us, what we do wrong here?
>
> Thanks..
>
>
> [1]
> 2013-08-27 16:55:49,126]  INFO - CarbonAuthenticationUtil
> '[email protected] [-1234]' logged in at [2013-08-27 16:55:49,125+0530]
>  Tenant domain *********test.com
> [2013-08-27 16:55:49,152] ERROR - EventAxis2ConfigurationContextObserver
> Error in setting tenant information
> 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.user.core.authorization.PermissionTree.getPermissionTreeCache(PermissionTree.java:91)
>         at
> org.wso2.carbon.user.core.authorization.PermissionTree.updatePermissionTree(PermissionTree.java:905)
>         at
> org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager.isRoleAuthorized(JDBCAuthorizationManager.java:117)
>         at
> org.wso2.carbon.event.core.internal.CarbonEventBroker.initializeTenant(CarbonEventBroker.java:97)
>         at
> org.wso2.carbon.event.core.internal.builder.EventAxis2ConfigurationContextObserver.creatingConfigurationContext(EventAxis2ConfigurationCont
> extObserver.java:30)
>         at
> org.wso2.carbon.core.multitenancy.utils.TenantAxisUtils.doPreConfigContextCreation(TenantAxisUtils.java:507)
>         at
> org.wso2.carbon.core.multitenancy.utils.TenantAxisUtils.createTenantConfigurationContext(TenantAxisUtils.java:302)
>         at
> org.wso2.carbon.core.multitenancy.utils.TenantAxisUtils.getTenantConfigurationContext(TenantAxisUtils.java:135)
>         at
> org.wso2.carbon.rest.api.service.RestApiAdmin.getConfigContext(RestApiAdmin.java:750)
>         at
> org.wso2.carbon.rest.api.service.RestApiAdmin.getAxisConfig(RestApiAdmin.java:731)
>         at
> org.wso2.carbon.rest.api.service.RestApiAdmin.getLock(RestApiAdmin.java:713)
>         at
> org.wso2.carbon.rest.api.service.RestApiAdmin.getApiByName(RestApiAdmin.java:417)
>         at
> org.wso2.carbon.rest.api.service.RestApiAdmin.getApiForTenant(RestApiAdmin.java:445)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at
> org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212)
>         at
> org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:117)
>         at
> org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
>         at
> org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
>         at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
>         at
> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
>         at
> org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
>         at
> org.wso2.carbon.core.transports.CarbonServlet.doPost(CarbonServlet.java:231)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>         at
> org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
>         at
> org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
>         at
> org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>         at
> org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>         at
> org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>         at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>         at
> org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:178)
>         at
> org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
>         at
> org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:56)
>         at
> org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
>         at
> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:141)
>         at
> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
>         at
> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52)
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
>         at
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
>         at
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
>         at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653)
>          at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
>         at java.lang.Thread.run(Thread.java:662)
> [2013-08-27 16:55:49,168]  INFO - TenantAxisConfigurator Creating tenant
> AxisConfiguration for tenant: test.com[1]
> [2013-08-27 16:55:49,458]  INFO - UserStoreConfigurationDeployer User
> Store Configuration Deployer initiated.
> [2013-08-27 16:55:50,236]  INFO - TenantServiceBusInitializer Intializing
> the ESB Configuration for the tenant domain : test.com
> [2013-08-27 16:55:50,239]  INFO - SynapseControllerFactory Using Synapse
> home : C:\Users\TOSH\Desktop\WSO2AM~1.0\bin\..\repository\tenants\1
> [2013-08-27 16:55:50,240]  INFO - SynapseControllerFactory Using
> synapse.xml location :
> C:\Users\TOSH\Desktop\WSO2AM~1.0\bin\..\repository\tenants\1\s
> ynapse-configs\default
> [2013-08-27 16:55:50,241]  INFO - SynapseControllerFactory Using server
> name : synapse.test.com
> [2013-08-27 16:55:50,244]  INFO - SynapseControllerFactory The timeout
> handler will run every : 15s
> [2013-08-27 16:55:50,247]  INFO - Axis2SynapseController Initializing
> Synapse at : Tue Aug 27 16:55:50 IST 2013
> [2013-08-27 16:55:50,255]  INFO - CarbonSynapseController Loading the
> mediation configuration from the file system
> [2013-08-27 16:55:50,257]  INFO - MultiXMLConfigurationBuilder Building
> synapse configuration from the synapse artifact repository at :
> C:\Users\TOSH\
> Desktop\WSO2AM~1.0\bin\..\repository\tenants\1\synapse-configs\default
> [2013-08-27 16:55:50,283]  INFO - SynapseConfigurationBuilder Loaded
> Synapse configuration from the artifact repository at :
> C:\Users\TOSH\Desktop\WSO
> 2AM~1.0\bin\..\repository\tenants\1\synapse-configs\default
> [2013-08-27 16:55:50,284]  INFO - Axis2SynapseController Loading mediator
> extensions...
> [2013-08-27 16:55:50,290]  INFO - Axis2SynapseController Deploying the
> Synapse service...
> [2013-08-27 16:55:50,291]  INFO - Axis2SynapseController Deploying Proxy
> services...
> [2013-08-27 16:55:50,292]  INFO - Axis2SynapseController Deploying
> EventSources...
> [2013-08-27 16:55:50,295]  INFO - ServerManager Server ready for
> processing...
> [2013-08-27 16:55:50,343]  WARN - MediationStatisticsServiceComponent
> Couldn't find the mediation statistics store for tenant id: 1
> [2013-08-27 16:55:50,382]  INFO - PermissionUpdater Permission cache
> updated for tenant 1
> [2013-08-27 16:55:50,384] ERROR - TenantAxisUtils Error occurred while
> running deployment for tenant test.com
> 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:288)
>         at
> org.wso2.carbon.registry.core.utils.RegistryUtils.getResourceCache(RegistryUtils.java:271)
>         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.datasource.DataSourceInformationManager.populateDataSourceInformation(DataSourceInformationManager.java:62)
>         at
> org.wso2.carbon.datasource.multitenancy.DataSourceInitializer.createdConfigurationContext(DataSourceInitializer.java:73)
>         at
> org.wso2.carbon.core.multitenancy.utils.TenantAxisUtils.createTenantConfigurationContext(TenantAxisUtils.java:342)
>         at
> org.wso2.carbon.core.multitenancy.utils.TenantAxisUtils.getTenantConfigurationContext(TenantAxisUtils.java:135)
>         at
> org.wso2.carbon.rest.api.service.RestApiAdmin.getConfigContext(RestApiAdmin.java:750)
>         at
> org.wso2.carbon.rest.api.service.RestApiAdmin.getAxisConfig(RestApiAdmin.java:731)
>         at
> org.wso2.carbon.rest.api.service.RestApiAdmin.getLock(RestApiAdmin.java:713)
>         at org.wso2.carbo
>
> --
> -Ratha
> mobile: (+94)755906608
>



-- 
-Ratha
mobile: (+94)755906608

Attachment: DataSourceInitializer.java.patch
Description: Binary data

Attachment: EventAxis2ConfigurationContextObserver.java.patch
Description: Binary data

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

Reply via email to