[JBoss JIRA] (GTNPORTAL-3243) Exceptions are swallowed in PicketLinkIDMOrganizationServiceImpl flush and endRequest
by Martin Weiler (JIRA)
[ https://issues.jboss.org/browse/GTNPORTAL-3243?page=com.atlassian.jira.pl... ]
Martin Weiler updated GTNPORTAL-3243:
-------------------------------------
Git Pull Request: https://github.com/gatein/gatein-portal/pull/632
> Exceptions are swallowed in PicketLinkIDMOrganizationServiceImpl flush and endRequest
> -------------------------------------------------------------------------------------
>
> Key: GTNPORTAL-3243
> URL: https://issues.jboss.org/browse/GTNPORTAL-3243
> Project: GateIn Portal
> Issue Type: Bug
> Components: Identity integration
> Affects Versions: 3.6.0.Final
> Reporter: Martin Weiler
> Assignee: Marek Posolda
>
> IDM operations are invoked from a WS facade in our environment, and not from the GUI. Therefore, we have overridden PicketLinkIDMOrganizationServiceImpl.recoverFromIDMError to just let any errors bubble up and let the upper layer handle it, instead of rolling back + restarting the transaction.
> But here's the place the exception handling is not working as expected. The issue is in PicketLinkIDMOrganizationServiceImpl.flush():
> {code}
> public void flush() {
> try {
> if (configuration.isUseJTA()) {
> if (traceLoggingEnabled) {
> log.trace("Flushing UserTransaction in method flush");
> }
> // Complete restart of JTA transaction don't have good performance. So we will only sync identitySession (same
> // as for non-jta environment)
> // finishJTATransaction();
> // beginJTATransaction();
> if (jtaTransactionLifecycleService.getUserTransaction().getStatus() == Status.STATUS_ACTIVE) {
> idmService_.getIdentitySession().save();
> }
> } else {
> try {
> if (idmService_.getIdentitySession().getTransaction().isActive()) {
> 166: idmService_.getIdentitySession().save();
> }
> } catch (Exception e) {
> log.error(e.getMessage(), e);
> 170: recoverFromIDMError(e);
> }
> }
> 174: } catch (Exception e) {
> 175: log.error(e.getMessage(), e);
> }
> }
> {code}
> Let's assume there is an exception at session.save() in line 166. This exception is then handled by the recoverFromIDMError method in line 170. In our environment, this method is overridden and throws an Exception.
> But the initial goal of overriding this method, which was to have this exception propagated to the caller, is not reached here, as there is an outer try..catch block in the PicketLinkIDMOrganizationServiceImpl.flush() method which just logs the error.
> The outer try..catch block should be removed in flush() and endRequest().
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 4 months
[JBoss JIRA] (GTNPORTAL-3243) Exceptions are swallowed in PicketLinkIDMOrganizationServiceImpl flush and endRequest
by Martin Weiler (JIRA)
Martin Weiler created GTNPORTAL-3243:
----------------------------------------
Summary: Exceptions are swallowed in PicketLinkIDMOrganizationServiceImpl flush and endRequest
Key: GTNPORTAL-3243
URL: https://issues.jboss.org/browse/GTNPORTAL-3243
Project: GateIn Portal
Issue Type: Bug
Components: Identity integration
Affects Versions: 3.6.0.Final
Reporter: Martin Weiler
Assignee: Marek Posolda
IDM operations are invoked from a WS facade in our environment, and not from the GUI. Therefore, we have overridden PicketLinkIDMOrganizationServiceImpl.recoverFromIDMError to just let any errors bubble up and let the upper layer handle it, instead of rolling back + restarting the transaction.
But here's the place the exception handling is not working as expected. The issue is in PicketLinkIDMOrganizationServiceImpl.flush():
{code}
public void flush() {
try {
if (configuration.isUseJTA()) {
if (traceLoggingEnabled) {
log.trace("Flushing UserTransaction in method flush");
}
// Complete restart of JTA transaction don't have good performance. So we will only sync identitySession (same
// as for non-jta environment)
// finishJTATransaction();
// beginJTATransaction();
if (jtaTransactionLifecycleService.getUserTransaction().getStatus() == Status.STATUS_ACTIVE) {
idmService_.getIdentitySession().save();
}
} else {
try {
if (idmService_.getIdentitySession().getTransaction().isActive()) {
166: idmService_.getIdentitySession().save();
}
} catch (Exception e) {
log.error(e.getMessage(), e);
170: recoverFromIDMError(e);
}
}
174: } catch (Exception e) {
175: log.error(e.getMessage(), e);
}
}
{code}
Let's assume there is an exception at session.save() in line 166. This exception is then handled by the recoverFromIDMError method in line 170. In our environment, this method is overridden and throws an Exception.
But the initial goal of overriding this method, which was to have this exception propagated to the caller, is not reached here, as there is an outer try..catch block in the PicketLinkIDMOrganizationServiceImpl.flush() method which just logs the error.
The outer try..catch block should be removed in flush() and endRequest().
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 4 months
[JBoss JIRA] (GTNPORTAL-3220) Show wrong message when uncheck show publication date in add/edit node
by Trong Tran (JIRA)
[ https://issues.jboss.org/browse/GTNPORTAL-3220?page=com.atlassian.jira.pl... ]
Trong Tran updated GTNPORTAL-3220:
----------------------------------
Labels: backlogs (was: )
> Show wrong message when uncheck show publication date in add/edit node
> ----------------------------------------------------------------------
>
> Key: GTNPORTAL-3220
> URL: https://issues.jboss.org/browse/GTNPORTAL-3220
> Project: GateIn Portal
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Affects Versions: 3.6.1.Final
> Reporter: Son Tran
> Assignee: Son Tran
> Priority: Minor
> Labels: backlogs
>
> Add/edit a node
> In Page Node Setting tab:
> Check Show publication date
> Set Start Publication Date (02/25/2013 15:30:27) is greater than End Publication Date (02/24/2013 15:30:29)
> Uncheck show publication date
> Click Save
> => Show message alert :"The end date must be after the start date." -> NOK
> Expected output: The Publication date don't save after set publication date/time for node
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 4 months
[JBoss JIRA] (GTNPORTAL-3156) NullPointerException when rendering portlet in method UIPortlet.getSuitedTheme()
by Adam Kovari (JIRA)
[ https://issues.jboss.org/browse/GTNPORTAL-3156?page=com.atlassian.jira.pl... ]
Adam Kovari commented on GTNPORTAL-3156:
----------------------------------------
Updated the PR based on Tran's suggestions.
> NullPointerException when rendering portlet in method UIPortlet.getSuitedTheme()
> --------------------------------------------------------------------------------
>
> Key: GTNPORTAL-3156
> URL: https://issues.jboss.org/browse/GTNPORTAL-3156
> Project: GateIn Portal
> Issue Type: Feature Request
> Security Level: Public(Everyone can see)
> Components: Common integration, WebUI
> Affects Versions: 3.5.3.Final
> Environment: RHEL 5.9 64bits, Oracle/Sun jdk 1.7.0
> Reporter: Regis Mazur
> Priority: Minor
> Fix For: 3.5.3.Final
>
>
> During rendering of portal page an NPE error occurred when the portlet uicomponent try to retrieve theme (UIPortlet.getSuitedTheme() method).
> It can sometimes be reproduced when there are concurrent navigation requests (click around on the nav menu without waiting for a response).
> After investigation, it seems that the uicomponent tree is broken in this case and UIPortalApplication (null in this case) cannot be retrieve via the getAncestorOfType(UIPortalApplication.class) method.
> If you look at the content of uicomponent tree (see the "Expected results" and "Actual results"), you will see that standard portal uicomponent(UIPageBody,UIPortal,UISiteBody,UIViewWS,UIWorkingWorkspace,UIPortalApplication) are not in the tree.
> We reproduced the case in dev environment when there are concurrent navigation requests (click around around the nav menu without waiting for a response).
> It seems to be a concurrency issue in the portal itself.
> For the moment we fix the NPE in the UIPortlet.gtmpl (By retrieving the UIPortalApplication from the RequestContext instead of parsing the full uicomponent tree) but we don't fix the root cause and the possible side effects.
> Version-Release number of selected component (if applicable):
> GateIn 3.5.2.Final-redhat-4
> How reproducible:
> Not always. Mostly while testing within customer test environment where deployed portlets model is more significant in term of size and complexity.
> Steps to Reproduce:
> Actually we tried but we can't reproduce it locally using JSF2.1 Quickstart portlet calling same portlet tree. This only happens when using "full" application which has a lot of other dependencies.
> 1.
> 2.
> 3.
> Actual results:
> 16:33:10,614 INFO [stdout] (http-localhost/127.0.0.1:8080-5) Looking for UIPortalApplication parent
> 16:33:10,614 INFO [stdout] (http-localhost/127.0.0.1:8080-5) parent : null - id : queries
> 16:33:10,614 INFO [stdout] (http-localhost/127.0.0.1:8080-5) parent : null - id : row1
> 16:33:10,614 INFO [stdout] (http-localhost/127.0.0.1:8080-5) parent : pp_portal_Dashboard - id : pp_portal_Dashboard
> 16:33:10,614 INFO [stdout] (http-localhost/127.0.0.1:8080-5) parent : pp_portal_Dashboard - id : 22572705
> 16:34:11,868 INFO [stdout] (http-localhost/127.0.0.1:8080-5) Looking for UIPortalApplication parent
> 16:34:11,868 INFO [stdout] (http-localhost/127.0.0.1:8080-5) parent : null - id : activities
> 16:34:11,868 INFO [stdout] (http-localhost/127.0.0.1:8080-5) parent : null - id : row2
> 16:34:11,868 INFO [stdout] (http-localhost/127.0.0.1:8080-5) parent : pp_portal_Dashboard - id : pp_portal_Dashboard
> 16:34:11,868 INFO [stdout] (http-localhost/127.0.0.1:8080-5) parent : pp_portal_Dashboard - id : 22572705
> 16:34:28,807 INFO [stdout] (http-localhost/127.0.0.1:8080-5) Looking for UIPortalApplication parent
> 16:34:28,807 INFO [stdout] (http-localhost/127.0.0.1:8080-5) parent : null - id : news
> 16:34:28,807 INFO [stdout] (http-localhost/127.0.0.1:8080-5) parent : null - id : row2
> 16:34:28,807 INFO [stdout] (http-localhost/127.0.0.1:8080-5) parent : pp_portal_Dashboard - id : pp_portal_Dashboard
> 16:34:28,807 INFO [stdout] (http-localhost/127.0.0.1:8080-5) parent : pp_portal_Dashboard - id : 22572705
> Expected results:
> 16:32:56,597 INFO [stdout] (http-localhost/127.0.0.1:8080-3) Looking for UIPortalApplication parent
> 16:32:56,597 INFO [stdout] (http-localhost/127.0.0.1:8080-3) parent : null - id : tasks
> 16:32:56,597 INFO [stdout] (http-localhost/127.0.0.1:8080-3) parent : null - id : row1
> 16:32:56,597 INFO [stdout] (http-localhost/127.0.0.1:8080-3) parent : pp_portal_Dashboard - id : pp_portal_Dashboard
> 16:32:56,597 INFO [stdout] (http-localhost/127.0.0.1:8080-3) parent : pp_portal_Dashboard - id : 22572705
> 16:32:56,597 INFO [stdout] (http-localhost/127.0.0.1:8080-3) parent : UIPageBody - id : UIPageBody
> 16:32:56,597 INFO [stdout] (http-localhost/127.0.0.1:8080-3) parent : clearstream - id : UIPortal
> 16:32:56,597 INFO [stdout] (http-localhost/127.0.0.1:8080-3) parent : UISiteBody - id : UISiteBody
> 16:32:56,597 INFO [stdout] (http-localhost/127.0.0.1:8080-3) parent : null - id : 17689309
> 16:32:56,598 INFO [stdout] (http-localhost/127.0.0.1:8080-3) parent : UIComponentDecorator - id : UIViewWS
> 16:32:56,598 INFO [stdout] (http-localhost/127.0.0.1:8080-3) parent : UIWorkingWorkspace - id : UIWorkingWorkspace
> 16:32:56,598 INFO [stdout] (http-localhost/127.0.0.1:8080-3) parent : UIPortalApplication - id : UIPortalApplication
> 16:32:56,598 INFO [stdout] (http-localhost/127.0.0.1:8080-3) parent found : UIPortalApplication - id : UIPortalApplication
> Additional info:
> We think this caused by uiPortal.getAncestorOfType(UIPortalApplication.class) from UIComponent class which can't get the parent.
> We've got an actual proposed solution which is to use Util.getUIPortalApplication() instead to get the same thing (getSkin).
> Here is below the code snippet used:
> -----------------------
> String theme = null;
>
> try{
> theme = uicomponent.getSuitedTheme(null);
> } catch (RuntimeException e) {
> Map<String, String> themeMap = uicomponent.stringToThemeMap(uicomponent.getTheme());
> if (themeMap.containsKey(uiPortalApp.getSkin())) {
> theme = themeMap.get(uiPortalApp.getSkin());
> }
> else theme= uicomponent.DEFAULT_THEME.split(":")[1];
> }
> ----------------------
> While doing some searches, we found out Exo people have also used similar approach (refer to URL link below).
> http://lists.jboss.org/pipermail/gatein-commits/2010-November/005095.html
> Within Server.log we've got:
> Caused by: java.lang.NullPointerException
> at org.exoplatform.portal.webui.application.UIPortlet.getSuitedTheme(UIPortlet.java:270) [exo.portal.webui.portal-3.5.2.Final-redhat-4.jar:3.5.2.Final-redhat-4]
> at sun.reflect.GeneratedMethodAccessor1549.invoke(Unknown Source) [:1.7.0_06]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_06]
> at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_06]
> at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229) [groovy-all-1.7.6.jar:1.7.6]
> at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52) [groovy-all-1.7.6.jar:1.7.6]
> at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124) [groovy-all-1.7.6.jar:1.7.6]
> at UIPortlet.run(UIPortlet.gtmpl:96) at org.exoplatform.groovyscript.GroovyScript.render(GroovyScript.java:99) [exo.portal.component.scripting-3.5.2.Final-redhat-4.jar:3.5.2.Final-redhat-4]
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 4 months