Deleting subproject from multiproject can corrupt database
----------------------------------------------------------

                 Key: CONTINUUM-1135
                 URL: http://jira.codehaus.org/browse/CONTINUUM-1135
             Project: Continuum
          Issue Type: Bug
    Affects Versions: 1.0.3
         Environment: linux CentOS 4.4
Linux  2.6.9-22.0.1.ELsmp #1 SMP Tue Oct 18 18:39:27 EDT 2005 i686 i686 i386 
GNU/Linux

            Reporter: Chris Audley


I have a few project with multiple modules.  When I load one of these projects, 
I delete the subprojects and remove the --non-recursive flag from the parent 
project.  Frequently (~30% of the time) deleting the subproject corrupts the 
continuum database.  After the delete, the parent project is listed twice, any 
attempt to remove either of the duplicate parent project listings will fail 
with an exception.

ognl.MethodFailedException: Method "removeProject" failed for object [EMAIL 
PROTECTED] [javax.jdo.JDOUserException: One or more instances could not be 
deleted
NestedThrowables:
javax.jdo.JDODataStoreException: Delete request failed: DELETE FROM 
BUILDDEFINITION WHERE ID = ?
NestedThrowables:
SQL Exception: DELETE on table 'BUILDDEFINITION' caused a violation of foreign 
key constraint 'PROJECT_BUILP8_FK2' for key (1).  The statement has been rolled 
back.]
        at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:796)
        at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:61)
        at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:819)
        at ognl.ASTMethod.getValueBody(ASTMethod.java:75)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
        at ognl.SimpleNode.getValue(SimpleNode.java:210)
        at ognl.Ognl.getValue(Ognl.java:333)
        at ognl.Ognl.getValue(Ognl.java:378)
        at ognl.Ognl.getValue(Ognl.java:357)
        at 
org.codehaus.plexus.formica.action.DeleteEntity.uponSuccessfulValidation(DeleteEntity.java:57)
        at 
org.codehaus.plexus.formica.action.DeleteEntity.execute(DeleteEntity.java:47)
        at 
org.codehaus.plexus.summit.pipeline.valve.ActionValve.invoke(ActionValve.java:68)
        at 
org.codehaus.plexus.summit.pipeline.AbstractPipeline.invoke(AbstractPipeline.java:70)
        at org.codehaus.plexus.summit.Summit.doGet(Summit.java:54)
        at org.codehaus.plexus.summit.Summit.doPost(Summit.java:108)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
        at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:358)
        at 
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:294)
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
        at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
        at 
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
        at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
        at org.mortbay.http.HttpServer.service(HttpServer.java:879)
        at org.mortbay.http.HttpConnection.service(HttpConnection.java:789)
        at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:960)
        at org.mortbay.http.HttpConnection.handle(HttpConnection.java:806)
        at 
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:218)
        at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:331)
        at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:520)
/-- Encapsulated exception ------------\
javax.jdo.JDOUserException: One or more instances could not be deleted
        at 
org.jpox.AbstractPersistenceManager.deletePersistentAll(AbstractPersistenceManager.java:1438)
        at 
org.jpox.store.rdbms.scostore.ElementContainerStore.clear(ElementContainerStore.java:595)
        at 
org.jpox.store.mapping.CollectionMapping.preDelete(CollectionMapping.java:304)
        at 
org.jpox.store.mapping.CollectionMapping.deleteDependent(CollectionMapping.java:332)
        at 
org.jpox.store.rdbms.table.ClassTable.deleteDependent(ClassTable.java:2280)
        at org.jpox.store.StoreManager.deleteDependent(StoreManager.java:838)
        at 
org.jpox.state.StateManagerImpl.deletePersistent(StateManagerImpl.java:4049)
        at 
org.jpox.AbstractPersistenceManager.internalDeletePersistent(AbstractPersistenceManager.java:1391)
        at 
org.jpox.AbstractPersistenceManager.deletePersistent(AbstractPersistenceManager.java:1402)
        at 
org.codehaus.plexus.jdo.PlexusJdoUtils.removeObject(PlexusJdoUtils.java:53)
        at 
org.apache.maven.continuum.store.JdoContinuumStore.removeObject(JdoContinuumStore.java:969)
        at 
org.apache.maven.continuum.store.JdoContinuumStore.removeProject(JdoContinuumStore.java:901)
        at 
org.apache.maven.continuum.DefaultContinuum.removeProject(DefaultContinuum.java:328)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:491)
        at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:785)
        at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:61)
        at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:819)
        at ognl.ASTMethod.getValueBody(ASTMethod.java:75)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
        at ognl.SimpleNode.getValue(SimpleNode.java:210)
        at ognl.Ognl.getValue(Ognl.java:333)
        at ognl.Ognl.getValue(Ognl.java:378)
        at ognl.Ognl.getValue(Ognl.java:357)
        at 
