Error renaming dashboard on case-insensitive database
esmith1 May 9, 2008 9:20 AMWe are using an MSSQL 2005 db. Portal 2.6.4/AS 4.2.2. When I first setup the db as case sensistive, the portal blew up after restart during some queries that could not find a table because the query was using the wrong case. I switched the db to case insensitive (sql_latin1_general_cp1_ci_as) and have been fine for a month. Today a user tried to rename an existing Dashboard Tab/Page to the same name but with a slight case change. As you can see from this WARN message:
The configured database is probably case-insensitive. could not insert: [org.jboss.portal.core.impl.model.portal.ObjectNode]
the portal tried to handle the situation, however the user then received a 500 Servlet Exception for org.hibernate.SessionException: Session is closed!
The only JIRA that was close to this was
http://jira.jboss.com/jira/browse/JBPORTAL-1840.
Should I make a new JIRA entry for this?
2008-05-09 08:48:52,996 TRACE [org.jboss.portal.security.impl.jacc.JACCPortalAuthorizationManager] hasPermission:result=true 2008-05-09 08:48:53,012 DEBUG [org.jboss.portal.core.impl.model.portal.ObjectNode] Creating child of path='dashboard:/wtadmin' with path='dashboard:/wtadmin/HIGHLIGHT Text Only' 2008-05-09 08:48:53,043 WARN [org.hibernate.util.JDBCExceptionReporter] SQL Error: 2627, SQLState: 23000 2008-05-09 08:48:53,043 ERROR [org.hibernate.util.JDBCExceptionReporter] Violation of UNIQUE KEY constraint 'UQ__JBP_OBJECT_NODE__662B2B3B'. Cannot insert duplicate key in object 'dbo.JBP_OBJECT_NODE'. 2008-05-09 08:48:53,043 WARN [org.jboss.portal.core.impl.model.portal.PersistentPortalObjectContainer] The configured database is probably case-insensitive. could not insert: [org.jboss.portal.core.impl.model.portal.ObjectNode] 2008-05-09 08:48:53,043 WARN [org.hibernate.engine.loading.LoadContexts] fail-safe cleanup (collections) : org.hibernate.engine.loading.CollectionLoadContext@4120ae<rs=net.sourceforge.jtds.jdbc.JtdsResultSet@91834> 2008-05-09 08:48:53,043 TRACE [org.jboss.portal.security.impl.jacc.JACCPortalAuthorizationManager] Principal name: wtadmin 2008-05-09 08:48:53,043 TRACE [org.jboss.portal.security.impl.jacc.JACCPortalAuthorizationManager] Principal name: Roles 2008-05-09 08:48:53,043 TRACE [org.jboss.portal.security.impl.jacc.JACCPortalAuthorizationManager] Principal name: CallerPrincipal 2008-05-09 08:48:53,043 TRACE [org.jboss.portal.security.impl.jacc.JACCPortalAuthorizationManager] hasPermission:name=instancepermissionuri=DashboardConfigPortletInstance::actions=create,destroy,customize::type=instance 2008-05-09 08:48:53,043 TRACE [org.jboss.portal.security.impl.jacc.JACCPortalAuthorizationManager] Internal check. Contains role: HBIRole 2008-05-09 08:48:53,043 TRACE [org.jboss.portal.security.impl.jacc.JACCPortalAuthorizationManager] Internal check. Contains role: User 2008-05-09 08:48:53,043 TRACE [org.jboss.portal.security.impl.jacc.JACCPortalAuthorizationManager] Internal check. Contains role: Admin 2008-05-09 08:48:53,043 TRACE [org.jboss.portal.security.impl.jacc.JACCPortalAuthorizationManager] Internal check. Contains role: SimpleRole 2008-05-09 08:48:53,043 TRACE [org.jboss.portal.security.impl.jacc.JACCPortalAuthorizationManager] Internal check. Contains role: Authenticated 2008-05-09 08:48:53,043 TRACE [org.jboss.portal.security.impl.jacc.JACCPortalAuthorizationManager] hasPermission:result=true 2008-05-09 08:48:53,043 DEBUG [org.jboss.portal.portlet.aspects.portlet.PortalSessionSynchronizationInterceptor] Was not able to access the client request from request context 2008-05-09 08:48:53,059 ERROR [org.apache.myfaces.lifecycle.PhaseListenerManager] Exception in PhaseListener RENDER_RESPONSE(6) beforePhase. org.hibernate.SessionException: Session is closed! at org.hibernate.impl.AbstractSessionImpl.errorIfClosed(AbstractSessionImpl.java:49) at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:874) at org.hibernate.impl.SessionImpl.get(SessionImpl.java:815) at org.hibernate.impl.SessionImpl.get(SessionImpl.java:808) at org.jboss.portal.core.impl.model.portal.PersistentPortalObjectContainer.getObjectNode(PersistentPortalObjectContainer.java:296) at org.jboss.portal.core.impl.model.portal.PersistentPortalObjectContainer.getObjectNode(PersistentPortalObjectContainer.java:252) at org.jboss.portal.core.impl.model.portal.AbstractPortalObjectContainer.getObject(AbstractPortalObjectContainer.java:89) at sun.reflect.GeneratedMethodAccessor373.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133) at org.jboss.mx.server.Invocation.invoke(Invocation.java:88) at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142) at org.jboss.mx.server.Invocation.invoke(Invocation.java:88) at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210) at $Proxy226.getObject(Unknown Source) at org.jboss.portal.core.admin.ui.PortalObjectManagerBean.refresh(PortalObjectManagerBean.java:641) at org.jboss.portal.core.admin.ui.Refresher.refreshFrom(Refresher.java:74) at org.jboss.portal.core.admin.ui.Refresher.beforePhase(Refresher.java:62) at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersBefore(PhaseListenerManager.java:73) at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:126) at org.apache.myfaces.portlet.MyFacesGenericPortlet.facesRender(MyFacesGenericPortlet.java:498) at org.apache.myfaces.portlet.MyFacesGenericPortlet.doView(MyFacesGenericPortlet.java:323) at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:133) at javax.portlet.GenericPortlet.render(GenericPortlet.java:306)