Helpers are not getting deleted
![]()
I have a storage model two classes, one derived from SimpleItem (called Vob) and the other from Helper (called Tag).
The SimpleItem class has a zero-to-many reference (called tags) to the helper and it's Containment property is set to true. The Helper class has a teamClass annotation with an indices detail and the UNIQUE keyword indicating which class attributes are used to determine uniqueness of the helper. (Called RGY_REGION_TAG.) Step 1 I create a new helper object with IHelperType.createHelper() and a new item with IItemType.createItem() and set the helper to the item. I can successfully create the item with it's helper using IRepositoryItemService.saveItem(...) Step 2 I can then successfully remove that entry with IRepositoryItemService.deleteItem(...) or at least it appears to be removed. Step 3 Now I create a new item and helper with IItemType.createItem() and IHelperType.createHelper() and set all the values to exactly the same as the one which was deleted. This time when I try to create the item with IRepositoryItemService.saveItem(...) I get the exception below complaining about the uniqueness constraint I put on my helper. I thought that when I deleted an item, any associated helpers will also get deleted. Is that not the case? If I am wrong and the helper is getting deleted, then why can I not create a new helper with the same values? Just to be safe, I recreated my storage model in the repository with the com.ibm.team.repository.service.tests.TestDbRebuild class but still ran into the same exception doing the same 3 steps. com.ibm.team.repository.common.InternalRepositoryException: CRJAZ0329I SQL statement execution failedIntegrity constraint violation SQL: INSERT INTO GA.VOB_TAGS (JZ_PARENT_ID, INTERNAL_ID, REGISTRY_HOSTNAME, NAME, REGION, GLOBAL_PATH, PUBLIC_TAG) VALUES (?, ?, ?, ?, ?, ?, ?) SQL Exception #1 SQL Message: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'RGY_REGION_TAG' defined on 'VOB_TAGS'. SQL State: 23505 Error Code: 20000 Class: com.ibm.team.repository.service.internal.dataaccess.write2.HelperRow Item Handle: com.ibm.clearcase.ga.common.internal.model.impl.VobImpl@5bc65bc6 (stateId: , itemId: , origin: <unset>, immutable: true) (modified: 2009-04-14 09:22:41.171, workingCopy: <unset>) (predecessor: null) (replicaUuid: 7e6ed400.4dbda759.b38b.bb:84:05:6e:88:ac, familyUuid: 7e6ed400.4dbda759.b38a.bb:84:05:6e:88:ac, ucm: true, hostname: vobHostValue_VKB6kSj3Ed6u2PnkNAKbRQ, accessPath: vobPathValue_VKB6kij3Ed6u2PnkNAKbRQ, admin: false) at com.ibm.team.repository.service.internal.dataaccess.BatchingRowReceiver.createIRE(BatchingRowReceiver.java:397) at com.ibm.team.repository.service.internal.dataaccess.BatchingRowReceiver.createIRE(BatchingRowReceiver.java:406) at com.ibm.team.repository.service.internal.dataaccess.AbstractRow.handleExecuteException(AbstractRow.java:325) at com.ibm.team.repository.service.internal.dataaccess.BatchingRowReceiver.simulatedBatch(BatchingRowReceiver.java:376) at com.ibm.team.repository.service.internal.dataaccess.BatchingRowReceiver.executeBatch(BatchingRowReceiver.java:264) at com.ibm.team.repository.service.internal.dataaccess.BatchingRowReceiver.execute(BatchingRowReceiver.java:200) at com.ibm.team.repository.service.internal.dataaccess.IRowReceiver$IRowReceiverLocator.executePendingChanges(IRowReceiver.java:140) at com.ibm.team.repository.service.internal.dataaccess.FlushingMediatorService.flush(FlushingMediatorService.java:56) at com.ibm.team.repository.service.internal.dataaccess.FlushingMediatorService.saveNew(FlushingMediatorService.java:69) at com.ibm.team.repository.service.internal.RdbRepositoryDataMediator.createSimpleItem(RdbRepositoryDataMediator.java:630) at com.ibm.team.repository.service.internal.RepositoryItemService.doCreateSimpleItem(RepositoryItemService.java:1535) at com.ibm.team.repository.service.internal.RepositoryItemService.doSaveSimpleItem(RepositoryItemService.java:1506) at com.ibm.team.repository.service.internal.RepositoryItemService.doSaveItem(RepositoryItemService.java:1320) at com.ibm.team.repository.service.internal.RepositoryItemService.access$14(RepositoryItemService.java:1296) at com.ibm.team.repository.service.internal.RepositoryItemService$21.run(RepositoryItemService.java:1290) at com.ibm.team.repository.service.internal.RepositoryItemService$21.run(RepositoryItemService.java:1) at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$Transaction.run(RepositoryDatabase.java:455) at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runTransaction(RepositoryDatabase.java:286) at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runInTransaction(RepositoryDatabase.java:241) at com.ibm.team.repository.service.internal.TransactionService.runInTransaction(TransactionService.java:74) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:375) at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:361) at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:55) at $Proxy42.runInTransaction(null) at com.ibm.team.repository.service.internal.RepositoryItemService.saveItem(RepositoryItemService.java:1287) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:375) at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:361) at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:55) at $Proxy74.saveItem(null) at com.ibm.team.repository.service.internal.ComponentRepositoryItemService.saveItem(ComponentRepositoryItemService.java:221) at com.ibm.clearcase.ga.service.GlobalAdminDataService.setItem(GlobalAdminDataService.java:354) at com.ibm.clearcase.ga.service.GlobalAdminDataService.setVob(GlobalAdminDataService.java:416) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:375) at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:361) at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:55) at $Proxy183.setVob(null) at com.ibm.clearcase.ga.service.tests.data.DestoryAllItemsTestCase.testMultipleVobs(DestoryAllItemsTestCase.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at junit.framework.TestCase.runTest(TestCase.java:164) at junit.framework.TestCase.runBare(TestCase.java:130) at com.ibm.team.repository.service.tests.remotetests.RemoteTestService.run(RemoteTestService.java:40) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:375) at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:361) at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:55) at $Proxy123.run(null) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at com.ibm.team.repository.servlet.AbstractTeamServerServlet.handleMethod(AbstractTeamServerServlet.java:1133) at com.ibm.team.repository.servlet.AbstractTeamServerServlet.executeMethod(AbstractTeamServerServlet.java:883) at com.ibm.team.repository.servlet.AbstractTeamServerServlet.doPost(AbstractTeamServerServlet.java:685) at javax.servlet.http.HttpServlet.service(HttpServlet.java:616) at com.ibm.team.repository.servlet.AbstractTeamServerServlet.service(AbstractTeamServerServlet.java:1436) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at org.eclipse.equinox.http.registry.internal.ServletManager$ServletWrapper.service(ServletManager.java:180) at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:75) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) at com.ibm.team.repository.common.internal.marshal.util.MarshallerUtil.decodeExceptions(MarshallerUtil.java:326) at com.ibm.team.repository.common.internal.marshal.util.MarshallerUtil.decodeExceptions(MarshallerUtil.java:296) at com.ibm.team.repository.common.internal.marshal.util.MarshallerUtil.decodeFault(MarshallerUtil.java:261) at com.ibm.team.repository.transport.client.RemoteTeamService.constructExceptionFromFault(RemoteTeamService.java:546) at com.ibm.team.repository.transport.client.RemoteTeamService.executeMethod(RemoteTeamService.java:461) at com.ibm.team.repository.transport.client.RemoteTeamService.invoke(RemoteTeamService.java:184) at com.ibm.team.repository.transport.client.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:43) at $Proxy0.run(Unknown Source) at com.ibm.team.repository.service.tests.remotetests.RemoteServiceTestCaseHelper.run(RemoteServiceTestCaseHelper.java:44) at com.ibm.team.repository.service.tests.remotetests.RemoteServiceTestCaseHelper.run(RemoteServiceTestCaseHelper.java:74) at com.ibm.team.repository.service.tests.AbstractRemoteServiceTestCase.run(AbstractRemoteServiceTestCase.java:109) at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunner.main(RemotePluginTestRunner.java:58) at org.eclipse.pde.internal.junit.runtime.CoreTestApplication.run(CoreTestApplication.java:24) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethod(EclipseAppContainer.java:572) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:171) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447) at org.eclipse.equinox.launcher.Main.run(Main.java:1173) at org.eclipse.equinox.launcher.Main.main(Main.java:1148) Caused by: java.sql.SQLException: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'RGY_REGION_TAG' defined on 'VOB_TAGS'. at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(null) at org.apache.derby.impl.jdbc.Util.generateCsSQLException(null) at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(null) at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(null) at org.apache.derby.impl.jdbc.EmbedConnection.handleException(null) at org.apache.derby.impl.jdbc.ConnectionChild.handleException(null) at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(null) at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(null) at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(null) at com.ibm.team.repository.service.internal.db.jdbcwrappers.stat.PreparedStatementStatWrapper.executeUpdate(PreparedStatementStatWrapper.java:62) at com.ibm.team.repository.service.internal.db.jdbcwrappers.errlog.PreparedStatementErrLogWrapper.executeUpdate(PreparedStatementErrLogWrapper.java:86) at com.ibm.team.repository.service.internal.db.jdbcwrappers.leak.PreparedStatementLeakWrapper.executeUpdate(PreparedStatementLeakWrapper.java:58) at com.ibm.team.repository.service.internal.dataaccess.BatchingRowReceiver.simulatedBatch(BatchingRowReceiver.java:370) ... 124 more |