Issue Details (XML | Word | Printable)

Key: GALAXY-281
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Critical Critical
Assignee: Dan Diephouse
Reporter: Andrew Perepelytsya
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Galaxy

Deleting a group assinged to any user corrupts a repo

Created: 30/May/08 03:11 PM   Updated: 30/May/08 06:24 PM
Component/s: Core, Web
Affects Version/s: 1.0-RC
Fix Version/s: 1.0-RC

Time Tracking:
Not Specified

Labels:
User impact: High
Log Output:
[05-30 12:33:32] WARN LoggerListener [btpool0-68]: Authentication event InteractiveAuthenticationSuccessEvent: admin; details: org.acegisecurity.ui.WebAuthenticationDetails@0: RemoteIpAddress: 127.0.0.1; SessionId: rceg7ws143ng
deleting 538444d7-1341-4528-aa09-e5fee5e4f6e5 and falling back to 9cee96d0-a7ae-4bf2-b1a2-6b7379e0be54
[05-30 16:06:04] WARN GWTRPCServiceExporter [btpool0-218]: java.lang.reflect.InvocationTargetException
[05-30 16:06:04] ERROR /galaxy [btpool0-218]: Exception while dispatching incoming RPC call
java.lang.RuntimeException: com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract java.util.Collection org.mule.galaxy.web.rpc.SecurityService.getUsers()' threw an unexpected exception: org.springframework.dao.DataRetrievalFailureException: Item not found; nested exception is javax.jcr.ItemNotFoundException: 3b8885fb-fde5-44bd-96fa-8851289fa94a
at org.gwtwidgets.server.spring.GWTRPCServiceExporter.processCall(GWTRPCServiceExporter.java:150)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:187)
at org.gwtwidgets.server.spring.GWTRPCServiceExporter.handleRequest(GWTRPCServiceExporter.java:168)
at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:49)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
at org.mule.galaxy.web.ContextPathSaverFilter.doFilter(ContextPathSaverFilter.java:49)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.springmodules.jcr.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.switchuser.SwitchUserProcessingFilter.doFilter(SwitchUserProcessingFilter.java:341)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:404)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
Caused by: com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract java.util.Collection org.mule.galaxy.web.rpc.SecurityService.getUsers()' threw an unexpected exception: org.springframework.dao.DataRetrievalFailureException: Item not found; nested exception is javax.jcr.ItemNotFoundException: 3b8885fb-fde5-44bd-96fa-8851289fa94a
at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:361)
at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:320)
at org.gwtwidgets.server.spring.GWTRPCServiceExporter.processCall(GWTRPCServiceExporter.java:143)
... 55 more
Caused by: org.springframework.dao.DataRetrievalFailureException: Item not found; nested exception is javax.jcr.ItemNotFoundException: 3b8885fb-fde5-44bd-96fa-8851289fa94a
at org.springmodules.jcr.SessionFactoryUtils.translateException(SessionFactoryUtils.java:197)
at org.springmodules.jcr.JcrAccessor.convertJcrAccessException(JcrAccessor.java:58)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:82)
at org.springmodules.jcr.JcrTemplate.getNodeByUUID(JcrTemplate.java:260)
at org.mule.galaxy.impl.jcr.AccessControlManagerImpl.findNode(AccessControlManagerImpl.java:51)
at org.mule.galaxy.impl.jcr.onm.AbstractDao.doGet(AbstractDao.java:175)
at org.mule.galaxy.impl.jcr.onm.AbstractDao$1.doInJcr(AbstractDao.java:60)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:76)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:108)
at org.mule.galaxy.impl.jcr.onm.AbstractDao.get(AbstractDao.java:58)
at org.mule.galaxy.impl.jcr.onm.DaoPersister.build(DaoPersister.java:28)
at org.mule.galaxy.impl.jcr.CollectionPersister.build(CollectionPersister.java:73)
at org.mule.galaxy.impl.jcr.onm.ClassPersister.build(ClassPersister.java:90)
at org.mule.galaxy.impl.jcr.onm.AbstractReflectionDao.build(AbstractReflectionDao.java:47)
at org.mule.galaxy.impl.jcr.UserManagerImpl$7.doInJcr(UserManagerImpl.java:224)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:76)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:108)
at org.mule.galaxy.impl.jcr.UserManagerImpl.doListAll(UserManagerImpl.java:213)
at org.mule.galaxy.impl.jcr.onm.AbstractDao$4.doInJcr(AbstractDao.java:110)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:76)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:108)
at org.mule.galaxy.impl.jcr.onm.AbstractDao.listAll(AbstractDao.java:108)
at org.mule.galaxy.impl.jcr.onm.AbstractDao$$FastClassByCGLIB$$c1dd0328.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:700)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)
at org.mule.galaxy.impl.jcr.UserManagerImpl$$EnhancerByCGLIB$$3327b674.listAll(<generated>)
at org.mule.galaxy.web.server.SecurityServiceImpl.getUsers(SecurityServiceImpl.java:115)
at sun.reflect.GeneratedMethodAccessor48.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.gwtwidgets.server.spring.GWTRPCServiceExporter.processCall(GWTRPCServiceExporter.java:127)
... 55 more
Caused by: javax.jcr.ItemNotFoundException: 3b8885fb-fde5-44bd-96fa-8851289fa94a
at org.apache.jackrabbit.core.ItemManager.createItemInstance(ItemManager.java:566)
at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:395)
at org.apache.jackrabbit.core.SessionImpl.getNodeById(SessionImpl.java:487)
at org.apache.jackrabbit.core.SessionImpl.getNodeByUUID(SessionImpl.java:456)
at org.apache.jackrabbit.core.SessionImpl.getNodeByUUID(SessionImpl.java:837)
at org.springmodules.jcr.JcrTemplate$10.doInJcr(JcrTemplate.java:265)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:76)
... 87 more


 Description  « Hide
This is both a core and web issue. To reproduce:

Create a group -> Add User and assign this group to the user -> Edit Group -> Delete -> Go to users list

Expected: no problems
Actual: User list is no longer displayed at all

There are 2 ways to address this problem:

  1. Cascade-update users in the group to remove the link.
  2. Disallow group deletion until after every user has been disassociated from the group (can become a really painful UI operation though)


 All   Comments   Work Log   Change History   Transitions   FishEye      Sort Order: Ascending order - Click to sort in descending order
Dan Diephouse added a comment - 30/May/08 06:24 PM
Fixed. I took option #1.