Thanks Azeez and Shariq for the inputs :)

On Thu, Jan 10, 2013 at 10:25 AM, Afkham Azeez <[email protected]> wrote:

>
>
> On Thu, Jan 10, 2013 at 10:14 AM, Muhammed Shariq <[email protected]> wrote:
>
>> On Thu, Jan 10, 2013 at 10:01 AM, Afkham Azeez <[email protected]> wrote:
>>
>>> However, in cases where you are sure that the ThreadLocal CC is
>>> available, you must use getThreadLocalCarbonContext because that method is
>>> much more efficient than getCarbonContext. What I feel is, we should ensure
>>> that every thread contains the ThreadLocal CC, which means we will no
>>> longer need the getCurrentContext method. At that point, from
>>> getCurrentContext, we will just call getThreadLocalCarbonContext.
>>
>>
>> This is what SInthuja did sometime ago (giving priority to the
>> ThreadLocal CC), but the caused some issue as Senaka explained in his
>> detailed mail .. Also I was trying to recall why I did some  changes in
>> CarbonTomcatValve, and that too was fixing the same issue (username being
>> null!), I fixed it by setting the username to the CC from the session, this
>> also was causing a perf issue cz of the getSession() gets called for every
>> request ..! Guess we need to look into the use of CC api in a bit more
>> detail ..
>>
>
> You fix was probably the right one. The problem should be unnecessarily
> accessing the session. Instead, what you could have done was, when someone
> called getUserName, at that point, get the session, and retrieve the
> username & set it as an attribute in the CC. In subsequent calls to the the
> same CC, you could simply return that attribute.
>
>
>>
>>> Azeez
>>>
>>> On Wed, Jan 9, 2013 at 4:19 PM, Dimuthu Leelarathne 
>>> <[email protected]>wrote:
>>>
>>>> Hi Dulanja,
>>>>
>>>> It is correct to use CurrentCarbonContext instead of
>>>> ThreadLocalCarbonContext. You can read the mail titled "UserRegistry sends
>>>> null to JDBCAuthorizationManager" from archives.  Basically this is the
>>>> code that finds you the correct  CurrentCarbonContext. So correct thing is
>>>> to first get CarbonContext from MessageContext and if it is not available
>>>> try the TreadLocal one.
>>>>
>>>> public static CarbonContextDataHolder getCurrentCarbonContextHolder() {
>>>>         try {
>>>>             MessageContext messageContext =
>>>> MessageContext.getCurrentMessageContext();
>>>>             if (messageContext != null) {
>>>>                 return getCurrentCarbonContextHolder(messageContext);
>>>>             } else {
>>>>                 return
>>>> getCurrentCarbonContextHolder((ConfigurationContext) null);
>>>>             }
>>>>         } catch (NullPointerException ignore) {
>>>>             // This is thrown when the message context is not
>>>> initialized
>>>>             // So return the Threadlocal
>>>>              return getThreadLocalCarbonContextHolder();
>>>>         } catch (NoClassDefFoundError ignore) {
>>>>             // There can be situations where the CarbonContext is
>>>> accessed, when there is no Axis2
>>>>             // library on the classpath.
>>>>             return getThreadLocalCarbonContextHolder();
>>>>         }
>>>>     }
>>>>
>>>> thanks,
>>>> dimuthu
>>>>
>>>>
>>>> On Wed, Jan 9, 2013 at 2:15 PM, Dulanja Liyanage <[email protected]>wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Appreciate if you can guide me whether it's safe/appropriate to use
>>>>> the CurrentContext rather than the ThreadLocalCarbonContext, to get the
>>>>> username and tenant domain.
>>>>>
>>>>> I'm not much knowledgeable about the design, but I feel using it will
>>>>> be "plastering" the root cause.
>>>>>
>>>>> Thanks,
>>>>> Dulanja
>>>>>
>>>>> On Wed, Jan 9, 2013 at 12:18 PM, Dulanja Liyanage <[email protected]>wrote:
>>>>>
>>>>>> Hi Shariq,
>>>>>>
>>>>>> I did as you suggested and now the username is available.
>>>>>>
>>>>>> What I'm not sure is how appropriate/safe this is.
>>>>>>
>>>>>> Thanks for the help.
>>>>>>
>>>>>> Regards,
>>>>>> Dulanja
>>>>>>
>>>>>>
>>>>>> On Tue, Jan 8, 2013 at 6:17 PM, Dulanja Liyanage <[email protected]>wrote:
>>>>>>
>>>>>>> Hi Shariq,
>>>>>>>
>>>>>>> I will try that. Thanks!
>>>>>>>
>>>>>>> Dulanja
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Jan 8, 2013 at 6:12 PM, Muhammed Shariq <[email protected]>wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> This looks like an issue I encountered sometime back. We had to
>>>>>>>> revert the fixes I did in TomcatValve cz it was causing some other 
>>>>>>>> issue ..
>>>>>>>> Can you try CarbonContext.getCurrentContext.getUsername() and see what
>>>>>>>> happens .. AFAIR its getUsername simple does a return .. we should fix 
>>>>>>>> it
>>>>>>>> to check if username is null and if so set it properly .. usually that 
>>>>>>>> is
>>>>>>>> the behavior but there are some  edge cases it seem ...
>>>>>>>>
>>>>>>>> On Tue, Jan 8, 2013 at 3:53 PM, Dulanja Liyanage 
>>>>>>>> <[email protected]>wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I'm testing IS 4.1.0 running on Carbon 4.0.6. While debugging an
>>>>>>>>> issue, I encountered the $subject.
>>>>>>>>>
>>>>>>>>> I logged in as 'admin', so, the username should return as such.
>>>>>>>>> But it returns 'null'.
>>>>>>>>>
>>>>>>>>> However the
>>>>>>>>> PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain()
>>>>>>>>> returns 'carbon.super' as expected.
>>>>>>>>>
>>>>>>>>> I'm still debugging this and trying to figure out how
>>>>>>>>> CarbonContext works in threads. If someone is already aware of a
>>>>>>>>> reason/solution for this it will save time. :)
>>>>>>>>>
>>>>>>>>> Thanks!
>>>>>>>>> Dulanja
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Dev mailing list
>>>>>>>>> [email protected]
>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Thanks,
>>>>>>>> Shariq.
>>>>>>>> Phone: +94 777 202 225
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> 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
>>>>
>>>>
>>>
>>>
>>> --
>>> *Afkham Azeez*
>>> Director of Architecture; WSO2, Inc.; http://wso2.com
>>> Member; Apache Software Foundation; http://www.apache.org/
>>> * <http://www.apache.org/>**
>>> email: **[email protected]* <[email protected]>* cell: +94 77 3320919
>>> blog: **http://blog.afkham.org* <http://blog.afkham.org>*
>>> twitter: **http://twitter.com/afkham_azeez*<http://twitter.com/afkham_azeez>
>>> *
>>> linked-in: **http://lk.linkedin.com/in/afkhamazeez*
>>> *
>>> *
>>> *Lean . Enterprise . Middleware*
>>>
>>> _______________________________________________
>>> Dev mailing list
>>> [email protected]
>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>
>>>
>>
>>
>> --
>> Thanks,
>> Shariq.
>> Phone: +94 777 202 225
>>
>
>
>
> --
> *Afkham Azeez*
> Director of Architecture; WSO2, Inc.; http://wso2.com
> Member; Apache Software Foundation; http://www.apache.org/
> * <http://www.apache.org/>**
> email: **[email protected]* <[email protected]>* cell: +94 77 3320919
> blog: **http://blog.afkham.org* <http://blog.afkham.org>*
> twitter: **http://twitter.com/afkham_azeez*<http://twitter.com/afkham_azeez>
> *
> linked-in: **http://lk.linkedin.com/in/afkhamazeez*
> *
> *
> *Lean . Enterprise . Middleware*
>
> _______________________________________________
> 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

Reply via email to