Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » [CDO / Hibernate Store] "Cannot modify a frozen revision"(problem when using hibernate store and teneo.jpa .@id annotation)
[CDO / Hibernate Store] "Cannot modify a frozen revision" [message #811389] Fri, 02 March 2012 09:38 Go to next message
Holger Schill is currently offline Holger SchillFriend
Messages: 75
Registered: July 2009
Member
Hi forks,

after updating to CDO 4.0 we are facing the problem that we cannot insert things through HibernateStore. Every transaction that inserts a new / already existing object causes a IllegalStateException thrown in org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.checkFrozen(int, Object).
Here is the annotation on the ID feature of our MM: @model id="true" annotation="teneo.jpa appinfo='@Id\r\n@GeneratedValue'".

When we remove this we are fine in using CDO and hibernateStore but unfortunately we are heavily using HQL with statements where we do want to find Objects by ID. For that reason we need to know the ID of the same. As Eike already mentioned this seams to be a problem with Hibernate Store and not CDO.
@Martin As I read in older posts from July or October you mentioned that this issue is fixed in 4.1? After we updated to an integration build we are facing the same problem. I'll give the latest weekly a try also but it would be really cool if you could give us a hint?

Thanks in advice,

Holger


--
Need professional support for Eclipse Modeling?
Go visit: http://xtext.itemis.com
Re: [CDO / Hibernate Store] "Cannot modify a frozen revision" [message #813078 is a reply to message #811389] Sun, 04 March 2012 20:18 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Holger,
Just to let you know that I have seen your post but have not had time to check it out. Indeed the checkFrozen should not
occur, I remember I solved something there. I hope to come back to asap, give me a few days...

gr. Martin

On 03/02/2012 10:38 AM, Holger Schill wrote:
> Hi forks,
>
> after updating to CDO 4.0 we are facing the problem that we cannot insert things through HibernateStore. Every
> transaction that inserts a new / already existing object causes a IllegalStateException thrown in
> org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.checkFrozen(int, Object). Here is the annotation on the ID
> feature of our MM: @model id="true" annotation="teneo.jpa appinfo='@Id\r\n@GeneratedValue'".
>
> When we remove this we are fine in using CDO and hibernateStore but unfortunately we are heavily using HQL with
> statements where we do want to find Objects by ID. For that reason we need to know the ID of the same. As Eike already
> mentioned this seams to be a problem with Hibernate Store and not CDO. @Martin As I read in older posts from July or
> October you mentioned that this issue is fixed in 4.1? After we updated to an integration build we are facing the same
> problem. I'll give the latest weekly a try also but it would be really cool if you could give us a hint?
>
> Thanks in advice,
>
> Holger
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [CDO / Hibernate Store] "Cannot modify a frozen revision" [message #813968 is a reply to message #813078] Mon, 05 March 2012 22:23 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Holger,
I checked the source tree and the log, but I did something related to frozen about a year ago, but that seems different.
Can you post the stacktrace?
Can you try without the generatedvalue annotation but with the Id annotation?

gr. Martin

On 03/04/2012 09:18 PM, Martin Taal wrote:
> Hi Holger,
> Just to let you know that I have seen your post but have not had time to check it out. Indeed the checkFrozen should not
> occur, I remember I solved something there. I hope to come back to asap, give me a few days...
>
> gr. Martin
>
> On 03/02/2012 10:38 AM, Holger Schill wrote:
>> Hi forks,
>>
>> after updating to CDO 4.0 we are facing the problem that we cannot insert things through HibernateStore. Every
>> transaction that inserts a new / already existing object causes a IllegalStateException thrown in
>> org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.checkFrozen(int, Object). Here is the annotation on the ID
>> feature of our MM: @model id="true" annotation="teneo.jpa appinfo='@Id\r\n@GeneratedValue'".
>>
>> When we remove this we are fine in using CDO and hibernateStore but unfortunately we are heavily using HQL with
>> statements where we do want to find Objects by ID. For that reason we need to know the ID of the same. As Eike already
>> mentioned this seams to be a problem with Hibernate Store and not CDO. @Martin As I read in older posts from July or
>> October you mentioned that this issue is fixed in 4.1? After we updated to an integration build we are facing the same
>> problem. I'll give the latest weekly a try also but it would be really cool if you could give us a hint?
>>
>> Thanks in advice,
>>
>> Holger
>>
>
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [CDO / Hibernate Store] "Cannot modify a frozen revision" [message #814453 is a reply to message #813968] Tue, 06 March 2012 13:22 Go to previous messageGo to next message
Holger Schill is currently offline Holger SchillFriend
Messages: 75
Registered: July 2009
Member
Thank you Martin,

I will try it out tomorrow without the @GeneratedValue annotation.
I read something about a fix in other posts but currently we still have the problem with the latest weekly.
Tomorrow I will find the time to post the stacktrace.
Thank you in advice for your help.

Regards,
Holger
Re: [CDO / Hibernate Store] "Cannot modify a frozen revision" [message #815179 is a reply to message #813968] Wed, 07 March 2012 10:21 Go to previous messageGo to next message
Holger Schill is currently offline Holger SchillFriend
Messages: 75
Registered: July 2009
Member
Hi Martin,

here the complete stackstrace without removing @GeneratedValue with the latest weekly from CDO.


Hibernate: insert into [hilfeartengruppe] ([nr], [bezeichnung], [ablaufdatum], resource_id, container_id, version, commit_TimeStamp, dtype) values (?, ?, ?, ?, ?, ?, ?, 'HilfeartenGruppe')
2012-03-07 11:16:50.341 DEBUG [Thread-5 ] (IdentifierGeneratorHelper.java:87) - Natively generated identity: 1
2012-03-07 11:16:50.341 DEBUG [Thread-5 ] (AbstractBatcher.java:418) - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)

!ENTRY org.eclipse.emf.cdo.server.hibernate 4 0 2012-03-07 11:16:50.341
!MESSAGE Cannot modify a frozen revision
!STACK 0
java.lang.IllegalStateException: Cannot modify a frozen revision
at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.checkFrozen(CDORevisionImpl.java:135)
at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.setValue(CDORevisionImpl.java:89)
at org.eclipse.emf.cdo.spi.common.revision.BaseCDORevision.setValue(BaseCDORevision.java:610)
at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOPropertySetter.set(CDOPropertySetter.java:135)
at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDPropertySetter.set(CDOIDPropertySetter.java:84)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.setIdentifier(AbstractEntityTuplizer.java:267)
at org.hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:3865)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:77)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:252)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:475)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:353)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
at org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreAccessor.doWrite(HibernateStoreAccessor.java:684)
at org.eclipse.emf.cdo.spi.server.StoreAccessorBase.write(StoreAccessorBase.java:149)
at org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:487)
at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:43)
at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1)
at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:262)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:96)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:109)
at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:84)
at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:90)
at org.eclipse.net4j.signal.Signal.doInput(Signal.java:326)
at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:63)
at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:63)
at org.eclipse.net4j.signal.Signal.runSync(Signal.java:251)
at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
[ERROR] Cannot modify a frozen revision
java.lang.IllegalStateException: Cannot modify a frozen revision
at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.checkFrozen(CDORevisionImpl.java:135)
at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.setValue(CDORevisionImpl.java:89)
at org.eclipse.emf.cdo.spi.common.revision.BaseCDORevision.setValue(BaseCDORevision.java:610)
at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOPropertySetter.set(CDOPropertySetter.java:135)
at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDPropertySetter.set(CDOIDPropertySetter.java:84)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.setIdentifier(AbstractEntityTuplizer.java:267)
at org.hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:3865)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:77)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:252)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:475)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:353)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
at org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreAccessor.doWrite(HibernateStoreAccessor.java:684)
at org.eclipse.emf.cdo.spi.server.StoreAccessorBase.write(StoreAccessorBase.java:149)
at org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:487)
at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:43)
at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1)
at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:262)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:96)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:109)
at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:84)
at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:90)
at org.eclipse.net4j.signal.Signal.doInput(Signal.java:326)
at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:63)
at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:63)
at org.eclipse.net4j.signal.Signal.runSync(Signal.java:251)
at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
[ERROR] Cannot modify a frozen revision
java.lang.IllegalStateException: Cannot modify a frozen revision
at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.checkFrozen(CDORevisionImpl.java:135)
at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.setValue(CDORevisionImpl.java:89)
at org.eclipse.emf.cdo.spi.common.revision.BaseCDORevision.setValue(BaseCDORevision.java:610)
at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOPropertySetter.set(CDOPropertySetter.java:135)
at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDPropertySetter.set(CDOIDPropertySetter.java:84)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.setIdentifier(AbstractEntityTuplizer.java:267)
at org.hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:3865)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:77)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:252)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:475
!ENTRY org.eclipse.emf.cdo.server 4 0 2012-03-07 11:16:50.358
!MESSAGE Cannot modify a frozen revision
!STACK 0
java.lang.IllegalStateException: Cannot modify a frozen revision
at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.checkFrozen(CDORevisionImpl.java:135)
at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.setValue(CDORevisionImpl.java:89)
at org.eclipse.emf.cdo.spi.common.revision.BaseCDORevision.setValue(BaseCDORevision.java:610)
at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOPropertySetter.set(CDOPropertySetter.java:135)
at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDPropertySetter.set(CDOIDPropertySetter.java:84)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.setIdentifier(AbstractEntityTuplizer.java:267)
at org.hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:3865)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:77)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:252)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:475)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:353)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
at org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreAccessor.doWrite(HibernateStoreAccessor.java:684)
at org.eclipse.emf.cdo.spi.server.StoreAccessorBase.write(StoreAccessorBase.java:149)
at org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:487)
at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:43)
at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1)
at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:262)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:96)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:109)
at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:84)
at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:90)
at org.eclipse.net4j.signal.Signal.doInput(Signal.java:326)
at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:63)
at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:63)
at org.eclipse.net4j.signal.Signal.runSync(Signal.java:251)
at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
2012-03-07 11:16:50.358 DEBUG [Thread-5 ] (JDBCTransaction.java:182) - rollback
)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:353)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
at org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreAccessor.doWrite(HibernateStoreAccessor.java:684)
at org.eclipse.emf.cdo.spi.server.StoreAccessorBase.write(StoreAccessorBase.java:149)
at org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:487)
at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:43)
at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1)
at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:262)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:96)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:109)
at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:84)
at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:90)
at org.eclipse.net4j.signal.Signal.doInput(Signal.java:326)
at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:63)
at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:63)
at org.eclipse.net4j.signal.Signal.runSync(Signal.java:251)
at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
2012-03-07 11:16:50.358 DEBUG [Thread-5 ] (JDBCTransaction.java:193) - rolled back JDBC Connection
2012-03-07 11:16:50.358 DEBUG [Thread-5 ] (ConnectionManager.java:427) - aggressively releasing JDBC connection
2012-03-07 11:16:50.358 DEBUG [Thread-5 ] (ConnectionManager.java:464) - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
Re: [CDO / Hibernate Store] "Cannot modify a frozen revision" [message #815186 is a reply to message #813968] Wed, 07 March 2012 10:29 Go to previous messageGo to next message
Holger Schill is currently offline Holger SchillFriend
Messages: 75
Registered: July 2009
Member
Without @GeneratedValue we have the problem that we have to care about the ids on our own.

org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save()

What is the common way?

Thank you in advice Martin,

Holger

[Updated on: Wed, 07 March 2012 14:38]

Report message to a moderator

Re: [CDO / Hibernate Store] "Cannot modify a frozen revision" [message #815385 is a reply to message #815179] Wed, 07 March 2012 15:39 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Holger,
Clear I can see what happens, can you enter a bugzilla for this (GeneratedValue does not work with CDO HibernateStore)?

gr. Martin

On 03/07/2012 11:21 AM, Holger Schill wrote:
> Hi Martin,
>
> here the complete stackstrace without removing @GeneratedValue with the latest weekly from CDO.
>
> Hibernate: insert into [hilfeartengruppe] ([nr], [bezeichnung], [ablaufdatum], resource_id, container_id, version,
> commit_TimeStamp, dtype) values (?, ?, ?, ?, ?, ?, ?, 'HilfeartenGruppe')
> 2012-03-07 11:16:50.341 DEBUG [Thread-5 ] (IdentifierGeneratorHelper.java:87) - Natively generated identity: 1
> 2012-03-07 11:16:50.341 DEBUG [Thread-5 ] (AbstractBatcher.java:418) - about to close PreparedStatement (open
> PreparedStatements: 1, globally: 1)
>
> !ENTRY org.eclipse.emf.cdo.server.hibernate 4 0 2012-03-07 11:16:50.341
> !MESSAGE Cannot modify a frozen revision
> !STACK 0
> java.lang.IllegalStateException: Cannot modify a frozen revision
> at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.checkFrozen(CDORevisionImpl.java:135)
> at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.setValue(CDORevisionImpl.java:89)
> at org.eclipse.emf.cdo.spi.common.revision.BaseCDORevision.setValue(BaseCDORevision.java:610)
> at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOPropertySetter.set(CDOPropertySetter.java:135)
> at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDPropertySetter.set(CDOIDPropertySetter.java:84)
> at org.hibernate.tuple.entity.AbstractEntityTuplizer.setIdentifier(AbstractEntityTuplizer.java:267)
> at org.hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:3865)
> at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:77)
> at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
> at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320)
> at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
> at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
> at
> org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
>
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
> at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
> at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
> at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:252)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
> at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:475)
> at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:353)
> at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
> at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
> at
> org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
>
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
> at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
> at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
> at org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreAccessor.doWrite(HibernateStoreAccessor.java:684)
> at org.eclipse.emf.cdo.spi.server.StoreAccessorBase.write(StoreAccessorBase.java:149)
> at org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:487)
> at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:43)
> at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1)
> at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96)
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:262)
>
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:96)
>
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:109)
>
> at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:84)
> at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:90)
> at org.eclipse.net4j.signal.Signal.doInput(Signal.java:326)
> at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:63)
> at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:63)
> at org.eclipse.net4j.signal.Signal.runSync(Signal.java:251)
> at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> [ERROR] Cannot modify a frozen revision
> java.lang.IllegalStateException: Cannot modify a frozen revision
> at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.checkFrozen(CDORevisionImpl.java:135)
> at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.setValue(CDORevisionImpl.java:89)
> at org.eclipse.emf.cdo.spi.common.revision.BaseCDORevision.setValue(BaseCDORevision.java:610)
> at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOPropertySetter.set(CDOPropertySetter.java:135)
> at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDPropertySetter.set(CDOIDPropertySetter.java:84)
> at org.hibernate.tuple.entity.AbstractEntityTuplizer.setIdentifier(AbstractEntityTuplizer.java:267)
> at org.hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:3865)
> at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:77)
> at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
> at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320)
> at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
> at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
> at
> org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
>
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
> at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
> at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
> at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:252)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
> at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:475)
> at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:353)
> at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
> at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
> at
> org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
>
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
> at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
> at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
> at org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreAccessor.doWrite(HibernateStoreAccessor.java:684)
> at org.eclipse.emf.cdo.spi.server.StoreAccessorBase.write(StoreAccessorBase.java:149)
> at org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:487)
> at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:43)
> at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1)
> at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96)
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:262)
>
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:96)
>
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:109)
>
> at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:84)
> at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:90)
> at org.eclipse.net4j.signal.Signal.doInput(Signal.java:326)
> at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:63)
> at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:63)
> at org.eclipse.net4j.signal.Signal.runSync(Signal.java:251)
> at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> [ERROR] Cannot modify a frozen revision
> java.lang.IllegalStateException: Cannot modify a frozen revision
> at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.checkFrozen(CDORevisionImpl.java:135)
> at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.setValue(CDORevisionImpl.java:89)
> at org.eclipse.emf.cdo.spi.common.revision.BaseCDORevision.setValue(BaseCDORevision.java:610)
> at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOPropertySetter.set(CDOPropertySetter.java:135)
> at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDPropertySetter.set(CDOIDPropertySetter.java:84)
> at org.hibernate.tuple.entity.AbstractEntityTuplizer.setIdentifier(AbstractEntityTuplizer.java:267)
> at org.hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:3865)
> at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:77)
> at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
> at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320)
> at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
> at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
> at
> org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
>
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
> at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
> at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
> at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:252)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
> at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:475
> !ENTRY org.eclipse.emf.cdo.server 4 0 2012-03-07 11:16:50.358
> !MESSAGE Cannot modify a frozen revision
> !STACK 0
> java.lang.IllegalStateException: Cannot modify a frozen revision
> at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.checkFrozen(CDORevisionImpl.java:135)
> at org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl.setValue(CDORevisionImpl.java:89)
> at org.eclipse.emf.cdo.spi.common.revision.BaseCDORevision.setValue(BaseCDORevision.java:610)
> at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOPropertySetter.set(CDOPropertySetter.java:135)
> at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDPropertySetter.set(CDOIDPropertySetter.java:84)
> at org.hibernate.tuple.entity.AbstractEntityTuplizer.setIdentifier(AbstractEntityTuplizer.java:267)
> at org.hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:3865)
> at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:77)
> at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
> at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320)
> at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
> at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
> at
> org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
>
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
> at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
> at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
> at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:252)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
> at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:475)
> at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:353)
> at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
> at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
> at
> org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
>
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
> at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
> at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
> at org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreAccessor.doWrite(HibernateStoreAccessor.java:684)
> at org.eclipse.emf.cdo.spi.server.StoreAccessorBase.write(StoreAccessorBase.java:149)
> at org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:487)
> at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:43)
> at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1)
> at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96)
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:262)
>
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:96)
>
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:109)
>
> at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:84)
> at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:90)
> at org.eclipse.net4j.signal.Signal.doInput(Signal.java:326)
> at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:63)
> at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:63)
> at org.eclipse.net4j.signal.Signal.runSync(Signal.java:251)
> at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> 2012-03-07 11:16:50.358 DEBUG [Thread-5 ] (JDBCTransaction.java:182) - rollback
> )
> at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:353)
> at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
> at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
> at
> org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
>
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
> at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
> at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
> at org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreAccessor.doWrite(HibernateStoreAccessor.java:684)
> at org.eclipse.emf.cdo.spi.server.StoreAccessorBase.write(StoreAccessorBase.java:149)
> at org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:487)
> at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:43)
> at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1)
> at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96)
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:262)
>
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:96)
>
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:109)
>
> at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:84)
> at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:90)
> at org.eclipse.net4j.signal.Signal.doInput(Signal.java:326)
> at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:63)
> at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:63)
> at org.eclipse.net4j.signal.Signal.runSync(Signal.java:251)
> at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> 2012-03-07 11:16:50.358 DEBUG [Thread-5 ] (JDBCTransaction.java:193) - rolled back JDBC Connection
> 2012-03-07 11:16:50.358 DEBUG [Thread-5 ] (ConnectionManager.java:427) - aggressively releasing JDBC connection
> 2012-03-07 11:16:50.358 DEBUG [Thread-5 ] (ConnectionManager.java:464) - releasing JDBC connection [ (open
> PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [CDO / Hibernate Store] "Cannot modify a frozen revision" [message #815395 is a reply to message #815186] Wed, 07 March 2012 15:54 Go to previous messageGo to next message
Holger Schill is currently offline Holger SchillFriend
Messages: 75
Registered: July 2009
Member
Done thanks. 373545

Is there any workaround to have generated IDs?

Regards,

Holger


--
Need professional support for Eclipse Modeling?
Go visit: http://xtext.itemis.com

[Updated on: Wed, 07 March 2012 15:56]

Report message to a moderator

Re: [CDO / Hibernate Store] "Cannot modify a frozen revision" [message #819947 is a reply to message #815385] Tue, 13 March 2012 14:31 Go to previous messageGo to next message
Holger Schill is currently offline Holger SchillFriend
Messages: 75
Registered: July 2009
Member
Hi Martin,

is there a way to have an own implementation to calculate the IDs in the server component? Something like an implementation of org.hibernate.id.IdentifierGenerator?

Thanks,

Holger


--
Need professional support for Eclipse Modeling?
Go visit: http://xtext.itemis.com
Re: [CDO / Hibernate Store] "Cannot modify a frozen revision" [message #820096 is a reply to message #819947] Tue, 13 March 2012 18:15 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Holger,
I myself am moving away from these numeric generated id's to generated uuids. The uuids are supposed to be always unique
and can be generated on the client. So if I can give an advice I would go that way, use a string id efeature and
generate the id on the client when creating a new object.

gr, Martin

On 03/13/2012 03:31 PM, Holger Schill wrote:
> Hi Martin,
>
> is there a way to have an own implementation to calculate the IDs in the server component? Something like an
> implementation of org.hibernate.id.IdentifierGenerator?
>
> Thanks,
>
> Holger
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [CDO / Hibernate Store] "Cannot modify a frozen revision" [message #822310 is a reply to message #820096] Fri, 16 March 2012 13:04 Go to previous messageGo to next message
Holger Schill is currently offline Holger SchillFriend
Messages: 75
Registered: July 2009
Member
Hi Martin,

I just tried out the company example from you and I am wondering that even there the org.eclipse.emf.cdo.examples.hibernate.client.CustomIDGeneratorTest is failing with Cannot modify a frozen revision. The IDGenerator is doeing his job and creates a UUID but than it leads to the same behaviour that we are facing in our case.

Generating the UUID with a custom IDGenerator is a really nice way to go but not usable as it seams.

Any conclusions?

Regars and thanks,
Holger


--
Need professional support for Eclipse Modeling?
Go visit: http://xtext.itemis.com
Re: [CDO / Hibernate Store] "Cannot modify a frozen revision&qu [message #823914 is a reply to message #822310] Sun, 18 March 2012 14:49 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Holger,
Okay, this test case is normally not run. I need to check with Eike on how to solve this.

One thing I tried is just have the @Id annotation and assign the id in the client. That worked fine for me. So you can
generate the id on the client using a uuid generator, for now.

gr. Martin

On 03/16/2012 02:04 PM, Holger Schill wrote:
> Hi Martin,
>
> I just tried out the company example from you and I am wondering that even there the
> org.eclipse.emf.cdo.examples.hibernate.client.CustomIDGeneratorTest is failing with Cannot modify a frozen revision. The
> IDGenerator is doeing his job and creates a UUID but than it leads to the same behaviour that we are facing in our case.
>
> Generating the UUID with a custom IDGenerator is a really nice way to go but not usable as it seams.
>
> Any conclusions?
>
> Regars and thanks,
> Holger
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@xxxxxxxx - mtaal@xxxxxxxx
Web: www.springsite.com - www.elver.org
Re: [CDO / Hibernate Store] "Cannot modify a frozen revision&qu [message #824193 is a reply to message #823914] Mon, 19 March 2012 11:21 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Holger,
I had a chat with Eike and the issue is a bit less trivial. Although we can prevent this exception from being thrown,
the id-feature value is not sent back to the client. To do that requires more work and a more fundamental change (to
allow the server to make changes to an object and sent the changes back to the client).
This requires more thought and design.

So for now I would follow this approach:
- annotate your id-efeature just with @Id
- on the client generate a unique UUID using a uuid generator and set that in the efeature

This should work fine afaics and the result would be the same (a unique id for each object).

Let me know if you have any questions/remarks.

gr. Martin

On 03/18/2012 03:49 PM, Martin Taal wrote:
> Hi Holger,
> Okay, this test case is normally not run. I need to check with Eike on how to solve this.
>
> One thing I tried is just have the @Id annotation and assign the id in the client. That worked fine for me. So you can
> generate the id on the client using a uuid generator, for now.
>
> gr. Martin
>
> On 03/16/2012 02:04 PM, Holger Schill wrote:
>> Hi Martin,
>>
>> I just tried out the company example from you and I am wondering that even there the
>> org.eclipse.emf.cdo.examples.hibernate.client.CustomIDGeneratorTest is failing with Cannot modify a frozen revision. The
>> IDGenerator is doeing his job and creates a UUID but than it leads to the same behaviour that we are facing in our case.
>>
>> Generating the UUID with a custom IDGenerator is a really nice way to go but not usable as it seams.
>>
>> Any conclusions?
>>
>> Regars and thanks,
>> Holger
>>
>
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@xxxxxxxx - mtaal@xxxxxxxx
Web: www.springsite.com - www.elver.org
Re: [CDO / Hibernate Store] "Cannot modify a frozen revision&qu [message #824959 is a reply to message #824193] Tue, 20 March 2012 09:37 Go to previous messageGo to next message
Holger Schill is currently offline Holger SchillFriend
Messages: 75
Registered: July 2009
Member
Hi Martin,

after debugging the frameworkcode looking for a usefull fix I have the same feeling. I tried it out some time ago and it worked fine with a IDGenerated at the clinet side. Unfortunately my customer does not want this. I will do my best to convince them. A UUID should be as unique as possible even on the client. Smile

Thanks for you help. Please let me know If I can help to fix this issue.
By the way. I observed that when the exception is prevented everything is fine except the sent back to the client. Actually in CDO / HibernateStore 3.x this is the behavior. I think a first fix to prevent the exection is fine for most of the cases. I tried to hack this my setting the frozen attribute in the revision to false in the IDGenerator on the server. This solves my issue by is really ugly. Smile

Thanks for your time and support.

Regards,

Holger


--
Need professional support for Eclipse Modeling?
Go visit: http://xtext.itemis.com
Re: [CDO / Hibernate Store] "Cannot modify a frozen revision&am [message #825009 is a reply to message #824959] Tue, 20 March 2012 10:48 Go to previous message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Holger,
Yes, that's also what Eike and I found it is not difficult to prevent the exception, but the id is not filled on the
client which seems strange. But the eventual solution will anyway consist of 2 parts: one to prevent the exception, and
two to send back the data to the client.

I will chat with Eike if the first thing can already be done now.

gr. Martin

On 03/20/2012 10:37 AM, Holger Schill wrote:
> Hi Martin,
>
> after debugging the frameworkcode looking for a usefull fix I have the same feeling. I tried it out some time ago and it
> worked fine with a IDGenerated at the clinet side. Unfortunately my customer does not want this. I will do my best to
> convince them. A UUID should be as unique as possible even on the client. :)
>
> Thanks for you help. Please let me know If I can help to fix this issue.
> By the way. I observed that when the exception is prevented everything is fine except the sent back to the client.
> Actually in CDO / HibernateStore 3.x this is the behavior. I think a first fix to prevent the exection is fine for most
> of the cases. I tried to hack this my setting the frozen attribute in the revision to false in the IDGenerator on the
> server. This solves my issue by is really ugly. :)
>
> Thanks for your time and support.
>
> Regards,
>
> Holger


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@xxxxxxxx - mtaal@xxxxxxxx
Web: www.springsite.com - www.elver.org
Previous Topic:EMF-CDO/JFace databinding issue on remote client
Next Topic:Processing XSD based XML with EMF: is it possible or not?
Goto Forum:
  


Current Time: Thu Apr 25 05:15:38 GMT 2024

Powered by FUDForum. Page generated in 0.03807 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top