It's all about the answers!

Ask a question

Helpers are not getting deleted


Scott Patterson (4142) | asked Apr 14 '09, 10:23 a.m.
JAZZ DEVELOPER
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

Be the first one to answer this question!


Register or to post your answer.


Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.