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

Reply via email to