org.codehaus.plexus.formica.action.DeleteEntity.uponSuccessfulValidation(DeleteEntity.java:57)
        at 
org.codehaus.plexus.formica.action.DeleteEntity.execute(DeleteEntity.java:47)
        at 
org.codehaus.plexus.summit.pipeline.valve.ActionValve.invoke(ActionValve.java:68)
        at 
org.codehaus.plexus.summit.pipeline.AbstractPipeline.invoke(AbstractPipeline.java:70)
        at org.codehaus.plexus.summit.Summit.doGet(Summit.java:54)
        at org.codehaus.plexus.summit.Summit.doPost(Summit.java:108)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
        at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:358)
        at 
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:294)
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
        at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
        at 
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
        at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
        at org.mortbay.http.HttpServer.service(HttpServer.java:879)
        at org.mortbay.http.HttpConnection.service(HttpConnection.java:789)
        at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:960)
        at org.mortbay.http.HttpConnection.handle(HttpConnection.java:806)
        at 
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:218)
        at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:331)
        at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:520)
NestedThrowablesStackTrace:
javax.jdo.JDODataStoreException: Delete request failed: DELETE FROM 
BUILDDEFINITION WHERE ID = ?
        at 
org.jpox.store.rdbms.request.DeleteRequest.execute(DeleteRequest.java:259)
        at org.jpox.store.rdbms.table.ClassTable.delete(ClassTable.java:2238)
        at org.jpox.store.StoreManager.delete(StoreManager.java:800)
        at 
org.jpox.state.StateManagerImpl.internalDeletePersistent(StateManagerImpl.java:4113)
        at 
org.jpox.state.StateManagerImpl.deletePersistent(StateManagerImpl.java:4068)
        at 
org.jpox.AbstractPersistenceManager.internalDeletePersistent(AbstractPersistenceManager.java:1391)
        at 
org.jpox.AbstractPersistenceManager.deletePersistentAll(AbstractPersistenceManager.java:1429)
        at 
org.jpox.store.rdbms.scostore.ElementContainerStore.clear(ElementContainerStore.java:595)
        at 
org.jpox.store.mapping.CollectionMapping.preDelete(CollectionMapping.java:304)
        at 
org.jpox.store.mapping.CollectionMapping.deleteDependent(CollectionMapping.java:332)
        at 
org.jpox.store.rdbms.table.ClassTable.deleteDependent(ClassTable.java:2280)
        at org.jpox.store.StoreManager.deleteDependent(StoreManager.java:838)
        at 
org.jpox.state.StateManagerImpl.deletePersistent(StateManagerImpl.java:4049)
        at 
org.jpox.AbstractPersistenceManager.internalDeletePersistent(AbstractPersistenceManager.java:1391)
        at 
org.jpox.AbstractPersistenceManager.deletePersistent(AbstractPersistenceManager.java:1402)
        at 
org.codehaus.plexus.jdo.PlexusJdoUtils.removeObject(PlexusJdoUtils.java:53)
        at 
org.apache.maven.continuum.store.JdoContinuumStore.removeObject(JdoContinuumStore.java:969)
        at 
org.apache.maven.continuum.store.JdoContinuumStore.removeProject(JdoContinuumStore.java:901)
        at 
org.apache.maven.continuum.DefaultContinuum.removeProject(DefaultContinuum.java:328)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:491)
        at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:785)
        at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:61)
        at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:819)
        at ognl.ASTMethod.getValueBody(ASTMethod.java:75)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
        at ognl.SimpleNode.getValue(SimpleNode.java:210)
        at ognl.Ognl.getValue(Ognl.java:333)
        at ognl.Ognl.getValue(Ognl.java:378)
        at ognl.Ognl.getValue(Ognl.java:357)
        at 
org.codehaus.plexus.formica.action.DeleteEntity.uponSuccessfulValidation(DeleteEntity.java:57)
        at 
org.codehaus.plexus.formica.action.DeleteEntity.execute(DeleteEntity.java:47)
        at 
org.codehaus.plexus.summit.pipeline.valve.ActionValve.invoke(ActionValve.java:68)
        at 
org.codehaus.plexus.summit.pipeline.AbstractPipeline.invoke(AbstractPipeline.java:70)
        at org.codehaus.plexus.summit.Summit.doGet(Summit.java:54)
        at org.codehaus.plexus.summit.Summit.doPost(Summit.java:108)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
        at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:358)
        at 
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:294)
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
        at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
        at 
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
        at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
        at org.mortbay.http.HttpServer.service(HttpServer.java:879)
        at org.mortbay.http.HttpConnection.service(HttpConnection.java:789)
        at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:960)
        at org.mortbay.http.HttpConnection.handle(HttpConnection.java:806)
        at 
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:218)
        at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:331)
        at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:520)
