Hi all, According to the findings up to now I presume that, whenever or whoever tries to validate the request by checking whether its coming from a webapp or not will face this issue. So this needs to be fixed I think (from the platform level). WDYT ?
On Tue, Mar 10, 2015 at 7:45 PM, Mahesh Chinthaka <[email protected]> wrote: > Hi Kasun, > Yes sure, I will debug the flow and see. > > Thanks > > On Tue, Mar 10, 2015 at 7:44 PM, Mahesh Chinthaka <[email protected]> > wrote: > >> I talked with KasunG and he said that this might be due to a problem in >> the process we load the webapp and check whether its loaded. I have >> explained in below sketch as I understood it. >> @kasunG please correct me if I've misunderstood anything here. >> >> >> According to the above flow, if the webapp is unloaded at the time of >> request comes, this kind of a issue can occur. >> >> On Tue, Mar 10, 2015 at 7:18 PM, Mahesh Chinthaka <[email protected]> >> wrote: >> >>> Hi all, >>> I think I found the root cause here. >>> >>> Actually there are two scenarios, >>> scenario1 - webapp is loaded >>> scenario2 - webapp is unloaded >>> >>> (Reason for getting this reproduced when the tenant is unloaded; is that >>> when tenant is unloaded , the webapp gets unloaded too.But actual effect is >>> unloading the webapp) >>> >>> Simply the cause is InitialContext not being set properly. >>> >>> In *ApplicationAwareCarbonJavaURLContextFactory* class, before we get >>> the initial context we check whether the request coming from a webapp. >>> If yes we return the *CarbonServerSelectorContext* else we just send >>> the *NamingContext.* >>> We have used following code to check whether the request is coming from >>> a webapp or not, As I can see its checking with class loader. >>> >>> *if (ContextBindings.isClassLoaderBound())* >>> >>> when the webapp is unloaded above code returns false. >>> >>> >>> values of contexts are as follows, >>> *CarbonServerSelectorContext* - >>> org.wso2.carbon.appfactory.ext.jndi.Context.CarbonServerSelectorContext >>> *NamingContext* - org.apache.naming.NamingContext >>> >>> Our datasource is available only in *CarbonServerSelectorContext. *So >>> whenever the *NamingContext* is returned , datasource appears to be >>> null. So application is unable to show data. Thats pretty much the case. >>> >>> I have one question. >>> >>> *Is there any other way to check the request whether its coming from a >>> webapp or not ?* If yes we can easily solve this issue. >>> >>> >>> >>> >>> >>> On Mon, Mar 9, 2015 at 12:12 PM, Mahesh Chinthaka <[email protected]> >>> wrote: >>> >>>> Hi Harsha, >>>> >>>> Frankly I dont have much idea why its happenning like that, and this >>>> happens in that way after the fix for APPFAC -2195 [1] >>>> >>>> This is the exact code segment im talking about. >>>> >>>> >>>> try { >>>> context.startTenantFlow(); >>>> >>>> >>>> context.getThreadLocalCarbonContext().setTenantId(tenantManager.getTenantId(tenantDomain)); >>>> >>>> context.getThreadLocalCarbonContext().setTenantDomain(tenantDomain); >>>> context.getThreadLocalCarbonContext().setUsername(userName); >>>> accessUrl = >>>> server.osgiService('org.wso2.carbon.appfactory.application.mgt.service.ApplicationManagementService') >>>> >>>> .getApplicationUrl(applicationKey, version, stage, tenantDomain); >>>> status = >>>> server.osgiService('org.wso2.carbon.appfactory.application.mgt.service.ApplicationManagementService') >>>> >>>> .getApplicationStatus(applicationKey, version, stage, tenantDomain); >>>> >>>> if(!status){ >>>> //fix for APPFAC-2195 >>>> //load the tenant >>>> if(accessUrl){ >>>> var xhr = new XMLHttpRequest(); >>>> xhr.open("GET",accessUrl + "",false); >>>> xhr.send(""); >>>> } >>>> >>>> status = >>>> server.osgiService('org.wso2.carbon.appfactory.application.mgt.service.ApplicationManagementService') >>>> >>>> .getApplicationStatus(applicationKey, version, stage, tenantDomain); >>>> } >>>> if(status){ >>>> url=accessUrl; >>>> } >>>> >>>> } finally { >>>> context.endTenantFlow(); >>>> } >>>> >>>> >>>> >>>> [1] - https://wso2.org/jira/browse/APPFAC-2195 >>>> >>>> >>>> On Mon, Mar 9, 2015 at 11:59 AM, Harsha Thirimanna <[email protected]> >>>> wrote: >>>> >>>>> Hi Mahesh, >>>>> >>>>> One question, >>>>> What is the meaning of deploy status false and why it try >>>>> to retrieve URl if it is not deploy ? Is that the behavior we are doing or >>>>> are there any logic behind the seen ? >>>>> >>>>> If it is required then, I think you suggestion may be good. But how it >>>>> load the tenant ? >>>>> >>>>> >>>>> *Harsha Thirimanna* >>>>> Senior Software Engineer; WSO2, Inc.; http://wso2.com >>>>> * <http://www.apache.org/>* >>>>> *email: **[email protected]* <[email protected]>* cell: +94 71 5186770 , >>>>> +94 * >>>>> *774617784twitter: **http://twitter.com/ >>>>> <http://twitter.com/afkham_azeez>* >>>>> *harshathirimannlinked-in: **http: >>>>> <http://lk.linkedin.com/in/afkhamazeez>**//www.linkedin.com/pub/harsha-thirimanna/10/ab8/122 >>>>> <http://www.linkedin.com/pub/harsha-thirimanna/10/ab8/122>* >>>>> >>>>> *Lean . Enterprise . Middleware* >>>>> >>>>> >>>>> On Sun, Mar 8, 2015 at 11:21 PM, Mahesh Chinthaka <[email protected]> >>>>> wrote: >>>>> >>>>>> Hi all, >>>>>> >>>>>> Found that when the "Launch" button is clicked in Repos n builds page >>>>>> it checks for the application deployed status, >>>>>> If deployed status is false, then it loads the tenant again and get >>>>>> access url for the app. >>>>>> If deployed status is true, then it just access the app url without >>>>>> loading the tenant. >>>>>> >>>>>> When I tried with removing the if statement and tried loading the >>>>>> tenant each time fixed the issue. >>>>>> >>>>>> What are the bad/good effects of solving this issue with above >>>>>> mentioned change ? >>>>>> >>>>>> On Sat, Mar 7, 2015 at 10:08 AM, Harsha Thirimanna <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> Hi Mahesh, >>>>>>> >>>>>>> You can set tenant unloading time for few minutes. And check that. >>>>>>> >>>>>>> >>>>>>> *Harsha Thirimanna* >>>>>>> Senior Software Engineer; WSO2, Inc.; http://wso2.com >>>>>>> * <http://www.apache.org/>* >>>>>>> *email: **[email protected]* <[email protected]>* cell: +94 71 5186770 >>>>>>> , +94 * >>>>>>> *774617784twitter: **http://twitter.com/ >>>>>>> <http://twitter.com/afkham_azeez>* >>>>>>> *harshathirimannlinked-in: **http: >>>>>>> <http://lk.linkedin.com/in/afkhamazeez>**//www.linkedin.com/pub/harsha-thirimanna/10/ab8/122 >>>>>>> <http://www.linkedin.com/pub/harsha-thirimanna/10/ab8/122>* >>>>>>> >>>>>>> *Lean . Enterprise . Middleware* >>>>>>> >>>>>>> >>>>>>> On Fri, Mar 6, 2015 at 8:35 PM, Mahesh Chinthaka <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi Danushka, >>>>>>>> >>>>>>>> Tenant domain and tenant Id are set properly at everytime. other >>>>>>>> parameters are null. ok, lets see on Monday. >>>>>>>> @Harsha, >>>>>>>> Could be, have any idea of overcoming that ?? >>>>>>>> >>>>>>>> On Fri, Mar 6, 2015 at 10:08 PM, Danushka Fernando < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> May be this is due to some missing patch. Lets discuss this monday. >>>>>>>>> >>>>>>>>> Thanks & Regards >>>>>>>>> Danushka Fernando >>>>>>>>> Software Engineer >>>>>>>>> WSO2 inc. http://wso2.com/ >>>>>>>>> Mobile : +94716332729 >>>>>>>>> >>>>>>>>> On Fri, Mar 6, 2015 at 9:43 PM, Harsha Thirimanna < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>>> Hi Mahesh, >>>>>>>>>> Is this may be tenant loading delay for the first time ? >>>>>>>>>> On Mar 6, 2015 6:51 AM, "Danushka Fernando" <[email protected]> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> When you say "CarbonContext data are empty" are they null or are >>>>>>>>>>> they not tenant data? >>>>>>>>>>> What's the value of tenant domain and tenant id of carbon >>>>>>>>>>> context? >>>>>>>>>>> >>>>>>>>>>> Thanks & Regards >>>>>>>>>>> Danushka Fernando >>>>>>>>>>> Software Engineer >>>>>>>>>>> WSO2 inc. http://wso2.com/ >>>>>>>>>>> Mobile : +94716332729 >>>>>>>>>>> >>>>>>>>>>> On Fri, Mar 6, 2015 at 8:10 PM, Mahesh Chinthaka < >>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Hi All, >>>>>>>>>>>> >>>>>>>>>>>> Im working on [1]. This is regarding appfactory sample >>>>>>>>>>>> "Customer Portal". >>>>>>>>>>>> >>>>>>>>>>>> We have a webapp that uses a datasource/database. >>>>>>>>>>>> When we deploy it and access for the first time , context data >>>>>>>>>>>> doesn't get loaded. When refreshed the browser or try to access >>>>>>>>>>>> the app for >>>>>>>>>>>> the second time (click again in 'open' url) it works fine. >>>>>>>>>>>> >>>>>>>>>>>> When I analyzed and debugged the code I found that >>>>>>>>>>>> CarbonContext data are empty. >>>>>>>>>>>> But in ApplicationAwareDataSourceRepository.java class and >>>>>>>>>>>> in CarbonContextCreatorValve.java class those context details are >>>>>>>>>>>> being set >>>>>>>>>>>> properly. >>>>>>>>>>>> >>>>>>>>>>>> When our sample webapp tries to read those values it returns >>>>>>>>>>>> null for the first time. >>>>>>>>>>>> >>>>>>>>>>>> What can be the reason for this ? >>>>>>>>>>>> >>>>>>>>>>>> [1] - https://wso2.org/jira/browse/APPFAC-2998 >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>>>>>>>>>>> WSO2, Inc | lean. enterprise. middleware. >>>>>>>>>>>> #20, Palm Grove, Colombo 03, Sri Lanka >>>>>>>>>>>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>>>>>>>>>>> Email: [email protected] | Web: www.wso2.com >>>>>>>>>>>> >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> Dev mailing list >>>>>>>>>>>> [email protected] >>>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> Dev mailing list >>>>>>>>>>> [email protected] >>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>>>>>>> WSO2, Inc | lean. enterprise. middleware. >>>>>>>> #20, Palm Grove, Colombo 03, Sri Lanka >>>>>>>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>>>>>>> Email: [email protected] | Web: www.wso2.com >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>>>>> WSO2, Inc | lean. enterprise. middleware. >>>>>> #20, Palm Grove, Colombo 03, Sri Lanka >>>>>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>>>>> Email: [email protected] | Web: www.wso2.com >>>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>>> WSO2, Inc | lean. enterprise. middleware. >>>> #20, Palm Grove, Colombo 03, Sri Lanka >>>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>>> Email: [email protected] | Web: www.wso2.com >>>> >>> >>> >>> >>> -- >>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>> WSO2, Inc | lean. enterprise. middleware. >>> #20, Palm Grove, Colombo 03, Sri Lanka >>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>> Email: [email protected] | Web: www.wso2.com >>> >> >> >> >> -- >> *Mahesh Chinthaka Vidanagama* | Software Engineer >> WSO2, Inc | lean. enterprise. middleware. >> #20, Palm Grove, Colombo 03, Sri Lanka >> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >> Email: [email protected] | Web: www.wso2.com >> > > > > -- > *Mahesh Chinthaka Vidanagama* | Software Engineer > WSO2, Inc | lean. enterprise. middleware. > #20, Palm Grove, Colombo 03, Sri Lanka > Mobile: +94 71 63 63 083 | Work: +94 112 145 345 > Email: [email protected] | Web: www.wso2.com > -- *Mahesh Chinthaka Vidanagama* | Software Engineer WSO2, Inc | lean. enterprise. middleware. #20, Palm Grove, Colombo 03, Sri Lanka Mobile: +94 71 63 63 083 | Work: +94 112 145 345 Email: [email protected] | Web: www.wso2.com
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
