[JBoss JIRA] Created: (GTNPORTAL-1920) DB+LDAP setup: Stale cache problem when deleting user
by Marek Posolda (JIRA)
DB+LDAP setup: Stale cache problem when deleting user
-----------------------------------------------------
Key: GTNPORTAL-1920
URL: https://issues.jboss.org/browse/GTNPORTAL-1920
Project: GateIn Portal
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Identity integration
Affects Versions: 3.1.0-GA
Environment: - EPP 5.1.1.DEV01 with latest exo.portal.component.identity from GateIn trunk
- Picketlink 1.3.0.Alpha03
- MySQL 5.1
- OpenDS 2.0
- only 4 default users in DB!!!
- groups "platform" and "organization" configured as groupTypeMappings and so these groups are mapped in LDAP
- user attributes "firstName", "surname" and "email" configured as attributes in LDAP. Rest of user attributes like "createdDate", "lastLoginTime" and others are in DB
Reporter: Marek Posolda
Assignee: Boleslaw Dawidowicz
Fix For: 3.2.0-GA
There is exception in server log and broken UI when EPP is configured with DB and LDAP and there are only 4 default users in DB!
Steps to reproduce:
- Login as john
- Go to newStaff page and create new user called "testUser"
- Go to organization management portlet and we can see 5 users here (john, demo, root, mary, testUser)
- Delete testUser
Now we can see exception in server log and broken UI.
I am not sure but I think that it looks like stale cache problem, caused by StoreCacheProvider cache in LDAPIdentityStore, which is returning old number of users (it returns 5 but we have only 4 users) and so that we have NoSuchElementException .
12:09:39,555 ERROR [PortletApplicationController] Error while rendering the porlet
org.exoplatform.groovyscript.TemplateRuntimeException: Groovy template exception at DataText[pos=Position[col=1,line=60],data= for (bean in uicomponent.getBeans())] for template system:/groovy/webui/core/UIGrid.gtmpl
at org.exoplatform.groovyscript.GroovyScript.buildRuntimeException(GroovyScript.java:178)
at org.exoplatform.groovyscript.GroovyScript.render(GroovyScript.java:121)
at org.exoplatform.groovyscript.GroovyTemplate.render(GroovyTemplate.java:118)
at org.exoplatform.groovyscript.text.TemplateService.merge(TemplateService.java:117)
at org.exoplatform.webui.core.lifecycle.Lifecycle.renderTemplate(Lifecycle.java:128)
at org.exoplatform.webui.core.lifecycle.Lifecycle.processRender(Lifecycle.java:85)
at org.exoplatform.webui.core.UIComponent.processRender(UIComponent.java:144)
at org.exoplatform.webui.core.UIContainer.renderChildren(UIContainer.java:368)
at org.exoplatform.webui.core.lifecycle.UIContainerLifecycle.processRender(UIContainerLifecycle.java:35)
at org.exoplatform.webui.core.lifecycle.UIContainerLifecycle.processRender(UIContainerLifecycle.java:28)
at org.exoplatform.webui.core.UIComponent.processRender(UIComponent.java:144)
at org.exoplatform.organization.webui.component.UIListUsers.processRender(UIListUsers.java:108)
at org.exoplatform.webui.core.UIContainer.renderChildren(UIContainer.java:368)
at org.exoplatform.webui.core.UIContainer.renderChildren(UIContainer.java:358)
at org.exoplatform.organization.webui.component.UIUserManagement.processRender(UIUserManagement.java:51)
at org.exoplatform.webui.core.UIApplication.renderBlockToUpdate(UIApplication.java:141)
at org.exoplatform.webui.core.UIPortletApplication.processRender(UIPortletApplication.java:141)
at org.exoplatform.webui.application.portlet.PortletApplication.render(PortletApplication.java:253)
at org.exoplatform.webui.application.portlet.PortletApplicationController.render(PortletApplicationController.java:113)
at org.gatein.pc.portlet.impl.jsr168.PortletContainerImpl$Invoker.doFilter(PortletContainerImpl.java:569)
at org.gatein.pc.portlet.impl.jsr168.api.FilterChainImpl.doFilter(FilterChainImpl.java:159)
at org.gatein.pc.portlet.impl.jsr168.api.FilterChainImpl.doFilter(FilterChainImpl.java:80)
at org.gatein.pc.portlet.impl.jsr168.PortletContainerImpl.dispatch(PortletContainerImpl.java:506)
at org.gatein.pc.portlet.container.ContainerPortletDispatcher.invoke(ContainerPortletDispatcher.java:42)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.gatein.pc.portlet.aspects.EventPayloadInterceptor.invoke(EventPayloadInterceptor.java:197)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.gatein.wsrp.payload.WSRPEventPayloadInterceptor.invoke(WSRPEventPayloadInterceptor.java:153)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.gatein.pc.portlet.aspects.RequestAttributeConversationInterceptor.invoke(RequestAttributeConversationInterceptor.java:119)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.gatein.pc.portlet.aspects.CCPPInterceptor.invoke(CCPPInterceptor.java:65)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.gatein.pc.bridge.BridgeInterceptor.invoke(BridgeInterceptor.java:49)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.gatein.pc.portlet.aspects.SessionInvalidatorInterceptor.invoke(SessionInvalidatorInterceptor.java:55)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.gatein.pc.portlet.aspects.ContextDispatcherInterceptor.access$001(ContextDispatcherInterceptor.java:49)
at org.gatein.pc.portlet.aspects.ContextDispatcherInterceptor$1.doCallback(ContextDispatcherInterceptor.java:123)
at org.gatein.wci.command.CommandDispatcher$CallbackCommand.execute(CommandDispatcher.java:82)
at sun.reflect.GeneratedMethodAccessor463.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.gatein.wci.command.CommandServlet.doGet(CommandServlet.java:135)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:638)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:543)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:480)
at org.gatein.wci.command.CommandServlet.include(CommandServlet.java:84)
at org.gatein.wci.command.CommandDispatcher.include(CommandDispatcher.java:58)
at org.gatein.wci.tomcat.TC6ServletContainerContext.include(TC6ServletContainerContext.java:87)
at org.gatein.wci.impl.DefaultServletContainer.include(DefaultServletContainer.java:198)
at org.gatein.pc.portlet.impl.spi.AbstractServerContext.dispatch(AbstractServerContext.java:69)
at org.gatein.pc.portlet.aspects.ContextDispatcherInterceptor.invoke(ContextDispatcherInterceptor.java:77)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.gatein.pc.portlet.aspects.SecureTransportInterceptor.invoke(SecureTransportInterceptor.java:69)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.gatein.pc.portlet.aspects.ValveInterceptor.invoke(ValveInterceptor.java:75)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.gatein.pc.portlet.container.ContainerPortletInvoker.invoke(ContainerPortletInvoker.java:117)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.gatein.pc.portlet.state.producer.ProducerPortletInvoker.invoke(ProducerPortletInvoker.java:231)
at org.gatein.pc.federation.impl.FederatedPortletInvokerService.invoke(FederatedPortletInvokerService.java:151)
at org.gatein.pc.federation.impl.FederatingPortletInvokerService.invoke(FederatingPortletInvokerService.java:211)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.gatein.pc.portlet.aspects.PortletCustomizationInterceptor.invoke(PortletCustomizationInterceptor.java:76)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.gatein.pc.portlet.aspects.ConsumerCacheInterceptor.invoke(ConsumerCacheInterceptor.java:162)
at org.gatein.pc.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:89)
at org.exoplatform.portal.webui.application.UIPortlet.invoke(UIPortlet.java:1039)
at org.exoplatform.portal.webui.application.UIPortletLifecycle.processRender(UIPortletLifecycle.java:203)
at org.exoplatform.portal.webui.application.UIPortletLifecycle.processRender(UIPortletLifecycle.java:62)
at org.exoplatform.webui.core.UIComponent.processRender(UIComponent.java:144)
at org.exoplatform.portal.webui.workspace.UIPortalApplication.processRender(UIPortalApplication.java:592)
at org.exoplatform.portal.application.PortalRequestHandler.execute(PortalRequestHandler.java:117)
at org.exoplatform.web.WebAppController.service(WebAppController.java:161)
at org.exoplatform.portal.application.PortalController.onService(PortalController.java:127)
at org.exoplatform.container.web.AbstractHttpServlet.service(AbstractHttpServlet.java:132)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.web.filter.ExtensibleFilter$ExtensibleFilterChain.doFilter(ExtensibleFilter.java:112)
at org.exoplatform.web.filter.ExtensibleFilter.doFilter(ExtensibleFilter.java:84)
at org.exoplatform.web.filter.GenericFilter.doFilter(GenericFilter.java:66)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.web.CacheUserProfileFilter.doFilter(CacheUserProfileFilter.java:72)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.frameworks.jcr.web.ThreadLocalSessionProviderInitializedFilter.doFilter(ThreadLocalSessionProviderInitializedFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.services.security.web.SetCurrentIdentityFilter.doFilter(SetCurrentIdentityFilter.java:90)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.portal.application.localization.LocalizationFilter.doFilter(LocalizationFilter.java:179)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.web.login.ClusteredSSOFilter.doFilter(ClusteredSSOFilter.java:73)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.container.web.PortalContainerFilter.doFilter(PortalContainerFilter.java:69)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:183)
at org.jboss.web.tomcat.service.session.ClusteredSessionValve.handleRequest(ClusteredSessionValve.java:135)
at org.jboss.web.tomcat.service.session.ClusteredSessionValve.invoke(ClusteredSessionValve.java:94)
at org.jboss.web.tomcat.service.session.JvmRouteValve.invoke(JvmRouteValve.java:88)
at org.jboss.web.tomcat.service.session.LockingValve.invoke(LockingValve.java:62)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:95)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.jboss.web.tomcat.service.sso.ClusteredSingleSignOn.invoke(ClusteredSingleSignOn.java:672)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:599)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:451)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.util.NoSuchElementException
at java.util.AbstractList$Itr.next(AbstractList.java:350)
at java.util.SubList$1.next(AbstractList.java:696)
at UIGrid.run(UIGrid.gtmpl:60)
at org.exoplatform.groovyscript.GroovyScript.render(GroovyScript.java:111)
... 130 more
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 1 month
[JBoss JIRA] Created: (GTNPORTAL-1909) adding a null as an argument to EventListeners in Organization Service API should be forbidden
by Viliam Rockai (JIRA)
adding a null as an argument to EventListeners in Organization Service API should be forbidden
----------------------------------------------------------------------------------------------
Key: GTNPORTAL-1909
URL: https://issues.jboss.org/browse/GTNPORTAL-1909
Project: GateIn Portal
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Identity integration
Reporter: Viliam Rockai
Assignee: Boleslaw Dawidowicz
you can add a null object through add*EventListener(*EventListener e) in nearly all handlers:
userHandler_ = service_.getUserHandler();
profileHandler_ = service_.getUserProfileHandler();
groupHandler_ = service_.getGroupHandler();
membershipHandler_ = service_.getMembershipHandler();
and that will mess the code later by throwing NullPointerException, when calling other methods from the API - I think it should throw NullPointerException right away.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 1 month
[JBoss JIRA] Created: (GTNPORTAL-1910) UIFormCheckBoxInput.setValue() doesn't parse String
by Toshiya Kobayashi (JIRA)
UIFormCheckBoxInput.setValue() doesn't parse String
---------------------------------------------------
Key: GTNPORTAL-1910
URL: https://issues.jboss.org/browse/GTNPORTAL-1910
Project: GateIn Portal
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: WebUI
Affects Versions: 3.1.0-GA
Reporter: Toshiya Kobayashi
If you call org.exoplatform.webui.form.UIFormCheckBoxInput.setValue() with a String "true", it will be evaluated as "false" because it parses only Boolean, not String.
====
public UIFormInput setValue(T value)
{
if (value == null)
return super.setValue(value);
if (value instanceof Boolean)
{
checked = ((Boolean)value).booleanValue();
}
else if (boolean.class.isInstance(value))
{
checked = boolean.class.cast(value);
}
typeValue_ = (Class<T>)value.getClass();
return super.setValue(value);
}
====
The caller may be changed to pass a Boolean but fixing UIFormCheckBoxInput to accept a String would be an essential resolution.
Actually org.exoplatform.ecm.webui.component.explorer.popup.admin.UIPropertyForm in WCM(Site Publisher) is hitting this issue.
Please look at JBEPP-958 for reproduce steps with Site Publisher and the patch file which can be applied to gatein trunk.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 1 month
[JBoss JIRA] Created: (GTNPORTAL-1866) Issue with picketlink cache - cached items are never evicted
by Marek Posolda (JIRA)
Issue with picketlink cache - cached items are never evicted
------------------------------------------------------------
Key: GTNPORTAL-1866
URL: https://issues.jboss.org/browse/GTNPORTAL-1866
Project: GateIn Portal
Issue Type: Bug
Security Level: Public (Everyone can see)
Environment: EPP 5.1.0.GA, Picketlink version is 1.1.7.GA
Reporter: Marek Posolda
Assignee: Boleslaw Dawidowicz
I think there is issue related to expiration of JBoss cache entries, which are used for picketlink cache. Right now, JBoss cache in server/default/deploy/gatein.ear/02portal.war/WEB-INF/organization/picketlink-idm/jboss-cache.xml and jboss-cache-cluster.xml is configured to use Expiration algorithm:
<eviction wakeUpInterval="5000">
<default algorithmClass="org.jboss.cache.eviction.ExpirationAlgorithm"
eventQueueSize="1000000">
<property name="maxNodes" value="100000" />
<property name="timeToLive" value="120000" />
<property name="warnNoExpirationKey" value="false" />
</default>
</eviction>
Problem is that ExpirationAlgorithm requires support in Java code for eviction, which is mentioned in http://docs.jboss.org/jbosscache/3.1.0.CR1/userguide_en/html/eviction_pol... . There is need to call something like:
// sets the expiry time for a node
cache.getRoot().addChild(fqn1).put(ExpirationConfiguration.EXPIRATION_KEY, future);
otherwise node is never evicted periodically. And I am seeing that this is not called in Picketlink code and GateIn+Picketlink integration code. And I am seeing in JMX that nodes are never evicted automatically after some time. Fact is that entries are cleared from cache only by trigger of some events (For example after update of some user are entries for this user evicted from cache).
Last week I was working on application for adding users into GateIn IDM database only with plain SQL. And when I create users, I am not seeing them in organization management portlet because query for get all users is never evicted from cache. I need to restart my GateIn portal or trigger JMX eviction of picketlink cache (Operation "invalidateAll" on MBean exo:name=plidmcache,portal="portal",service=PicketLinkIDMCacheService .
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 1 month
[JBoss JIRA] Created: (GTNPORTAL-1824) We should implement all Unsupported method in UserHandler interface
by Khoi Nguyen (JIRA)
We should implement all Unsupported method in UserHandler interface
-------------------------------------------------------------------
Key: GTNPORTAL-1824
URL: https://issues.jboss.org/browse/GTNPORTAL-1824
Project: GateIn Portal
Issue Type: Task
Security Level: Public (Everyone can see)
Reporter: Khoi Nguyen
Currently, some methods in UserHandler have been deprecated and suggested to use other method such as
* getUserPageList -> findAllUsers
* findUsers -> findUsersByQuery
* findUsersByGroup -> findUsersByGroupId
Unfortunately, these methods haven't been implemented yet and throw UnsupportedOperationException, there're very confusing for developer who want to use this API, so we must implement them as soon as possible.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 1 month