Uploaded image for project: 'Application Server 3  4  5 and 6'
  1. Application Server 3 4 5 and 6
  2. JBAS-3366

Cannot delete bean with compound primary key with CMR field in the process of cascade delete

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Obsolete
    • Icon: Major Major
    • No Release
    • JBossAS-4.0.4.GA
    • CMP service
    • None

      Cannot delete bean with compound primary key with CMR field in the process of cascade delete.

      Two beans , one of them uses unknown primary key, another one uses compound primary key with CMR which references to the first one. When removing the first bean the following exception occures :
      java.lang.IllegalStateException: New value [89] of a foreign key field beanOneID changed the value of a primary key field beanOneID[89].

      Complete server log record:

      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.LogInterceptor] Start method=remove
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] Current transaction in MI is null
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] TX_REQUIRED for remove timeout=0
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] Thread came in with tx null
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] Starting new tx TransactionImpl:XidImpl[FormatId=257, GlobalId=lyamshin/23, BranchQual=, localId=23]
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.EntityLockInterceptor] Begin invoke, key=89
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy] entryPromotion, entry=key: 89, object: 84850, entry: 1c390b8
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.EntityInstanceInterceptor] Begin invoke, key=89
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.EntitySynchronizationInterceptor] invoke called for ctx BeanOneEJB#89, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=lyamshin/23, BranchQual=, localId=23]
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.BeanOneEJB] RESET PERSISTENCE CONTEXT: id=89
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanOneEJB] load data: entity=BeanOneEJB pk=89
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanOneEJB] No preload data found: entity=BeanOneEJB pk=89
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge.BeanOneEJB] Default eager-load for entity: readahead=null
      2006-07-05 14:44:09,638 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.BeanOneEJB] Executing SQL: SELECT className FROM BeanOneEJB WHERE (id=?)
      2006-07-05 14:44:09,638 TRACE org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.BeanOneEJB#beanOneID param: i=1, type=INTEGER, value=89
      2006-07-05 14:44:09,638 TRACE org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.BeanOneEJB#className result: i=1, type=java.lang.String, value=town
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.EntitySynchronizationInterceptor] register, ctx=BeanOneEJB#89, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=lyamshin/23, BranchQual=, localId=23]
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.BeanOneEJB.beanTwos] Read ahead cahce load: cmrField=beanTwos pk=89
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanOneEJB] load data: entity=BeanOneEJB pk=89
      2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanOneEJB] No preload data found: entity=BeanOneEJB pk=89
      2006-07-05 14:44:09,638 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadRelationCommand.BeanOneEJB] load relation SQL: SELECT id, attrName FROM BeanTwoEJB WHERE (id=?)
      2006-07-05 14:44:09,638 TRACE org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.BeanTwoEJB#beanOneID param: i=1, type=INTEGER, value=89
      2006-07-05 14:44:09,654 TRACE org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.BeanTwoEJB#beanOneID result: i=1, type=java.lang.Object, value=89
      2006-07-05 14:44:09,654 TRACE org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.BeanTwoEJB#attrName result: i=2, type=java.lang.String, value=name1
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanTwoEJB] Add preload data: entity=BeanTwoEJB pk=foo.BeanTwoPK@63d0f91 field=instance
      2006-07-05 14:44:09,654 TRACE org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.BeanTwoEJB#beanOneID result: i=1, type=java.lang.Object, value=89
      2006-07-05 14:44:09,654 TRACE org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.BeanTwoEJB#attrName result: i=2, type=java.lang.String, value=name2
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanTwoEJB] Add preload data: entity=BeanTwoEJB pk=foo.BeanTwoPK@63d0f92 field=instance
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanTwoEJB] Add finder results: entity=BeanTwoEJB results=[foo.BeanTwoPK@63d0f91, foo.BeanTwoPK@63d0f92] readahead=[JDBCReadAheadMetaData : strategy=on-load, pageSize=1000, eagerLoadGroup=*, left-join[]]
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor] invokerBInding is null in ProxyFactoryFinder
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.LogInterceptor] Start method=<no method>
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] Current transaction in MI is TransactionImpl:XidImpl[FormatId=257, GlobalId=lyamshin/23, BranchQual=, localId=23]
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] TX_SUPPORTS for <no method>
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] Thread came in with tx TransactionImpl:XidImpl[FormatId=257, GlobalId=lyamshin/23, BranchQual=, localId=23]
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.EntityLockInterceptor] Begin invoke, key=foo.BeanTwoPK@63d0f91
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy] entryPromotion, entry=key: foo.BeanTwoPK@63d0f91, object: 110b205, entry: 1178281
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.EntityInstanceInterceptor] Begin invoke, key=foo.BeanTwoPK@63d0f91
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.EntityReentranceInterceptor] NON_ENTRANT invocation
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.EntitySynchronizationInterceptor] invoke called for ctx BeanTwoEJB#foo.BeanTwoPK@63d0f91, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=lyamshin/23, BranchQual=, localId=23]
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.BeanTwoEJB] RESET PERSISTENCE CONTEXT: id=foo.BeanTwoPK@63d0f91
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanTwoEJB] load data: entity=BeanTwoEJB pk=foo.BeanTwoPK@63d0f91
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanTwoEJB] Preloading data: entity=BeanTwoEJB pk=foo.BeanTwoPK@63d0f91 cmrField=instance
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy] entryRemoved, entry=key: null, object: null, entry: 1178281
      2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.EntityInstanceInterceptor] Ending invoke, exceptionThrown, ctx=BeanTwoEJB#foo.BeanTwoPK@63d0f91
      java.lang.IllegalStateException: New value [89] of a foreign key field beanOneID changed the value of a primary key field beanOneID[89]
      at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.setInstanceValue(JDBCCMP2xFieldBridge.java:204)
      at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.setForeignKey(JDBCCMRFieldBridge.java:1472)
      at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.load(JDBCCMRFieldBridge.java:1452)
      at org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.load(ReadAheadCache.java:417)
      at org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:126)
      at org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:88)
      at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.java:646)
      at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.java:628)
      at org.jboss.ejb.plugins.CMPPersistenceManager.loadEntity(CMPPersistenceManager.java:406)
      at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.loadEntity(CachedConnectionInterceptor.java:252)
      at org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:243)
      at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:158)
      at org.jboss.ejb.plugins.EntityReentranceInterceptor.invoke(EntityReentranceInterceptor.java:126)
      at org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:276)
      at org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:104)
      at org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:68)
      at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63)
      at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121)
      at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:378)
      at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
      at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:168)
      at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
      at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:136)
      at org.jboss.ejb.EntityContainer.internalInvoke(EntityContainer.java:520)
      at org.jboss.ejb.Container.invoke(Container.java:954)
      at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.invokeRemoveRelation(JDBCCMRFieldBridge.java:1226)
      at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.destroyRelationLinks(JDBCCMRFieldBridge.java:1041)
      at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.destroyRelationLinks(JDBCCMRFieldBridge.java:1027)
      at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.destroyRelationLinks(JDBCCMRFieldBridge.java:1011)
      at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.setInstanceValue(JDBCCMRFieldBridge.java:905)
      at org.jboss.ejb.plugins.cmp.jdbc.CascadeDeleteStrategy$NoneCascadeDeleteStrategy.removedIds(CascadeDeleteStrategy.java:67)
      at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.removeFromRelations(JDBCCMRFieldBridge.java:411)
      at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge.removeFromRelations(JDBCEntityBridge.java:322)
      at org.jboss.ejb.plugins.cmp.jdbc.JDBCRemoveEntityCommand.execute(JDBCRemoveEntityCommand.java:108)
      at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.removeEntity(JDBCStoreManager.java:697)
      at org.jboss.ejb.plugins.CMPPersistenceManager.removeEntity(CMPPersistenceManager.java:521)
      at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.removeEntity(CachedConnectionInterceptor.java:314)
      at org.jboss.ejb.EntityContainer.remove(EntityContainer.java:536)

              olubyans@redhat.com Alexey Loubyansky
              maxoid_jira Maxim Karavaev (Inactive)
              Votes:
              1 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: