Hi Tino

this looks like a multi-threading problem. java.util.ConcurrentModification
exception is thrown by the Java runtime when a List is being modified while an
iterator is iterating over it. The list in this case is one of the collections
in your Person object. Is it possible that a second thread is working on the
same Person? Also the bottom of your stack trace 

>EDU.oswego.cs.dl.util.concurrent.FutureResult$1.run(null: no source 
>available)     
>java.lang.Thread.run(Thread.java: 534)

points into this direction.

Gerhard

On Fri, 19 Nov 2004 11:51:02 +0100, Tino Sch�llhorn
<[EMAIL PROTECTED]> wrote:

>Hi,
>
>I have a weird problem. We are using OJB 1.0 and are greatly satisfied. 
>Now we stumbled across a strange problem. When deleting a Person-Object 
>with:
>
>Person p = ...;
>pb.beginTransaction();
>pb.delete(p);
>pb.commitTransaction();
>
>we get (sometimes) the following Exception:
>
>java.util.ConcurrentModificationException      
>java.util.AbstractList$Itr.checkForComodification(AbstractList.java: 
>448)   
>java.util.AbstractList$Itr.next(AbstractList.java: 419)        
>org.apache.ojb.broker.core.PersistenceBrokerImpl.deleteCollections(null: 
>no source available)   
>org.apache.ojb.broker.core.PersistenceBrokerImpl.doDelete(null: no 
>source available)      
>org.apache.ojb.broker.core.PersistenceBrokerImpl.delete(null: no 
>source available)      
>org.apache.ojb.broker.core.DelegatingPersistenceBroker.delete(null: no 
>source available)      
>org.apache.ojb.broker.core.DelegatingPersistenceBroker.delete(null: no 
>source available)      
>kos.generator.DataObject.delete(DataObject.java: 106)  
>kos.wnetz.modules.editor.DAOEditorModule.deleteIt(DAOEditorModule.java: 403) 
>
>sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java: 
>no source available)   
>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 
>39)    
>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
> 
>25)    
>java.lang.reflect.Method.invoke(Method.java: 324)      
>kos.wnetz.system.Action.invoke(Action.java: 164)       
>kos.wnetz.system.Action$1.call(Action.java: 213)       
>EDU.oswego.cs.dl.util.concurrent.FutureResult$1.run(null: no source 
>available)     
>java.lang.Thread.run(Thread.java: 534)
>
>-------------- END Stacktrace
>
>The thing is: I am absolutely sure that we do not modify the object when 
>deleting it. Do you have any idea what I can do about it? Should I 
>switch to OJB 1.0.1?
>
>I am glad for any help.
>
>Tino
>
>P.S.: The configuration for the Person-Object is the following (it is 
>quite long, sorry about that ;-)):
>
><class-descriptor class="kos.intranet2.om.Person" table="Person">
>       <field-descriptor       name="id" column="PE_ID" jdbc-type="INTEGER"
>                                               primarykey="true" 
> autoincrement="true" access="readonly"/>
>                                               
>       <field-descriptor name="userId" column="PE_User" jdbc-type="INTEGER"/>
>       <field-descriptor name="title" column="PE_Title" jdbc-type="VARCHAR"/>
>       <field-descriptor name="firstname" column="PE_Firstname" 
>jdbc-type="VARCHAR"/>
>       <field-descriptor name="lastname" column="PE_Lastname" 
>jdbc-type="VARCHAR"/>
>       <field-descriptor name="fullName" column="PE_FullName" 
>jdbc-type="VARCHAR"/>
>       <field-descriptor name="initials" column="PE_Initials" 
>jdbc-type="VARCHAR"/>
>       <field-descriptor name="description" column="PE_Description" 
>jdbc-type="LONGVARCHAR"/>
>       <field-descriptor name="gender" column="PE_Gender" jdbc-type="BIT"/>
>       <field-descriptor name="birthday" column="PE_Birthday" 
> jdbc-type="DATE"/>
>       <field-descriptor name="country" column="PE_Country" 
> jdbc-type="VARCHAR"/>
>       <field-descriptor name="pictureId" column="PE_Picture" 
>jdbc-type="INTEGER"/>
>       <field-descriptor name="typeId" column="PE_Type" jdbc-type="INTEGER" 
>access="anonymous"/>
>       <field-descriptor name="privateData" column="PE_Private" 
> jdbc-type="BIT"/>      
>       <field-descriptor name="owner" column="PE_Owner" jdbc-type="INTEGER"/>  
>       
>       <field-descriptor name="creationDate" column="PE_CreationDate" 
>jdbc-type="TIMESTAMP"/>
>       <field-descriptor name="archiveDate" column="PE_ArchiveDate" 
>jdbc-type="TIMESTAMP"/>
>       
>       <!-- 1: N - Relation: 1er Seite Type -->
>       <reference-descriptor
>           name="type"
>           class-ref="kos.intranet2.om.PersonType"
>           auto-retrieve="true"
>           auto-update="link"
>           auto-delete="none">
>       <foreignkey field-ref="typeId"/>
>       <attribute attribute-name="reverseCollection" 
>attribute-value="persons"/>
>     </reference-descriptor>   
>       
>       <!-- M:N - Relation Person-Addresses -->
>       <collection-descriptor
>               name="addresses"
>        
>collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList"
>               element-class-ref="kos.intranet2.om.Address"
>               auto-retrieve="true"
>               auto-update="link"
>               auto-delete="link"
>               proxy="true"
>               indirection-table="Person_Address">
>               
>               <fk-pointing-to-this-class column="PEAD_Person"/>
>               <fk-pointing-to-element-class column="PEAD_Address"/>
>               
>               <attribute attribute-name="reverseCollection" 
> attribute-value="persons"/>
>       </collection-descriptor>
>       
>       <!-- Company-Persons-->
>       <collection-descriptor
>               name="companyPersons"
>        
>collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList"
>               element-class-ref="kos.intranet2.om.CompanyPerson"
>               auto-retrieve="true"
>               auto-update="object"
>               auto-delete="object"
>               proxy="true">
>               
>               <inverse-foreignkey field-ref="personId"/>
>               <attribute attribute-name="reverseReference" 
> attribute-value="person"/>                 
>       </collection-descriptor>
>       
>       
>       <!-- TeamPerson -->
>       <collection-descriptor
>               name="teamPersons"
>        
>collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList"
>               element-class-ref="kos.intranet2.om.TeamPerson"
>               auto-retrieve="true"
>               auto-update="object"
>               auto-delete="object"
>               proxy="true">
>               
>               <inverse-foreignkey field-ref="personId"/>      
>               <attribute attribute-name="reverseReference" 
> attribute-value="person"/> 
>       </collection-descriptor>
>       
>       
>       <!-- ProjectPerson -->
>       <collection-descriptor
>               name="projectPersons"
>        
>collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList"
>               element-class-ref="kos.intranet2.om.ProjectPerson"
>               auto-retrieve="true"
>               auto-update="object"
>               auto-delete="object"
>               proxy="true">
>               
>               <inverse-foreignkey field-ref="personId"/>      
>               <attribute attribute-name="reverseReference" 
> attribute-value="person"/> 
>       </collection-descriptor>
>       
>       <!-- M:N Relation Person-Appointment -->
>       <collection-descriptor
>               name="appointments"
>        
>collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList"
>               element-class-ref="kos.intranet2.om.Appointment"
>               auto-retrieve="true"
>               auto-update="link"
>               auto-delete="link"
>               proxy="true"
>               indirection-table="Person_Appointment">
>               
>               <fk-pointing-to-this-class column="PEAP_Person"/>
>               <fk-pointing-to-element-class column="PEAP_Appointment"/>
>               
>               <attribute attribute-name="reverseCollection" 
> attribute-value="persons"/>
>       </collection-descriptor>        
>       
>       <!-- M:N Relation Person-Task -->
>       <collection-descriptor
>               name="tasks"
>        
>collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList"
>               element-class-ref="kos.intranet2.om.Task"
>               auto-retrieve="true"
>               auto-update="link"
>               auto-delete="link"
>               proxy="true"
>               indirection-table="Person_Task">
>               
>               <fk-pointing-to-this-class column="PETA_Person"/>
>               <fk-pointing-to-element-class column="PETA_Task"/>
>               
>               <attribute attribute-name="reverseCollection" 
> attribute-value="persons"/>
>       </collection-descriptor>        
></class-descriptor>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to