Discussions

EJB design: Concurrent access exception in JDO

  1. Concurrent access exception in JDO (2 messages)

    We get "Concurrent Access Exception" when we try to update an object.JDO internally uses "Batch Updates" to update an existing object. We are not able to identify in which object we are having problem since the error is not consistent. (i.e) we get exceptions in different
    objects for the same view page. We went through JDO documents to solve this problem but there is no clear documents about the exception.
    Please suggest a solution for this.
  2. Which JDO implementation are you using?
    What does your code do -- e.g. does it update an object several times, how many transactions does it use?

    Tom
  3. Thank you for the message.
    We are using JDO 0.8 implementation.
    This exception occurs when we use oracle as back end but we donot face this problem when we use pointbase.
    We use Forte Internet Edition 2.0 to capture Database for creating persistent java classes(having get/set methods).We have Agent classes which use the get/set methods to insert and retrieve the data from database.This exception occurs even when just a single user is accessing the database.
    It doesnot update an object several times.
    Only one transaction is done at a time.
    Please find below the snap shot of the exception.However as I have already mentioned We are not able to identify in which object we are having problem since the error is not consistent. (i.e) we get exceptions in different objects for the same view page.
    com.sun.forte4j.persistence.JDODataStoreException: Concurrent access exception:
    object to delete has been updated or deleted by another transaction.
    FailedObjectArray: [Deleted instance of class com.eq.smile.models.Exerciseinstru
    ctions] at com.sun.forte4j.persistence.internal.runtime.core.SqlStore.executeSql (SqlStore.java:731)
            at com.sun.forte4j.persistence.internal.runtime.core.SqlStore.update(Sql
    Store.java:2085)
            at com.sun.forte4j.persistence.internal.runtime.core.SqlStore.execute(Sq
    lStore.java:424)
            at com.sun.forte4j.persistence.internal.runtime.core.SqlStateManager.upd
    atePersistent(SqlStateManager.java:885)
            at com.sun.forte4j.persistence.internal.runtime.jdo.PersistenceManagerIm
    pl.beforeCompletion(PersistenceManagerImpl.java:805)
            at com.sun.forte4j.persistence.internal.transaction.TransactionImpl.noti
    fyBeforeCompletion(TransactionImpl.java:1112)
            at com.sun.forte4j.persistence.internal.transaction.TransactionImpl.comm
    itBefore(TransactionImpl.java:479)
            at com.sun.forte4j.persistence.internal.transaction.TransactionImpl.comm
    it(TransactionImpl.java:415)
            at com.eq.smile.das.editor.agents.AExerciseInstruction.deleteExerciseins
    truction(AExerciseInstruction.java:811)
            at com.eq.smile.das.editor.agents.AExerciseInstruction.updateExerciseins
    truction(AExerciseInstruction.java:581)
            at com.eq.smile.das.editor.views.VProgramInstruction3.save(VProgramInstr
    uction3.java:1747)
            at com.eq.smile.das.editor.views.VEditor.save(VEditor.java:1358)
            at com.eq.smile.das.editor.views.VEditor.actionPerformed(VEditor.java:11
    09)
            at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
            at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Unknow
    n Source)
            at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
            at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
            at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour
    ce)
            at java.awt.Component.processMouseEvent(Unknown Source)
            at java.awt.Component.processEvent(Unknown Source)
            at java.awt.Container.processEvent(Unknown Source)
            at java.awt.Component.dispatchEventImpl(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
            at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
            at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Window.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.Dialog.show(Unknown Source)
            at java.awt.Component.show(Unknown Source)
            at java.awt.Component.setVisible(Unknown Source)
            at com.eq.smile.das.editor.views.VEditor.showEditor(VEditor.java:286)
            at com.eq.smile.das.mainscreen.SmileFrame.showEditor(SmileFrame.java:119
    8)
            at com.eq.smile.das.mainscreen.SPopupListener.edit(SPopupListener.java:8
    38)
            at com.eq.smile.das.mainscreen.SPopupListener.actionPerformed(SPopupList
    ener.java:134)
            at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
            at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Unknow
    n Source)
            at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
            at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
            at javax.swing.AbstractButton.doClick(Unknown Source)
            at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseRelease
    d(Unknown Source)
            at java.awt.Component.processMouseEvent(Unknown Source)
            at java.awt.Component.processEvent(Unknown Source)
            at java.awt.Container.processEvent(Unknown Source)
            at java.awt.Component.dispatchEventImpl(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
            at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
            at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Window.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.run(Unknown Source)