NestedThrowablesStackTrace:
ERROR 23503: DELETE on table 'BUILDDEFINITION' caused a violation of foreign 
key constraint 'PROJECT_BUILP8_FK2' for key (1).  The statement has been rolled 
back.
        at org.apache.derby.iapi.error.StandardException.newException(Unknown 
Source)
        at 
org.apache.derby.impl.sql.execute.ReferencedKeyRIChecker.doCheck(Unknown Source)
        at org.apache.derby.impl.sql.execute.RISetChecker.doPKCheck(Unknown 
Source)
        at 
org.apache.derby.impl.sql.execute.DeleteResultSet.collectAffectedRows(Unknown 
Source)
        at org.apache.derby.impl.sql.execute.DeleteResultSet.open(Unknown 
Source)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown 
Source)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown 
Source)
        at 
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown 
Source)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown 
Source)
        at org.jpox.store.rdbms.request.Request.executeUpdate(Request.java:78)
        at 
org.jpox.store.rdbms.request.DeleteRequest.execute(DeleteRequest.java:245)
        at org.jpox.store.rdbms.table.ClassTable.delete(ClassTable.java:2238)
        at org.jpox.store.StoreManager.delete(StoreManager.java:800)
        at 
org.jpox.state.StateManagerImpl.internalDeletePersistent(StateManagerImpl.java:4113)
        at 
org.jpox.state.StateManagerImpl.deletePersistent(StateManagerImpl.java:4068)
        at 
org.jpox.AbstractPersistenceManager.internalDeletePersistent(AbstractPersistenceManager.java:1391)
        at 
org.jpox.AbstractPersistenceManager.deletePersistentAll(AbstractPersistenceManager.java:1429)
        at 
org.jpox.store.rdbms.scostore.ElementContainerStore.clear(ElementContainerStore.java:595)
        at 
org.jpox.store.mapping.CollectionMapping.preDelete(CollectionMapping.java:304)
        at 
org.jpox.store.mapping.CollectionMapping.deleteDependent(CollectionMapping.java:332)
        at 
org.jpox.store.rdbms.table.ClassTable.deleteDependent(ClassTable.java:2280)
        at org.jpox.store.StoreManager.deleteDependent(StoreManager.java:838)
        at 
org.jpox.state.StateManagerImpl.deletePersistent(StateManagerImpl.java:4049)
        at 
org.jpox.AbstractPersistenceManager.internalDeletePersistent(AbstractPersistenceManager.java:1391)
        at 
org.jpox.AbstractPersistenceManager.deletePersistent(AbstractPersistenceManager.java:1402)
        at 
org.codehaus.plexus.jdo.PlexusJdoUtils.removeObject(PlexusJdoUtils.java:53)
        at 
org.apache.maven.continuum.store.JdoContinuumStore.removeObject(JdoContinuumStore.java:969)
        at 
org.apache.maven.continuum.store.JdoContinuumStore.removeProject(JdoContinuumStore.java:901)
        at 
org.apache.maven.continuum.DefaultContinuum.removeProject(DefaultContinuum.java:328)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:491)
        at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:785)
        at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:61)
        at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:819)
        at ognl.ASTMethod.getValueBody(ASTMethod.java:75)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
        at ognl.SimpleNode.getValue(SimpleNode.java:210)
        at ognl.Ognl.getValue(Ognl.java:333)
        at ognl.Ognl.getValue(Ognl.java:378)
        at ognl.Ognl.getValue(Ognl.java:357)
        at 
org.codehaus.plexus.formica.action.DeleteEntity.uponSuccessfulValidation(DeleteEntity.java:57)
        at 
org.codehaus.plexus.formica.action.DeleteEntity.execute(DeleteEntity.java:47)
        at 
org.codehaus.plexus.summit.pipeline.valve.ActionValve.invoke(ActionValve.java:68)
        at 
org.codehaus.plexus.summit.pipeline.AbstractPipeline.invoke(AbstractPipeline.java:70)
        at org.codehaus.plexus.summit.Summit.doGet(Summit.java:54)
        at org.codehaus.plexus.summit.Summit.doPost(Summit.java:108)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
        at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:358)
        at 
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:294)
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
        at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
        at 
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
        at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
        at org.mortbay.http.HttpServer.service(HttpServer.java:879)
        at org.mortbay.http.HttpConnection.service(HttpConnection.java:789)
        at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:960)
        at org.mortbay.http.HttpConnection.handle(HttpConnection.java:806)
        at 
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:218)
        at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:331)
        at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:520)
\--------------------------------------/

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to