Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » [CDO] Exception on Repository activation
[CDO] Exception on Repository activation [message #754361] Wed, 02 November 2011 10:42 Go to next message
Federico Tomassetti is currently offline Federico TomassettiFriend
Messages: 190
Registered: July 2009
Location: Dublin
Senior Member

Hi, have someone experience this error on Repository activation?

I obtain it when I call the method activate on a repository. I call it that manually to trigger the error, normally it is internally called by LifecicyleUtil.activate(...).

MESSAGE: ERROR: current transaction is aborted, commands ignored until end of transaction block
[0] org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
[1] org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
[2] org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
[3] org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
[4] org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
[5] org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:252)
[6] org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.ObjectTypeTable.getMaxID(ObjectTypeTable.java:174)
[7] org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.DelegatingObjectTypeMapper.getMaxID(DelegatingObjectTypeMapper.java:85)
[8] org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.AbstractHorizontalMappingStrategy.repairAfterCrash(AbstractHorizontalMappingStrategy.java:94)
[9] org.eclipse.emf.cdo.server.internal.db.DBStore.repairAfterCrash(DBStore.java:679)
[10] org.eclipse.emf.cdo.server.internal.db.DBStore.reStart(DBStore.java:661)
[11] org.eclipse.emf.cdo.server.internal.db.DBStore.doActivate(DBStore.java:556)
[12] org.eclipse.net4j.util.lifecycle.Lifecycle.activate(Lifecycle.java:75)
[13] org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:101)
[14] org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:91)
[15] org.eclipse.emf.cdo.internal.server.Repository.doActivate(Repository.java:1792)
[16] org.eclipse.net4j.util.lifecycle.Lifecycle.activate(Lifecycle.java:75)
[17] it.rcpvision.cdoexamples.stockmanager.server.Server.start(Server.java:118)
[18] it.rcpvision.cdoexamples.stockmanager.server.tests.AbstractCDOTest.startServer(AbstractCDOTest.java:158)
[19] it.csipiemonte.cdoexamples.locking.LockingTest.setUp(LockingTest.java:39)
[20] sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[21] sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[22] sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[23] java.lang.reflect.Method.invoke(Unknown Source)
[24] org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
[25] org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
[26] org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
[27] org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
[28] org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
[29] org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
[30] org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
[31] org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
[32] org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
[33] org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
[34] org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
[35] org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
[36] org.junit.runners.ParentRunner.run(ParentRunner.java:236)
[37] org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
[38] org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
[39] org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
[40] org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
[41] org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
[42] org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)


This exception should be thrown when something corrupted the transaction.
The same code runs smoothly using another database so probably the database was corrupted in some way... I have really no idea how...


[Updated on: Wed, 02 November 2011 11:13]

Report message to a moderator

Re: [CDO] Exception on Repository activation [message #754587 is a reply to message #754361] Thu, 03 November 2011 12:21 Go to previous messageGo to next message
Stefan Winkler is currently offline Stefan WinklerFriend
Messages: 307
Registered: July 2009
Location: Germany
Senior Member
Hi Frederico,

two things:
(1) The fact that repairAfterCrash is called (as I can see in your stack
trace) is a hint that the repo has not been shut down properly. Are you
sure that you deactivate the repo after you activate it manually?

(2) The repairAfterCrash does not explain the actual error. The problem
is that from your stack trace, I cannot see the original error which led
up to your error message (the message just says that the DB has
enountered an error before this one and therefore is ignoring all
subsequent commands in the current (transaction) workflow). Can you
reproduce a more comprehensive log (or even activate tracing)?

Cheers,
Stefan




Am 02.11.11 11:42, schrieb Federico Tomassetti:
> Hi, have someone experience this error on Repository activation?
>
> I obtain it when I call the method activate on a repository. I call it
> that manually to trigger the error, normally it is internally called by
> LifecicyleUtil.activate(...).
>
>
> MESSAGE: ERROR: current transaction is aborted, commands ignored until
> end of transaction block
> [0]
> org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
>
> [1]
> org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
>
> [2]
> org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
>
> [3]
> org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
>
> [4]
> org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
>
> [5]
> org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:252)
>
> [6]
> org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.ObjectTypeTable.getMaxID(ObjectTypeTable.java:174)
>
> [7]
> org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.DelegatingObjectTypeMapper.getMaxID(DelegatingObjectTypeMapper.java:85)
>
> [8]
> org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.AbstractHorizontalMappingStrategy.repairAfterCrash(AbstractHorizontalMappingStrategy.java:94)
>
> [9]
> org.eclipse.emf.cdo.server.internal.db.DBStore.repairAfterCrash(DBStore.java:679)
>
> [10]
> org.eclipse.emf.cdo.server.internal.db.DBStore.reStart(DBStore.java:661)
> [11]
> org.eclipse.emf.cdo.server.internal.db.DBStore.doActivate(DBStore.java:556)
> [12] org.eclipse.net4j.util.lifecycle.Lifecycle.activate(Lifecycle.java:75)
> [13]
> org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:101)
>
> [14]
> org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:91)
>
> [15]
> org.eclipse.emf.cdo.internal.server.Repository.doActivate(Repository.java:1792)
>
> [16] org.eclipse.net4j.util.lifecycle.Lifecycle.activate(Lifecycle.java:75)
> [17]
> it.rcpvision.cdoexamples.stockmanager.server.Server.start(Server.java:118)
> [18]
> it.rcpvision.cdoexamples.stockmanager.server.tests.AbstractCDOTest.startServer(AbstractCDOTest.java:158)
>
> [19]
> it.csipiemonte.cdoexamples.locking.LockingTest.setUp(LockingTest.java:39)
> [20] sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> [21] sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> [22] sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> [23] java.lang.reflect.Method.invoke(Unknown Source)
> [24]
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>
> [25]
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>
> [26]
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>
> [27]
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
>
> [28]
> org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
>
> [29]
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
>
> [30]
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
>
> [31] org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> [32] org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> [33] org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> [34] org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> [35] org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> [36] org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> [37]
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>
> [38]
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>
> [39]
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>
> [40]
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>
> [41]
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>
> [42]
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>
>
Re: [CDO] Exception on Repository activation [message #754773 is a reply to message #754587] Fri, 04 November 2011 09:44 Go to previous messageGo to next message
Federico Tomassetti is currently offline Federico TomassettiFriend
Messages: 190
Registered: July 2009
Location: Dublin
Senior Member

I was writing some tests and probably the test suite crashed causing the repo to be not deactivate correctly.

I am writing a standalone application and I don't know how to enable tracing. I have this exception caused by something failing previously and no idea about how to find what and where failed...


Re: [CDO] Exception on Repository activation [message #754817 is a reply to message #754773] Fri, 04 November 2011 13:12 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Am 04.11.2011 10:44, schrieb Federico Tomassetti:
> I was writing some tests and probably the test suite crashed causing the repo to be not deactivate correctly.
Reusing a repository in tests can be a dangerous undertaking. You must somehow ensure that the single test cases do not
impact each other through the repo state.

>
> I am writing a standalone application and I don't know how to enable tracing.
There's a FAQ entry: http://wiki.eclipse.org/FAQ_for_CDO_and_Net4j#How_can_I_enable_tracing.3F

> I have this exception caused by something failing previously and no idea about how to find what and where failed...
With the above link you should get lots of useful information on the console or you can direct it to a file.

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper


Re: [CDO] Exception on Repository activation [message #756813 is a reply to message #754817] Tue, 15 November 2011 09:05 Go to previous messageGo to next message
Federico Tomassetti is currently offline Federico TomassettiFriend
Messages: 190
Registered: July 2009
Location: Dublin
Senior Member

I was able to reproduce the error with tracing enabled.
This is what I got before the exception was thrown.
All that I can see it is that CDO is trying to create tables that are already there.

main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating ManagedContainer
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating {org.eclipse.net4j.randomizers[default]=Factory[org.eclipse.net4j.randomizers, default], org.eclipse.net4j.userManagers[file]=Factory[org.eclipse.net4j.userManagers, file], org.eclipse.net4j.serverProtocols[failover-client]=Factory[org.eclipse.net4j.serverProtocols, failover-client], org.eclipse.net4j.serverProtocols[cdo]=Factory[org.eclipse.net4j.serverProtocols, cdo], org.eclipse.net4j.serverProtocols[heartbeat]=Factory[org.eclipse.net4j.serverProtocols, heartbeat], org.eclipse.net4j.bufferProviders[default]=Factory[org.eclipse.net4j.bufferProviders, default], org.eclipse.net4j.acceptors[tcp]=Factory[org.eclipse.net4j.acceptors, tcp], org.eclipse.net4j.connectors[tcp]=Factory[org.eclipse.net4j.connectors, tcp], org.eclipse.net4j.executorServices[default]=Factory[org.eclipse.net4j.executorServices, default], org.eclipse.net4j.serverProtocols[failover]=Factory[org.eclipse.net4j.serverProtocols, failover], org.eclipse.net4j.util.timers[daemon]=Factory[org.eclipse.net4j.util.timers, daemon], org.eclipse.net4j.selectors[tcp]=Factory[org.eclipse.net4j.selectors, tcp], org.eclipse.emf.cdo.server.net4j.failoverMonitors[net4j]=Factory[org.eclipse.emf.cdo.server.net4j.failoverMonitors, net4j]}
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  HashMapRegistry@1
  Registry.autoCommit = true
  Registry.transaction = null
  map = 
    org.eclipse.net4j.randomizers[default]=Factory[org.eclipse.net4j.randomizers, default]
    org.eclipse.net4j.userManagers[file]=Factory[org.eclipse.net4j.userManagers, file]
    org.eclipse.net4j.serverProtocols[failover-client]=Factory[org.eclipse.net4j.serverProtocols, failover-client]
    org.eclipse.net4j.serverProtocols[cdo]=Factory[org.eclipse.net4j.serverProtocols, cdo]
    org.eclipse.net4j.serverProtocols[heartbeat]=Factory[org.eclipse.net4j.serverProtocols, heartbeat]
    org.eclipse.net4j.bufferProviders[default]=Factory[org.eclipse.net4j.bufferProviders, default]
    org.eclipse.net4j.acceptors[tcp]=Factory[org.eclipse.net4j.acceptors, tcp]
    org.eclipse.net4j.connectors[tcp]=Factory[org.eclipse.net4j.connectors, tcp]
    org.eclipse.net4j.executorServices[default]=Factory[org.eclipse.net4j.executorServices, default]
    org.eclipse.net4j.serverProtocols[failover]=Factory[org.eclipse.net4j.serverProtocols, failover]
    org.eclipse.net4j.util.timers[daemon]=Factory[org.eclipse.net4j.util.timers, daemon]
    org.eclipse.net4j.selectors[tcp]=Factory[org.eclipse.net4j.selectors, tcp]
    org.eclipse.emf.cdo.server.net4j.failoverMonitors[net4j]=Factory[org.eclipse.emf.cdo.server.net4j.failoverMonitors, net4j]

main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  ManagedContainer@2
  factoryRegistry = 
    org.eclipse.net4j.randomizers[default]=Factory[org.eclipse.net4j.randomizers, default]
    org.eclipse.net4j.userManagers[file]=Factory[org.eclipse.net4j.userManagers, file]
    org.eclipse.net4j.serverProtocols[failover-client]=Factory[org.eclipse.net4j.serverProtocols, failover-client]
    org.eclipse.net4j.serverProtocols[cdo]=Factory[org.eclipse.net4j.serverProtocols, cdo]
    org.eclipse.net4j.serverProtocols[heartbeat]=Factory[org.eclipse.net4j.serverProtocols, heartbeat]
    org.eclipse.net4j.bufferProviders[default]=Factory[org.eclipse.net4j.bufferProviders, default]
    org.eclipse.net4j.acceptors[tcp]=Factory[org.eclipse.net4j.acceptors, tcp]
    org.eclipse.net4j.connectors[tcp]=Factory[org.eclipse.net4j.connectors, tcp]
    org.eclipse.net4j.executorServices[default]=Factory[org.eclipse.net4j.executorServices, default]
    org.eclipse.net4j.serverProtocols[failover]=Factory[org.eclipse.net4j.serverProtocols, failover]
    org.eclipse.net4j.util.timers[daemon]=Factory[org.eclipse.net4j.util.timers, daemon]
    org.eclipse.net4j.selectors[tcp]=Factory[org.eclipse.net4j.selectors, tcp]
    org.eclipse.emf.cdo.server.net4j.failoverMonitors[net4j]=Factory[org.eclipse.emf.cdo.server.net4j.failoverMonitors, net4j]
  postProcessors = 
    org.eclipse.net4j.TransportInjector@50988
    org.eclipse.net4j.signal.heartbeat.HeartBeatProtocol$Server$TimerInjector@b4e29b
    org.eclipse.net4j.internal.tcp.TCPSelectorInjector@18941f7
  elementRegistry = 

main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating Repository[CDORepositoryForExperiments]
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating DBStore@3
main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_lobs (id text, size BIGINT, bdata bytea, cdata text)
main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_lobs" already exists. Trying to rollback operation
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT id, size, bdata, cdata FROM cdo_lobs
main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_branches (id INTEGER, name text, base_id INTEGER, base_time BIGINT)
main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_branches" already exists. Trying to rollback operation
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT id, name, base_id, base_time FROM cdo_branches
main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_package_units (id text, original_type INTEGER, time_stamp BIGINT, package_data bytea)
main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_package_units" already exists. Trying to rollback operation
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT id, original_type, time_stamp, package_data FROM cdo_package_units
main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_package_infos (uri text, parent text, unit text)
main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_package_infos" already exists. Trying to rollback operation
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT uri, parent, unit FROM cdo_package_infos
main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_commit_infos (commit_time BIGINT, previous_time BIGINT, branch_id INTEGER, user_id text, commit_comment text)
main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_commit_infos" already exists. Trying to rollback operation
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT commit_time, previous_time, branch_id, user_id, commit_comment FROM cdo_commit_infos
main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_properties (name text, value text)
main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_properties" already exists. Trying to rollback operation
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT name, value FROM cdo_properties
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating LongIDHandler@4
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating ExternalReferenceManager@5
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating DBStoreAccessor@6
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating SmartPreparedStatementCache@7
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  SmartPreparedStatementCache@7
  AbstractPreparedStatementCache.connection = org.postgresql.jdbc3.Jdbc3Connection@349471
  cache = org.eclipse.emf.cdo.server.internal.db.SmartPreparedStatementCache$Cache@19d75ee
  checkedOut = 

main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  DBStoreAccessor@6
  StoreAccessorBase.store = DBStore@3
  StoreAccessorBase.context = null
  StoreAccessorBase.reader = false
  StoreAccessorBase.commitContexts = 
  connection = org.postgresql.jdbc3.Jdbc3Connection@349471
  connectionKeepAliveTask = org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor$ConnectionKeepAliveTask@d1c778
  statementCache = SmartPreparedStatementCache@7
  newObjects = 
  maxID = NULL

main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_external_refs (id BIGINT, uri text, committime BIGINT)
main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_external_refs" already exists. Trying to rollback operation
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT id, uri, committime FROM cdo_external_refs
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  ExternalReferenceManager@5
  table = cdo_external_refs
  idField = id
  uriField = uri
  timestampField = committime
  idHandler = LongIDHandler@4
  lastMappedID = -13

main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  LongIDHandler@4
  store = DBStore@3
  externalReferenceManager = ExternalReferenceManager@5
  lastObjectID = NULL
  nextLocalObjectID = OID9223372036854775807

main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating MetaDataManager@8
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  MetaDataManager@8
  store = DBStore@3
  modelElementToMetaID = 
  metaIDToModelElement = 

main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating DurableLockingManager@9
main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_lock_areas (id text, user_id text, view_branch INTEGER, view_time BIGINT, read_only BOOLEAN)
main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_lock_areas" already exists. Trying to rollback operation
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT id, user_id, view_branch, view_time, read_only FROM cdo_lock_areas
main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_locks (area_id text, object_id BIGINT, lock_grade INTEGER)
main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_locks" already exists. Trying to rollback operation
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT area_id, object_id, lock_grade FROM cdo_locks
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  DurableLockingManager@9
  store = DBStore@3
  branchManager = CDOBranchManagerImpl@10
  idHandler = LongIDHandler@4
  lockAreas = cdo_lock_areas
  lockAreasID = id
  lockAreasUser = user_id
  lockAreasBranch = view_branch
  lockAreasTime = view_time
  lockAreasReadOnly = read_only
  locks = cdo_locks
  locksArea = area_id
  locksObject = object_id
  locksGrade = lock_grade
  sqlInsertLockArea = INSERT INTO cdo_lock_areas(id,user_id,view_branch,view_time,read_only) VALUES (?, ?, ?, ?, ?)
  sqlSelectLockArea = SELECT user_id,view_branch,view_time,read_only FROM cdo_lock_areas WHERE id=?
  sqlSelectAllLockAreas = SELECT id,user_id,view_branch,view_time,read_only FROM cdo_lock_areas
  sqlSelectLockAreas = SELECT id,user_id,view_branch,view_time,read_only FROM cdo_lock_areas WHERE user_id LIKE ?
  sqlDeleteLockArea = DELETE FROM cdo_lock_areas WHERE id=?
  sqlDeleteLockAreas = DELETE FROM cdo_lock_areas a WHERE EXISTS (SELECT * FROM cdo_locks l WHERE l.area_id=a.id)
  sqlSelectLocks = SELECT object_id,lock_grade FROM cdo_locks WHERE area_id=?
  sqlSelectLock = SELECT lock_grade FROM cdo_locks WHERE area_id=? AND object_id=?
  sqlInsertLock = INSERT INTO cdo_locks(area_id,object_id,lock_grade) VALUES (?, ?, ?)
  sqlUpdateLock = UPDATE cdo_locks SET lock_grade=?  WHERE area_id=? AND object_id=?
  sqlDeleteLock = DELETE FROM cdo_locks WHERE area_id=? AND object_id=?
  sqlDeleteLocks = DELETE FROM cdo_locks WHERE area_id=?

main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating HorizontalAuditMappingStrategy@11
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating ObjectTypeCache@12
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating ObjectTypeTable@13
main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_objects (cdo_id BIGINT, cdo_class BIGINT, cdo_created BIGINT)
main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_objects" already exists. Trying to rollback operation
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT cdo_id, cdo_class, cdo_created FROM cdo_objects
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  ObjectTypeTable@13
  AbstractObjectTypeMapper.mappingStrategy = HorizontalAuditMappingStrategy@11
  AbstractObjectTypeMapper.metaDataManager = MetaDataManager@8
  table = cdo_objects
  idField = cdo_id
  typeField = cdo_class
  timeField = cdo_created
  sqlDelete = DELETE FROM cdo_objects WHERE cdo_id=?
  sqlInsert = INSERT INTO cdo_objects(cdo_id,cdo_class,cdo_created) VALUES (?, ?, ?)
  sqlSelect = SELECT cdo_class FROM cdo_objects WHERE cdo_id=?

main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  ObjectTypeCache@12
  AbstractObjectTypeMapper.mappingStrategy = HorizontalAuditMappingStrategy@11
  AbstractObjectTypeMapper.metaDataManager = MetaDataManager@8
  DelegatingObjectTypeMapper.delegate = ObjectTypeTable@13
  memoryCache = 
  cacheSize = 100000

main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  HorizontalAuditMappingStrategy@11
  AbstractMappingStrategy.store = DBStore@3
  AbstractMappingStrategy.properties = 
  AbstractMappingStrategy.classMappings = 
  AbstractMappingStrategy.allClassMappingsCreated = false
  AbstractHorizontalMappingStrategy.objectTypeMapper = ObjectTypeCache@12

[WARN] Detected crash of repository CDORepositoryForExperiments


Re: [CDO] Exception on Repository activation [message #756963 is a reply to message #756813] Tue, 15 November 2011 17:58 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Am 15.11.2011 10:05, schrieb Federico Tomassetti:
> I was able to reproduce the error with tracing enabled.
> This is what I got before the exception was thrown.
> All that I can see it is that CDO is trying to create tables that are already there.
Are you somewhere (in doTearDown()?) deleting all rows fro all tables rather than dropping the tables?
That could explain why the next attempt to initialize a new repository in the same database fails.

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper


>
>
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating ManagedContainer
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating
> {org.eclipse.net4j.randomizers[default]=Factory[org.eclipse.net4j.randomizers, default],
> org.eclipse.net4j.userManagers[file]=Factory[org.eclipse.net4j.userManagers, file],
> org.eclipse.net4j.serverProtocols[failover-client]=Factory[org.eclipse.net4j.serverProtocols, failover-client],
> org.eclipse.net4j.serverProtocols[cdo]=Factory[org.eclipse.net4j.serverProtocols, cdo],
> org.eclipse.net4j.serverProtocols[heartbeat]=Factory[org.eclipse.net4j.serverProtocols, heartbeat],
> org.eclipse.net4j.bufferProviders[default]=Factory[org.eclipse.net4j.bufferProviders, default],
> org.eclipse.net4j.acceptors[tcp]=Factory[org.eclipse.net4j.acceptors, tcp],
> org.eclipse.net4j.connectors[tcp]=Factory[org.eclipse.net4j.connectors, tcp],
> org.eclipse.net4j.executorServices[default]=Factory[org.eclipse.net4j.executorServices, default],
> org.eclipse.net4j.serverProtocols[failover]=Factory[org.eclipse.net4j.serverProtocols, failover],
> org.eclipse.net4j.util.timers[daemon]=Factory[org.eclipse.net4j.util.timers, daemon],
> org.eclipse.net4j.selectors[tcp]=Factory[org.eclipse.net4j.selectors, tcp],
> org.eclipse.emf.cdo.server.net4j.failoverMonitors[net4j]=Factory[org.eclipse.emf.cdo.server.net4j.failoverMonitors,
> net4j]}
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP HashMapRegistry@1
> Registry.autoCommit = true
> Registry.transaction = null
> map = org.eclipse.net4j.randomizers[default]=Factory[org.eclipse.net4j.randomizers, default]
> org.eclipse.net4j.userManagers[file]=Factory[org.eclipse.net4j.userManagers, file]
> org.eclipse.net4j.serverProtocols[failover-client]=Factory[org.eclipse.net4j.serverProtocols, failover-client]
> org.eclipse.net4j.serverProtocols[cdo]=Factory[org.eclipse.net4j.serverProtocols, cdo]
> org.eclipse.net4j.serverProtocols[heartbeat]=Factory[org.eclipse.net4j.serverProtocols, heartbeat]
> org.eclipse.net4j.bufferProviders[default]=Factory[org.eclipse.net4j.bufferProviders, default]
> org.eclipse.net4j.acceptors[tcp]=Factory[org.eclipse.net4j.acceptors, tcp]
> org.eclipse.net4j.connectors[tcp]=Factory[org.eclipse.net4j.connectors, tcp]
> org.eclipse.net4j.executorServices[default]=Factory[org.eclipse.net4j.executorServices, default]
> org.eclipse.net4j.serverProtocols[failover]=Factory[org.eclipse.net4j.serverProtocols, failover]
> org.eclipse.net4j.util.timers[daemon]=Factory[org.eclipse.net4j.util.timers, daemon]
> org.eclipse.net4j.selectors[tcp]=Factory[org.eclipse.net4j.selectors, tcp]
> org.eclipse.emf.cdo.server.net4j.failoverMonitors[net4j]=Factory[org.eclipse.emf.cdo.server.net4j.failoverMonitors,
> net4j]
>
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP ManagedContainer@2
> factoryRegistry = org.eclipse.net4j.randomizers[default]=Factory[org.eclipse.net4j.randomizers, default]
> org.eclipse.net4j.userManagers[file]=Factory[org.eclipse.net4j.userManagers, file]
> org.eclipse.net4j.serverProtocols[failover-client]=Factory[org.eclipse.net4j.serverProtocols, failover-client]
> org.eclipse.net4j.serverProtocols[cdo]=Factory[org.eclipse.net4j.serverProtocols, cdo]
> org.eclipse.net4j.serverProtocols[heartbeat]=Factory[org.eclipse.net4j.serverProtocols, heartbeat]
> org.eclipse.net4j.bufferProviders[default]=Factory[org.eclipse.net4j.bufferProviders, default]
> org.eclipse.net4j.acceptors[tcp]=Factory[org.eclipse.net4j.acceptors, tcp]
> org.eclipse.net4j.connectors[tcp]=Factory[org.eclipse.net4j.connectors, tcp]
> org.eclipse.net4j.executorServices[default]=Factory[org.eclipse.net4j.executorServices, default]
> org.eclipse.net4j.serverProtocols[failover]=Factory[org.eclipse.net4j.serverProtocols, failover]
> org.eclipse.net4j.util.timers[daemon]=Factory[org.eclipse.net4j.util.timers, daemon]
> org.eclipse.net4j.selectors[tcp]=Factory[org.eclipse.net4j.selectors, tcp]
> org.eclipse.emf.cdo.server.net4j.failoverMonitors[net4j]=Factory[org.eclipse.emf.cdo.server.net4j.failoverMonitors,
> net4j]
> postProcessors = org.eclipse.net4j.TransportInjector@50988
> org.eclipse.net4j.signal.heartbeat.HeartBeatProtocol$Server$TimerInjector@b4e29b
> org.eclipse.net4j.internal.tcp.TCPSelectorInjector@18941f7
> elementRegistry =
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating Repository[CDORepositoryForExperiments]
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating DBStore@3
> main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_lobs (id text, size BIGINT, bdata bytea, cdata text)
> main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_lobs" already exists. Trying to rollback operation
> main [org.eclipse.net4j.spi.db.DBAdapter] SELECT id, size, bdata, cdata FROM cdo_lobs
> main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_branches (id INTEGER, name text, base_id INTEGER, base_time
> BIGINT)
> main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_branches" already exists. Trying to rollback operation
> main [org.eclipse.net4j.spi.db.DBAdapter] SELECT id, name, base_id, base_time FROM cdo_branches
> main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_package_units (id text, original_type INTEGER, time_stamp
> BIGINT, package_data bytea)
> main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_package_units" already exists. Trying to rollback
> operation
> main [org.eclipse.net4j.spi.db.DBAdapter] SELECT id, original_type, time_stamp, package_data FROM cdo_package_units
> main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_package_infos (uri text, parent text, unit text)
> main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_package_infos" already exists. Trying to rollback
> operation
> main [org.eclipse.net4j.spi.db.DBAdapter] SELECT uri, parent, unit FROM cdo_package_infos
> main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_commit_infos (commit_time BIGINT, previous_time BIGINT,
> branch_id INTEGER, user_id text, commit_comment text)
> main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_commit_infos" already exists. Trying to rollback
> operation
> main [org.eclipse.net4j.spi.db.DBAdapter] SELECT commit_time, previous_time, branch_id, user_id, commit_comment FROM
> cdo_commit_infos
> main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_properties (name text, value text)
> main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_properties" already exists. Trying to rollback
> operation
> main [org.eclipse.net4j.spi.db.DBAdapter] SELECT name, value FROM cdo_properties
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating LongIDHandler@4
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating ExternalReferenceManager@5
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating DBStoreAccessor@6
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating SmartPreparedStatementCache@7
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP SmartPreparedStatementCache@7
> AbstractPreparedStatementCache.connection = org.postgresql.jdbc3.Jdbc3Connection@349471
> cache = org.eclipse.emf.cdo.server.internal.db.SmartPreparedStatementCache$Cache@19d75ee
> checkedOut =
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP DBStoreAccessor@6
> StoreAccessorBase.store = DBStore@3
> StoreAccessorBase.context = null
> StoreAccessorBase.reader = false
> StoreAccessorBase.commitContexts = connection = org.postgresql.jdbc3.Jdbc3Connection@349471
> connectionKeepAliveTask = org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor$ConnectionKeepAliveTask@d1c778
> statementCache = SmartPreparedStatementCache@7
> newObjects = maxID = NULL
>
> main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_external_refs (id BIGINT, uri text, committime BIGINT)
> main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_external_refs" already exists. Trying to rollback
> operation
> main [org.eclipse.net4j.spi.db.DBAdapter] SELECT id, uri, committime FROM cdo_external_refs
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP ExternalReferenceManager@5
> table = cdo_external_refs
> idField = id
> uriField = uri
> timestampField = committime
> idHandler = LongIDHandler@4
> lastMappedID = -13
>
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP LongIDHandler@4
> store = DBStore@3
> externalReferenceManager = ExternalReferenceManager@5
> lastObjectID = NULL
> nextLocalObjectID = OID9223372036854775807
>
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating MetaDataManager@8
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP MetaDataManager@8
> store = DBStore@3
> modelElementToMetaID = metaIDToModelElement =
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating DurableLockingManager@9
> main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_lock_areas (id text, user_id text, view_branch INTEGER,
> view_time BIGINT, read_only BOOLEAN)
> main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_lock_areas" already exists. Trying to rollback
> operation
> main [org.eclipse.net4j.spi.db.DBAdapter] SELECT id, user_id, view_branch, view_time, read_only FROM cdo_lock_areas
> main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_locks (area_id text, object_id BIGINT, lock_grade INTEGER)
> main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_locks" already exists. Trying to rollback operation
> main [org.eclipse.net4j.spi.db.DBAdapter] SELECT area_id, object_id, lock_grade FROM cdo_locks
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP DurableLockingManager@9
> store = DBStore@3
> branchManager = CDOBranchManagerImpl@10
> idHandler = LongIDHandler@4
> lockAreas = cdo_lock_areas
> lockAreasID = id
> lockAreasUser = user_id
> lockAreasBranch = view_branch
> lockAreasTime = view_time
> lockAreasReadOnly = read_only
> locks = cdo_locks
> locksArea = area_id
> locksObject = object_id
> locksGrade = lock_grade
> sqlInsertLockArea = INSERT INTO cdo_lock_areas(id,user_id,view_branch,view_time,read_only) VALUES (?, ?, ?, ?, ?)
> sqlSelectLockArea = SELECT user_id,view_branch,view_time,read_only FROM cdo_lock_areas WHERE id=?
> sqlSelectAllLockAreas = SELECT id,user_id,view_branch,view_time,read_only FROM cdo_lock_areas
> sqlSelectLockAreas = SELECT id,user_id,view_branch,view_time,read_only FROM cdo_lock_areas WHERE user_id LIKE ?
> sqlDeleteLockArea = DELETE FROM cdo_lock_areas WHERE id=?
> sqlDeleteLockAreas = DELETE FROM cdo_lock_areas a WHERE EXISTS (SELECT * FROM cdo_locks l WHERE l.area_id=a.id)
> sqlSelectLocks = SELECT object_id,lock_grade FROM cdo_locks WHERE area_id=?
> sqlSelectLock = SELECT lock_grade FROM cdo_locks WHERE area_id=? AND object_id=?
> sqlInsertLock = INSERT INTO cdo_locks(area_id,object_id,lock_grade) VALUES (?, ?, ?)
> sqlUpdateLock = UPDATE cdo_locks SET lock_grade=? WHERE area_id=? AND object_id=?
> sqlDeleteLock = DELETE FROM cdo_locks WHERE area_id=? AND object_id=?
> sqlDeleteLocks = DELETE FROM cdo_locks WHERE area_id=?
>
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating HorizontalAuditMappingStrategy@11
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating ObjectTypeCache@12
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating ObjectTypeTable@13
> main [org.eclipse.net4j.spi.db.DBAdapter] CREATE TABLE cdo_objects (cdo_id BIGINT, cdo_class BIGINT, cdo_created BIGINT)
> main [org.eclipse.net4j.spi.db.DBAdapter] -- ERROR: relation "cdo_objects" already exists. Trying to rollback operation
> main [org.eclipse.net4j.spi.db.DBAdapter] SELECT cdo_id, cdo_class, cdo_created FROM cdo_objects
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP ObjectTypeTable@13
> AbstractObjectTypeMapper.mappingStrategy = HorizontalAuditMappingStrategy@11
> AbstractObjectTypeMapper.metaDataManager = MetaDataManager@8
> table = cdo_objects
> idField = cdo_id
> typeField = cdo_class
> timeField = cdo_created
> sqlDelete = DELETE FROM cdo_objects WHERE cdo_id=?
> sqlInsert = INSERT INTO cdo_objects(cdo_id,cdo_class,cdo_created) VALUES (?, ?, ?)
> sqlSelect = SELECT cdo_class FROM cdo_objects WHERE cdo_id=?
>
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP ObjectTypeCache@12
> AbstractObjectTypeMapper.mappingStrategy = HorizontalAuditMappingStrategy@11
> AbstractObjectTypeMapper.metaDataManager = MetaDataManager@8
> DelegatingObjectTypeMapper.delegate = ObjectTypeTable@13
> memoryCache = cacheSize = 100000
>
> main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP HorizontalAuditMappingStrategy@11
> AbstractMappingStrategy.store = DBStore@3
> AbstractMappingStrategy.properties = AbstractMappingStrategy.classMappings =
> AbstractMappingStrategy.allClassMappingsCreated = false
> AbstractHorizontalMappingStrategy.objectTypeMapper = ObjectTypeCache@12
>
> [WARN] Detected crash of repository CDORepositoryForExperiments
>


Re: [CDO] Exception on Repository activation [message #757397 is a reply to message #756963] Fri, 18 November 2011 08:59 Go to previous messageGo to next message
Federico Tomassetti is currently offline Federico TomassettiFriend
Messages: 190
Registered: July 2009
Location: Dublin
Senior Member

Not at all, I never try to touch the DB directly, always through CDO.

Re: [CDO] Exception on Repository activation [message #757468 is a reply to message #756963] Fri, 18 November 2011 15:02 Go to previous messageGo to next message
Federico Tomassetti is currently offline Federico TomassettiFriend
Messages: 190
Registered: July 2009
Location: Dublin
Senior Member

I downloaded the source code of CDO and started to take a look to it to understand what is going wrong.

First of all I do not understand why CDO tries to create the tables when they are already there.

The DurableLockingManager in its activation seems to try to create the tables without checking if they are already existing

  @Override
  protected void doActivate() throws Exception
  {
    super.doActivate();

    branchManager = store.getRepository().getBranchManager();
    idHandler = store.getIDHandler();

    IDBSchema schema = store.getDBSchema();

    // Lock areas
    lockAreas = schema.addTable("cdo_lock_areas");
    lockAreasID = lockAreas.addField("id", DBType.VARCHAR);
    lockAreasUser = lockAreas.addField("user_id", DBType.VARCHAR);
    lockAreasBranch = lockAreas.addField("view_branch", DBType.INTEGER);
    lockAreasTime = lockAreas.addField("view_time", DBType.BIGINT);
    lockAreasReadOnly = lockAreas.addField("read_only", DBType.BOOLEAN);

    lockAreas.addIndex(IDBIndex.Type.PRIMARY_KEY, lockAreasID);
    lockAreas.addIndex(IDBIndex.Type.NON_UNIQUE, lockAreasUser);

    // Locks
    locks = schema.addTable("cdo_locks");
    locksArea = locks.addField("area_id", DBType.VARCHAR);
    locksObject = locks.addField("object_id", idHandler.getDBType());
    locksGrade = locks.addField("lock_grade", DBType.INTEGER);

    locks.addIndex(IDBIndex.Type.PRIMARY_KEY, locksArea, locksObject);
    locks.addIndex(IDBIndex.Type.NON_UNIQUE, locksArea);

    IDBStoreAccessor writer = store.getWriter(null);
    Connection connection = writer.getConnection();
    Statement statement = null;

    try
    {
      statement = connection.createStatement();
      store.getDBAdapter().createTable(lockAreas, statement);
      store.getDBAdapter().createTable(locks, statement);
      connection.commit();
    }
    catch (SQLException ex)
    {
      connection.rollback();
      throw new DBException(ex);
    }
    finally
    {
      DBUtil.close(statement);
      writer.release();
    }
    ...
}


Then I would like to find out how the wrong shutdown is recognized and why the recoverAfterCrash is invoked (method org.eclipse.emf.cdo.server.internal.db.DBStore.repairAfterCrash(DBStore.java:679))

This method seems to be invoked by the DBStore.restart method

 protected void reStart()
  {
    Set<String> names = new HashSet<String>();
    names.add(PROP_REPOSITORY_CREATED);
    names.add(PROP_GRACEFULLY_SHUT_DOWN);

    Map<String, String> map = getPersistentProperties(names);
    creationTime = Long.valueOf(map.get(PROP_REPOSITORY_CREATED));

    if (map.containsKey(PROP_GRACEFULLY_SHUT_DOWN))
    {
      names.clear();

      InternalRepository repository = getRepository();
      boolean generatingIDs = repository.getIDGenerationLocation() == IDGenerationLocation.STORE;
      if (generatingIDs)
      {
        names.add(PROP_NEXT_LOCAL_CDOID);
        names.add(PROP_LAST_CDOID);
      }

      names.add(PROP_LAST_BRANCHID);
      names.add(PROP_LAST_LOCAL_BRANCHID);
      names.add(PROP_LAST_COMMITTIME);
      names.add(PROP_LAST_NONLOCAL_COMMITTIME);
      map = getPersistentProperties(names);

      if (generatingIDs)
      {
        idHandler.setNextLocalObjectID(Store.stringToID(map.get(PROP_NEXT_LOCAL_CDOID)));
        idHandler.setLastObjectID(Store.stringToID(map.get(PROP_LAST_CDOID)));
      }

      setLastBranchID(Integer.valueOf(map.get(PROP_LAST_BRANCHID)));
      setLastLocalBranchID(Integer.valueOf(map.get(PROP_LAST_LOCAL_BRANCHID)));
      setLastCommitTime(Long.valueOf(map.get(PROP_LAST_COMMITTIME)));
      setLastNonLocalCommitTime(Long.valueOf(map.get(PROP_LAST_NONLOCAL_COMMITTIME)));
    }
    else
    {
      repairAfterCrash();
    }

    removePersistentProperties(Collections.singleton(PROP_GRACEFULLY_SHUT_DOWN));
  }


as far as I understand CDO look into the cdo_properties table for a record with name "gracefully_shut_down" and value true. It does not find it so it considered the repository as inconsistent and try to recover it. My cdo_properties table have just one record that indicates the creation time of the repository.



Re: [CDO] Exception on Repository activation [message #757981 is a reply to message #757468] Mon, 21 November 2011 06:40 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Am 18.11.2011 16:02, schrieb Federico Tomassetti:
<blockquote cite="mid:ja5s2k$2q0$1@news.eclipse.org" type="cite">I
downloaded the source code of CDO and started to take a look to it
to understand what is going wrong.
<br>
<br>
First of all I do not understand why CDO tries to create the
tables when they are already there.
<br>
</blockquote>
That was just a simplification of the creation / sync process.
Instead of <br>
<br>
1. load metadata<br>
2. compare metadata with target schema<br>
3. apply delta operations (create table, alter table)<br>
<br>
we're doing<br>
<br>
a. try to create target schema<br>
b. ignore exceptions due to duplicate tables<br>
c. validate actual schema<br>
<br>
If you prefer 1+2+3 over a+b+c we'd appreciate that you send in a
patch that we can review and eventually apply ;-)<br>
<br>
<br>
<blockquote cite="mid:ja5s2k$2q0$1@news.eclipse.org" type="cite">
<br>
The DurableLockingManager in its activation seems to try to create
the tables without checking if they are already existing
<br>
</blockquote>
Same as above. The post-creation validation is done in DBAdapter:<br>
<br>
<title></title>
<!-- ======================================================== -->
<!-- = Java Sourcecode to HTML automatically converted code = -->
<!-- = Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard markus@jave.de = -->
<!-- = Further information: http://www.java2html.de = -->
<div class="java" align="left">
<table bgcolor="#ffffff" border="0" cellpadding="3"
cellspacing="0">
<tbody>
<tr>
<!-- start source code --> <td align="left" nowrap="nowrap"
valign="top"> <code>
<font color="#ffffff">  </font><font color="#7f0055"><b>public </b></font><font
color="#7f0055"><b>boolean </b></font><font
color="#000000">createTable</font><font
color="#000000">(</font><font color="#000000">IDBTable table, Statement statement</font><font
color="#000000">) </font><font color="#7f0055"><b>throws </b></font><font
color="#000000">DBException</font><br>
<font color="#ffffff">  </font><font color="#000000">{</font><br>
<font color="#ffffff">    </font><font color="#7f0055"><b>boolean </b></font><font
color="#000000">created = </font><font color="#7f0055"><b>true</b></font><font
color="#000000">;</font><br>
<br>
<font color="#ffffff">    </font><font color="#7f0055"><b>try</b></font><br>
<font color="#ffffff">    </font><font color="#000000">{</font><br>
<font color="#ffffff">      </font><font color="#000000">doCreateTable</font><font
color="#000000">(</font><font color="#000000">table, statement</font><font
color="#000000">)</font><font color="#000000">;</font><br>
<font color="#ffffff">    </font><font color="#000000">}</font><br>
<font color="#ffffff">    </font><font color="#7f0055"><b>catch </b></font><font
color="#000000">(</font><font color="#000000">SQLException ex</font><font
color="#000000">)</font><br>
<font color="#ffffff">    </font><font color="#000000">{</font><br>
<font color="#ffffff">      </font><font color="#000000">created = </font><font
color="#7f0055"><b>false</b></font><font
color="#000000">;</font><br>
<font color="#ffffff">      </font><font color="#7f0055"><b>if </b></font><font
color="#000000">(</font><font color="#000000">TRACER.isEnabled</font><font
color="#000000">())</font><br>
<font color="#ffffff">      </font><font color="#000000">{</font><br>
<font color="#ffffff">        </font><font
color="#000000">TRACER.trace</font><font
color="#000000">(</font><font color="#2a00ff">"-- " </font><font
color="#000000">+ ex.getMessage</font><font
color="#000000">())</font><font color="#000000">; </font><font
color="#3f7f5f">//$NON-NLS-1$</font><br>
<font color="#ffffff">      </font><font color="#000000">}</font><br>
<font color="#ffffff">    </font><font color="#000000">}</font><br>
<br>
<font color="#ffffff">    </font><font color="#000000">validateTable</font><font
color="#000000">(</font><font color="#000000">table, statement</font><font
color="#000000">)</font><font color="#000000">;</font><br>
<font color="#ffffff">    </font><font color="#7f0055"><b>return </b></font><font
color="#000000">created;</font><br>
<font color="#ffffff">  </font><font color="#000000">}</font></code>
</td>
<!-- end source code --> </tr>
</tbody>
</table>
</div>
<!-- = END of automatically generated HTML code = -->
<!-- ======================================================== -->
<style type="text/css">
<!--code { font-family: Courier New, Courier; font-size: 10pt; margin: 0px; }-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<br>
<blockquote cite="mid:ja5s2k$2q0$1@news.eclipse.org" type="cite">
<br>
<br>
 @Override
<br>
 protected void doActivate() throws Exception
<br>
 {
<br>
   super.doActivate();
<br>
<br>
   branchManager = store.getRepository().getBranchManager();
<br>
   idHandler = store.getIDHandler();
<br>
<br>
   IDBSchema schema = store.getDBSchema();
<br>
<br>
   // Lock areas
<br>
   lockAreas = schema.addTable("cdo_lock_areas");
<br>
   lockAreasID = lockAreas.addField("id", DBType.VARCHAR);
<br>
   lockAreasUser = lockAreas.addField("user_id", DBType.VARCHAR);
<br>
   lockAreasBranch = lockAreas.addField("view_branch",
DBType.INTEGER);
<br>
   lockAreasTime = lockAreas.addField("view_time", DBType.BIGINT);
<br>
   lockAreasReadOnly = lockAreas.addField("read_only",
DBType.BOOLEAN);
<br>
<br>
   lockAreas.addIndex(IDBIndex.Type.PRIMARY_KEY, lockAreasID);
<br>
   lockAreas.addIndex(IDBIndex.Type.NON_UNIQUE, lockAreasUser);
<br>
<br>
   // Locks
<br>
   locks = schema.addTable("cdo_locks");
<br>
   locksArea = locks.addField("area_id", DBType.VARCHAR);
<br>
   locksObject = locks.addField("object_id",
idHandler.getDBType());
<br>
   locksGrade = locks.addField("lock_grade", DBType.INTEGER);
<br>
<br>
   locks.addIndex(IDBIndex.Type.PRIMARY_KEY, locksArea,
locksObject);
<br>
   locks.addIndex(IDBIndex.Type.NON_UNIQUE, locksArea);
<br>
<br>
   IDBStoreAccessor writer = store.getWriter(null);
<br>
   Connection connection = writer.getConnection();
<br>
   Statement statement = null;
<br>
<br>
   try
<br>
   {
<br>
     statement = connection.createStatement();
<br>
     store.getDBAdapter().createTable(lockAreas, statement);
<br>
     store.getDBAdapter().createTable(locks, statement);
<br>
     connection.commit();
<br>
   }
<br>
   catch (SQLException ex)
<br>
   {
<br>
     connection.rollback();
<br>
     throw new DBException(ex);
<br>
   }
<br>
   finally
<br>
   {
<br>
     DBUtil.close(statement);
<br>
     writer.release();
<br>
   }
<br>
   ...
<br>
}
<br>
<br>
<br>
Then I would like to find out how the wrong shutdown is recognized
</blockquote>
What is a "wrong shutdown"? If you mean "terminate without proper
deactivation" then please have a look at DBStore.doDeactivate() and
DBStore.restart() and their use of PROP_GRACEFULLY_SHUT_DOWN.<br>
<br>
<blockquote cite="mid:ja5s2k$2q0$1@news.eclipse.org" type="cite">and
why the recoverAfterCrash is invoked (method
org.eclipse.emf.cdo.server.internal.db.DBStore.repairAfterCrash(DBStore.java:679))<br>
</blockquote>
See above.<br>
<br>
<blockquote cite="mid:ja5s2k$2q0$1@news.eclipse.org" type="cite">
<br>
This method seems to be invoked by the DBStore.restart method
<br>
<br>
<br>
protected void reStart()
<br>
 {
<br>
   Set&lt;String&gt; names = new HashSet&lt;String&gt;();
<br>
   names.add(PROP_REPOSITORY_CREATED);
<br>
   names.add(PROP_GRACEFULLY_SHUT_DOWN);
<br>
<br>
   Map&lt;String, String&gt; map = getPersistentProperties(names);
<br>
   creationTime = Long.valueOf(map.get(PROP_REPOSITORY_CREATED));
<br>
<br>
   if (map.containsKey(PROP_GRACEFULLY_SHUT_DOWN))
<br>
   {
<br>
     names.clear();
<br>
<br>
     InternalRepository repository = getRepository();
<br>
     boolean generatingIDs = repository.getIDGenerationLocation()
== IDGenerationLocation.STORE;
<br>
     if (generatingIDs)
<br>
     {
<br>
       names.add(PROP_NEXT_LOCAL_CDOID);
<br>
       names.add(PROP_LAST_CDOID);
<br>
     }
<br>
<br>
     names.add(PROP_LAST_BRANCHID);
<br>
     names.add(PROP_LAST_LOCAL_BRANCHID);
<br>
     names.add(PROP_LAST_COMMITTIME);
<br>
     names.add(PROP_LAST_NONLOCAL_COMMITTIME);
<br>
     map = getPersistentProperties(names);
<br>
<br>
     if (generatingIDs)
<br>
     {
<br>
      
idHandler.setNextLocalObjectID(Store.stringToID(map.get(PROP_NEXT_LOCAL_CDOID)));<br>
      
idHandler.setLastObjectID(Store.stringToID(map.get(PROP_LAST_CDOID)));
<br>
     }
<br>
<br>
    
setLastBranchID(Integer.valueOf(map.get(PROP_LAST_BRANCHID)));
<br>
    
setLastLocalBranchID(Integer.valueOf(map.get(PROP_LAST_LOCAL_BRANCHID)));<br>
    
setLastCommitTime(Long.valueOf(map.get(PROP_LAST_COMMITTIME)));
<br>
    
setLastNonLocalCommitTime(Long.valueOf(map.get(PROP_LAST_NONLOCAL_COMMITTIME)));<br>
   }
<br>
   else
<br>
   {
<br>
     repairAfterCrash();
<br>
   }
<br>
<br>
  
removePersistentProperties(Collections.singleton(PROP_GRACEFULLY_SHUT_DOWN));<br>
 }
<br>
<br>
<br>
as far as I understand CDO look into the cdo_properties table for
a record with name "gracefully_shut_down" and value true. It does
not find it so it considered the repository as inconsistent and
try to recover it. My cdo_properties table have just one record
that indicates the creation time of the repository.
<br>
</blockquote>
Whenever the repo has been gracefully shut down the cdo_properties
tablecontains a record with name "gracefully_shut_down" and value
true. After each start this record is removed. On each restart a
crash is detected if this record does not exist.<br>
<br>
Cheers<br>
/Eike<br>
<br>
----<br>
<a class="moz-txt-link-freetext" href="http://www.esc-net.de">http://www.esc-net.de</a><br>
<a class="moz-txt-link-freetext" href="http://thegordian.blogspot.com">http://thegordian.blogspot.com</a><br>
<a class="moz-txt-link-freetext" href="http://twitter.com/eikestepper">http://twitter.com/eikestepper</a><br>
<br>
<br>
</body>
</html>


Re: [CDO] Exception on Repository activation [message #758208 is a reply to message #757981] Tue, 22 November 2011 10:51 Go to previous messageGo to next message
Federico Tomassetti is currently offline Federico TomassettiFriend
Messages: 190
Registered: July 2009
Location: Dublin
Senior Member

Ok, I am working on a patch. I downloaded all the source code of CDO according to the instructions provided on http://wiki.eclipse.org/CDO_Source_Installation#Materialize_the_Sources_and_the_Target_Platform

Then I closed all the projects except org.eclipse.net4j.db

I am working on org.eclipse.net4j.db.IDBAdapter and org.eclipse.net4j.spi.db.DBAdapter. I would like to keep using all the binary plug-ins I have installed and just replace org.eclipse.net4j.db with the one I have in the workspace. I thought I could just insert it among the dependencies of the my plug-in project containing the tests but it does not seem to work (I inserted a breakpoint and my modified code is not invoked).

Can you point me to documentation and give me some advices?



Re: [CDO] Exception on Repository activation [message #758213 is a reply to message #758208] Tue, 22 November 2011 11:04 Go to previous messageGo to next message
Federico Tomassetti is currently offline Federico TomassettiFriend
Messages: 190
Registered: July 2009
Location: Dublin
Senior Member

Sorry, it was my error. I modified DBAdapter but the Postgres specific adapter override the method I was working on in DBAdapter.

Now my patch in my case solve that problem... but I have of course a new one I am now working on:

main [org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistryImpl] Registering http://www.eclipse.org/emf/2002/Ecore --> org.eclipse.emf.ecore.impl.EcorePackageImpl@b3c24f (name: ecore) (nsURI: http://www.eclipse.org/emf/2002/Ecore, nsPrefix: ecore)
main [org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistryImpl] Registering http://www.eclipse.org/emf/CDO/Eresource/4.0.0 --> org.eclipse.emf.cdo.eresource.impl.EresourcePackageImpl@b28980 (name: eresource) (nsURI: http://www.eclipse.org/emf/CDO/Eresource/4.0.0, nsPrefix: eresource)
main [org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistryImpl] Registering http://www.eclipse.org/emf/CDO/Etypes/4.0.0 --> org.eclipse.emf.cdo.etypes.impl.EtypesPackageImpl@1429cf1 (name: etypes) (nsURI: http://www.eclipse.org/emf/CDO/Etypes/4.0.0, nsPrefix: etypes)
main [org.eclipse.emf.cdo.server.internal.db.MetaDataManager] Writing package unit: CDOPackageUnit[id=http://www.eclipse.org/emf/2002/Ecore, state=LOADED, type=LEGACY, originalType=LEGACY, timeStamp=2011-11-22 11:56:10.194]
main [org.eclipse.net4j.db.DBUtil] INSERT INTO cdo_package_units VALUES (?, ?, ?, ?)
FAIL:ERROR: duplicate key value violates unique constraint "cdo_package_units_idx0"
  Detail: Key (id)=(http://www.eclipse.org/emf/2002/Ecore) already exists.
> org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
> org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
> org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
> org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
> org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367)
> org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:360)
> org.eclipse.emf.cdo.server.internal.db.MetaDataManager.fillSystemTables(MetaDataManager.java:250)
> org.eclipse.emf.cdo.server.internal.db.MetaDataManager.fillSystemTables(MetaDataManager.java:291)
> org.eclipse.emf.cdo.server.internal.db.MetaDataManager.writePackageUnits(MetaDataManager.java:138)
> org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.writePackageUnits(DBStoreAccessor.java:821)
> org.eclipse.emf.cdo.internal.server.Repository.initSystemPackages(Repository.java:1615)
> org.eclipse.emf.cdo.internal.server.Repository.doActivate(Repository.java:1810)
> org.eclipse.net4j.util.lifecycle.Lifecycle.activate(Lifecycle.java:75)
> org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:101)
> org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:91)
> org.eclipse.emf.cdo.server.CDOServerUtil.addRepository(CDOServerUtil.java:204)
> it.rcpvision.cdoexamples.stockmanager.server.Server.start(Server.java:123)
> it.rcpvision.cdoexamples.stockmanager.server.tests.AbstractCDOTest.startServer(AbstractCDOTest.java:191)
> it.csipiemonte.cdoexamples.locking.LockingTest.setUp(LockingTest.java:38)
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> java.lang.reflect.Method.invoke(Unknown Source)
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
> org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
> org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
REMOVING /mypath_testLocking


Let's see if I can understand why the system try to register the ecore metamodel twice or if I can verify if a metamodel is already registered and avoid to register it again, ignoring duplicated registrations.

Stay tuned for next problem Smile


Re: [CDO] Exception on Repository activation [message #758218 is a reply to message #758208] Tue, 22 November 2011 11:30 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Am 22.11.2011 11:51, schrieb Federico Tomassetti:
> Ok, I am working on a patch.
Great! It would be awesome if your solution minimizes the number of calls to getMetaData(). Maybe we can cache the
results of a single call to java.sql.Connection.getMetaData() in the IDBSchema.

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper


Re: [CDO] Exception on Repository activation [message #758219 is a reply to message #758213] Tue, 22 November 2011 11:32 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Is that *with* your changes already applied?

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper



Am 22.11.2011 12:04, schrieb Federico Tomassetti:
> Sorry, it was my error. I modified DBAdapter but the Postgres specific adapter override the method I was working on in
> DBAdapter.
>
> Now my patch in my case solve that problem... but I have of course a new one I am now working on:
>
>
> main [org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistryImpl] Registering
> http://www.eclipse.org/emf/2002/Ecore --> org.eclipse.emf.ecore.impl.EcorePackageImpl@b3c24f (name: ecore) (nsURI:
> http://www.eclipse.org/emf/2002/Ecore, nsPrefix: ecore)
> main [org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistryImpl] Registering
> http://www.eclipse.org/emf/CDO/Eresource/4.0.0 --> org.eclipse.emf.cdo.eresource.impl.EresourcePackageImpl@b28980
> (name: eresource) (nsURI: http://www.eclipse.org/emf/CDO/Eresource/4.0.0, nsPrefix: eresource)
> main [org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistryImpl] Registering
> http://www.eclipse.org/emf/CDO/Etypes/4.0.0 --> org.eclipse.emf.cdo.etypes.impl.EtypesPackageImpl@1429cf1 (name:
> etypes) (nsURI: http://www.eclipse.org/emf/CDO/Etypes/4.0.0, nsPrefix: etypes)
> main [org.eclipse.emf.cdo.server.internal.db.MetaDataManager] Writing package unit:
> CDOPackageUnit[id=http://www.eclipse.org/emf/2002/Ecore, state=LOADED, type=LEGACY, originalType=LEGACY,
> timeStamp=2011-11-22 11:56:10.194]
> main [org.eclipse.net4j.db.DBUtil] INSERT INTO cdo_package_units VALUES (?, ?, ?, ?)
> FAIL:ERROR: duplicate key value violates unique constraint "cdo_package_units_idx0"
> Detail: Key (id)=(http://www.eclipse.org/emf/2002/Ecore) already exists.
>> org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
>> org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
>> org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
>> org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
>> org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367)
>> org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:360)
>> org.eclipse.emf.cdo.server.internal.db.MetaDataManager.fillSystemTables(MetaDataManager.java:250)
>> org.eclipse.emf.cdo.server.internal.db.MetaDataManager.fillSystemTables(MetaDataManager.java:291)
>> org.eclipse.emf.cdo.server.internal.db.MetaDataManager.writePackageUnits(MetaDataManager.java:138)
>> org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.writePackageUnits(DBStoreAccessor.java:821)
>> org.eclipse.emf.cdo.internal.server.Repository.initSystemPackages(Repository.java:1615)
>> org.eclipse.emf.cdo.internal.server.Repository.doActivate(Repository.java:1810)
>> org.eclipse.net4j.util.lifecycle.Lifecycle.activate(Lifecycle.java:75)
>> org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:101)
>> org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:91)
>> org.eclipse.emf.cdo.server.CDOServerUtil.addRepository(CDOServerUtil.java:204)
>> it.rcpvision.cdoexamples.stockmanager.server.Server.start(Server.java:123)
>> it.rcpvision.cdoexamples.stockmanager.server.tests.AbstractCDOTest.startServer(AbstractCDOTest.java:191)
>> it.csipiemonte.cdoexamples.locking.LockingTest.setUp(LockingTest.java:38)
>> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>> java.lang.reflect.Method.invoke(Unknown Source)
>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>> org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
>> org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
>> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
>> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
>> org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
>> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
>> org.junit.runners.ParentRunner.run(ParentRunner.java:236)
>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> REMOVING /mypath_testLocking
>
>
> Let's see if I can understand why the system try to register the ecore metamodel twice or if I can verify if a
> metamodel is already registered and avoid to register it again, ignoring duplicated registrations.
>
> Stay tuned for next problem :)


Re: [CDO] Exception on Repository activation [message #758691 is a reply to message #758219] Thu, 24 November 2011 09:39 Go to previous messageGo to next message
Federico Tomassetti is currently offline Federico TomassettiFriend
Messages: 190
Registered: July 2009
Location: Dublin
Senior Member

I have implemented this approach.

1) declare in IDBAdapter the method:

public boolean existTable(String tableName, Statement statement) throws DBException;



2) implement it in DBAdapter:

  public boolean existTable(String tableName, Statement statement) throws DBException
  {
    StringBuilder builder = new StringBuilder();
    builder.append("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND TABLE_NAME='");
    builder.append(tableName);
    builder.append("'");
    String sql = builder.toString();
    if (TRACER.isEnabled())
    {
      TRACER.trace(sql);
    }

    try
    {
      ResultSet resultSet = statement.executeQuery(sql);
      resultSet.next();
      boolean result = resultSet.getBoolean("count");
      return result;
    }
    catch (SQLException ex)
    {
      throw new DBException(ex);
    }
  }


3) Call it from PostgreSQLAdapter:

  @Override
  public boolean createTable(IDBTable table, Statement statement) throws DBException
  {
    boolean created = true;
    Savepoint savepoint = null;

    if (existTable(table.getName(), statement))
    {
      // table already existing, skipped...
      return false;
    }
    ...
  }


I could move this snipped to the same method in DBAdapter and remove the override method in PostgreSQLAdapter.

The problem with this approach is that if the table is already existing but has a different schema problems will arise when the table is used. By the way if the table exists and we have to alter them we would need also strategy to migrate the data populating the table and I am not sure this is reasonable.

By the way I still get errors because of a transaction aborted which is not signaled and I am don't know how to find the root of this problem:

main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating ManagedContainer
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating {org.eclipse.net4j.randomizers[default]=Factory[org.eclipse.net4j.randomizers, default], org.eclipse.net4j.userManagers[file]=Factory[org.eclipse.net4j.userManagers, file], org.eclipse.net4j.serverProtocols[failover-client]=Factory[org.eclipse.net4j.serverProtocols, failover-client], org.eclipse.net4j.serverProtocols[cdo]=Factory[org.eclipse.net4j.serverProtocols, cdo], org.eclipse.net4j.serverProtocols[heartbeat]=Factory[org.eclipse.net4j.serverProtocols, heartbeat], org.eclipse.net4j.bufferProviders[default]=Factory[org.eclipse.net4j.bufferProviders, default], org.eclipse.net4j.acceptors[tcp]=Factory[org.eclipse.net4j.acceptors, tcp], org.eclipse.net4j.connectors[tcp]=Factory[org.eclipse.net4j.connectors, tcp], org.eclipse.net4j.executorServices[default]=Factory[org.eclipse.net4j.executorServices, default], org.eclipse.net4j.serverProtocols[failover]=Factory[org.eclipse.net4j.serverProtocols, failover], org.eclipse.net4j.util.timers[daemon]=Factory[org.eclipse.net4j.util.timers, daemon], org.eclipse.net4j.selectors[tcp]=Factory[org.eclipse.net4j.selectors, tcp], org.eclipse.emf.cdo.server.net4j.failoverMonitors[net4j]=Factory[org.eclipse.emf.cdo.server.net4j.failoverMonitors, net4j]}
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  HashMapRegistry@1
  Registry.autoCommit = true
  Registry.transaction = null
  map = 
    org.eclipse.net4j.randomizers[default]=Factory[org.eclipse.net4j.randomizers, default]
    org.eclipse.net4j.userManagers[file]=Factory[org.eclipse.net4j.userManagers, file]
    org.eclipse.net4j.serverProtocols[failover-client]=Factory[org.eclipse.net4j.serverProtocols, failover-client]
    org.eclipse.net4j.serverProtocols[cdo]=Factory[org.eclipse.net4j.serverProtocols, cdo]
    org.eclipse.net4j.serverProtocols[heartbeat]=Factory[org.eclipse.net4j.serverProtocols, heartbeat]
    org.eclipse.net4j.bufferProviders[default]=Factory[org.eclipse.net4j.bufferProviders, default]
    org.eclipse.net4j.acceptors[tcp]=Factory[org.eclipse.net4j.acceptors, tcp]
    org.eclipse.net4j.connectors[tcp]=Factory[org.eclipse.net4j.connectors, tcp]
    org.eclipse.net4j.executorServices[default]=Factory[org.eclipse.net4j.executorServices, default]
    org.eclipse.net4j.serverProtocols[failover]=Factory[org.eclipse.net4j.serverProtocols, failover]
    org.eclipse.net4j.util.timers[daemon]=Factory[org.eclipse.net4j.util.timers, daemon]
    org.eclipse.net4j.selectors[tcp]=Factory[org.eclipse.net4j.selectors, tcp]
    org.eclipse.emf.cdo.server.net4j.failoverMonitors[net4j]=Factory[org.eclipse.emf.cdo.server.net4j.failoverMonitors, net4j]

main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  ManagedContainer@2
  factoryRegistry = 
    org.eclipse.net4j.randomizers[default]=Factory[org.eclipse.net4j.randomizers, default]
    org.eclipse.net4j.userManagers[file]=Factory[org.eclipse.net4j.userManagers, file]
    org.eclipse.net4j.serverProtocols[failover-client]=Factory[org.eclipse.net4j.serverProtocols, failover-client]
    org.eclipse.net4j.serverProtocols[cdo]=Factory[org.eclipse.net4j.serverProtocols, cdo]
    org.eclipse.net4j.serverProtocols[heartbeat]=Factory[org.eclipse.net4j.serverProtocols, heartbeat]
    org.eclipse.net4j.bufferProviders[default]=Factory[org.eclipse.net4j.bufferProviders, default]
    org.eclipse.net4j.acceptors[tcp]=Factory[org.eclipse.net4j.acceptors, tcp]
    org.eclipse.net4j.connectors[tcp]=Factory[org.eclipse.net4j.connectors, tcp]
    org.eclipse.net4j.executorServices[default]=Factory[org.eclipse.net4j.executorServices, default]
    org.eclipse.net4j.serverProtocols[failover]=Factory[org.eclipse.net4j.serverProtocols, failover]
    org.eclipse.net4j.util.timers[daemon]=Factory[org.eclipse.net4j.util.timers, daemon]
    org.eclipse.net4j.selectors[tcp]=Factory[org.eclipse.net4j.selectors, tcp]
    org.eclipse.emf.cdo.server.net4j.failoverMonitors[net4j]=Factory[org.eclipse.emf.cdo.server.net4j.failoverMonitors, net4j]
  postProcessors = 
    org.eclipse.net4j.TransportInjector@2200d5
    org.eclipse.net4j.signal.heartbeat.HeartBeatProtocol$Server$TimerInjector@64ab4d
    org.eclipse.net4j.internal.tcp.TCPSelectorInjector@12a55aa
  elementRegistry = 

main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating Repository[CDORepositoryForExperiments]
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating DBStore@3
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND TABLE_NAME='cdo_lobs'
*** [Table cdo_lobs exists, skipped]
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND TABLE_NAME='cdo_branches'
*** [Table cdo_branches exists, skipped]
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND TABLE_NAME='cdo_package_units'
*** [Table cdo_package_units exists, skipped]
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND TABLE_NAME='cdo_package_infos'
*** [Table cdo_package_infos exists, skipped]
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND TABLE_NAME='cdo_commit_infos'
*** [Table cdo_commit_infos exists, skipped]
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND TABLE_NAME='cdo_properties'
*** [Table cdo_properties exists, skipped]
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating LongIDHandler@4
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating ExternalReferenceManager@5
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating DBStoreAccessor@6
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating SmartPreparedStatementCache@7
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  SmartPreparedStatementCache@7
  AbstractPreparedStatementCache.connection = org.postgresql.jdbc3.Jdbc3Connection@19eda2c
  cache = org.eclipse.emf.cdo.server.internal.db.SmartPreparedStatementCache$Cache@1cef4f7
  checkedOut = 

main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  DBStoreAccessor@6
  StoreAccessorBase.store = DBStore@3
  StoreAccessorBase.context = null
  StoreAccessorBase.reader = false
  StoreAccessorBase.commitContexts = 
  connection = org.postgresql.jdbc3.Jdbc3Connection@19eda2c
  connectionKeepAliveTask = org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor$ConnectionKeepAliveTask@a98932
  statementCache = SmartPreparedStatementCache@7
  newObjects = 
  maxID = NULL

main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND TABLE_NAME='cdo_external_refs'
*** [Table cdo_external_refs exists, skipped]
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  ExternalReferenceManager@5
  table = cdo_external_refs
  idField = id
  uriField = uri
  timestampField = committime
  idHandler = LongIDHandler@4
  lastMappedID = -13

main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  LongIDHandler@4
  store = DBStore@3
  externalReferenceManager = ExternalReferenceManager@5
  lastObjectID = NULL
  nextLocalObjectID = OID9223372036854775807

main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating MetaDataManager@8
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  MetaDataManager@8
  store = DBStore@3
  modelElementToMetaID = 
  metaIDToModelElement = 

main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating DurableLockingManager@9
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND TABLE_NAME='cdo_lock_areas'
*** [Table cdo_lock_areas exists, skipped]
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND TABLE_NAME='cdo_locks'
*** [Table cdo_locks exists, skipped]
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  DurableLockingManager@9
  store = DBStore@3
  branchManager = CDOBranchManagerImpl@10
  idHandler = LongIDHandler@4
  lockAreas = cdo_lock_areas
  lockAreasID = id
  lockAreasUser = user_id
  lockAreasBranch = view_branch
  lockAreasTime = view_time
  lockAreasReadOnly = read_only
  locks = cdo_locks
  locksArea = area_id
  locksObject = object_id
  locksGrade = lock_grade
  sqlInsertLockArea = INSERT INTO cdo_lock_areas(id,user_id,view_branch,view_time,read_only) VALUES (?, ?, ?, ?, ?)
  sqlSelectLockArea = SELECT user_id,view_branch,view_time,read_only FROM cdo_lock_areas WHERE id=?
  sqlSelectAllLockAreas = SELECT id,user_id,view_branch,view_time,read_only FROM cdo_lock_areas
  sqlSelectLockAreas = SELECT id,user_id,view_branch,view_time,read_only FROM cdo_lock_areas WHERE user_id LIKE ?
  sqlDeleteLockArea = DELETE FROM cdo_lock_areas WHERE id=?
  sqlDeleteLockAreas = DELETE FROM cdo_lock_areas a WHERE EXISTS (SELECT * FROM cdo_locks l WHERE l.area_id=a.id)
  sqlSelectLocks = SELECT object_id,lock_grade FROM cdo_locks WHERE area_id=?
  sqlSelectLock = SELECT lock_grade FROM cdo_locks WHERE area_id=? AND object_id=?
  sqlInsertLock = INSERT INTO cdo_locks(area_id,object_id,lock_grade) VALUES (?, ?, ?)
  sqlUpdateLock = UPDATE cdo_locks SET lock_grade=?  WHERE area_id=? AND object_id=?
  sqlDeleteLock = DELETE FROM cdo_locks WHERE area_id=? AND object_id=?
  sqlDeleteLocks = DELETE FROM cdo_locks WHERE area_id=?

main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating HorizontalAuditMappingStrategy@11
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating ObjectTypeCache@12
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating ObjectTypeTable@13
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND TABLE_NAME='cdo_objects'
*** [Table cdo_objects exists, skipped]
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  ObjectTypeTable@13
  AbstractObjectTypeMapper.mappingStrategy = HorizontalAuditMappingStrategy@11
  AbstractObjectTypeMapper.metaDataManager = MetaDataManager@8
  table = cdo_objects
  idField = cdo_id
  typeField = cdo_class
  timeField = cdo_created
  sqlDelete = DELETE FROM cdo_objects WHERE cdo_id=?
  sqlInsert = INSERT INTO cdo_objects(cdo_id,cdo_class,cdo_created) VALUES (?, ?, ?)
  sqlSelect = SELECT cdo_class FROM cdo_objects WHERE cdo_id=?

main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  ObjectTypeCache@12
  AbstractObjectTypeMapper.mappingStrategy = HorizontalAuditMappingStrategy@11
  AbstractObjectTypeMapper.metaDataManager = MetaDataManager@8
  DelegatingObjectTypeMapper.delegate = ObjectTypeTable@13
  memoryCache = 
  cacheSize = 100000

main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP  HorizontalAuditMappingStrategy@11
  AbstractMappingStrategy.store = DBStore@3
  AbstractMappingStrategy.properties = 
  AbstractMappingStrategy.classMappings = 
  AbstractMappingStrategy.allClassMappingsCreated = false
  AbstractHorizontalMappingStrategy.objectTypeMapper = ObjectTypeCache@12

[WARN] Detected crash of repository CDORepositoryForExperiments
REMOVING /mypath_testLocking
FAIL:ERROR: current transaction is aborted, commands ignored until end of transaction block
> org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
> org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
> org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
> org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
> org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
> org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:252)
> org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.ObjectTypeTable.getMaxID(ObjectTypeTable.java:174)
> org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.DelegatingObjectTypeMapper.getMaxID(DelegatingObjectTypeMapper.java:85)
> org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.AbstractHorizontalMappingStrategy.repairAfterCrash(AbstractHorizontalMappingStrategy.java:94)
> org.eclipse.emf.cdo.server.internal.db.DBStore.repairAfterCrash(DBStore.java:679)
> org.eclipse.emf.cdo.server.internal.db.DBStore.reStart(DBStore.java:661)
> org.eclipse.emf.cdo.server.internal.db.DBStore.doActivate(DBStore.java:556)
> org.eclipse.net4j.util.lifecycle.Lifecycle.activate(Lifecycle.java:75)
> org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:101)
> org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:91)
> org.eclipse.emf.cdo.internal.server.Repository.doActivate(Repository.java:1792)
> org.eclipse.net4j.util.lifecycle.Lifecycle.activate(Lifecycle.java:75)
> org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:101)
> org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:91)
> org.eclipse.emf.cdo.server.CDOServerUtil.addRepository(CDOServerUtil.java:204)
> it.rcpvision.cdoexamples.stockmanager.server.Server.start(Server.java:123)
> it.rcpvision.cdoexamples.stockmanager.server.tests.AbstractCDOTest.startServer(AbstractCDOTest.java:191)
> it.csipiemonte.cdoexamples.locking.LockingTest.setUp(LockingTest.java:38)
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> java.lang.reflect.Method.invoke(Unknown Source)
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
> org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
> org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)



Federico


Re: [CDO] Exception on Repository activation [message #758903 is a reply to message #758691] Fri, 25 November 2011 07:40 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hi Federico,<br>
<br>
Please submit a bugzilla and attch your code there so that we can
track the changes. Instead of just checking for the existance of a
table it would be nicer to have a method that returns an instance of
IDBTable that is fully populated with IDBFields and IDBIndexes. Even
better would be a method on DBUtil like this:<br>
<br>
<title></title>
<!-- ======================================================== -->
<!-- = Java Sourcecode to HTML automatically converted code = -->
<!-- = Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard markus@jave.de = -->
<!-- = Further information: http://www.java2html.de = -->
<div class="java" align="left">
<table bgcolor="#ffffff" border="0" cellpadding="3"
cellspacing="0">
<tbody>
<tr>
<!-- start source code --> <td align="left" nowrap="nowrap"
valign="top"> <code>
<font color="#ffffff">  </font><font color="#7f0055"><b>public static </b></font><font
color="#000000">IDBSchema createSchema</font><font
color="#000000">(</font><font color="#000000">String name, IDBConnectionProvider connectionProvider</font><font
color="#000000">)</font><br>
<font color="#ffffff">  </font><font color="#000000">{</font><br>
<font color="#ffffff">    </font><font color="#000000">DBSchema schema = </font><font
color="#7f0055"><b>new </b></font><font
color="#000000">DBSchema</font><font color="#000000">(</font><font
color="#000000">name</font><font color="#000000">)</font><font
color="#000000">;</font><br>
<br>
<font color="#ffffff">    </font><font color="#7f0055"><b>for </b></font><font
color="#000000">(</font><font color="#000000">String tableName = ...</font><font
color="#000000">)</font><br>
<font color="#ffffff">    </font><font color="#000000">{</font><br>
<font color="#ffffff">      </font><font color="#000000">IDBTable table = schema.addTable</font><font
color="#000000">(</font><font color="#000000">tableName</font><font
color="#000000">)</font><font color="#000000">;</font><br>
<font color="#ffffff">      </font><br>
<font color="#ffffff">      </font><font
color="#7f0055"><b>for </b></font><font
color="#000000">(</font><font color="#000000">String fieldName = ...</font><font
color="#000000">)</font><br>
<font color="#ffffff">      </font><font color="#000000">{</font><br>
<font color="#ffffff">        </font><font
color="#000000">table.addField</font><font
color="#000000">(</font><font color="#000000">fieldName, DBType.XXX</font><font
color="#000000">)</font><font color="#000000">;</font><br>
<font color="#ffffff">      </font><font color="#000000">}</font><br>
<font color="#ffffff">      </font><br>
<font color="#ffffff">      </font><font color="#7f0055"><b>for </b></font><font
color="#000000">(</font><font color="#000000">String indexName = ...</font><font
color="#000000">)</font><br>
<font color="#ffffff">      </font><font color="#000000">{</font><br>
<font color="#ffffff">        </font><font
color="#000000">IDBField</font><font color="#000000">[] </font><font
color="#000000">indexFields = ...;</font><br>
<font color="#ffffff">        </font><font
color="#000000">table.addIndex</font><font
color="#000000">(</font><font color="#000000">IDBIndex.Type.XXX, indexFields</font><font
color="#000000">)</font><font color="#000000">;</font><br>
<font color="#ffffff">      </font><font color="#000000">}</font><br>
<font color="#ffffff">    </font><font color="#000000">}</font><br>
<br>
<font color="#ffffff">    </font><font color="#7f0055"><b>return </b></font><font
color="#000000">schema;</font><br>
<font color="#ffffff">  </font><font color="#000000">}</font></code>
</td>
<!-- end source code --> </tr>
</tbody>
</table>
</div>
<!-- = END of automatically generated HTML code = -->
<!-- ======================================================== -->
<style type="text/css">
<!--code { font-family: Courier New, Courier; font-size: 10pt; margin: 0px; }-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<br>
Then we could use it to detect and fix the potential differences
between the actual and the target schemas.<br>
<br>
Cheers<br>
/Eike<br>
<br>
----<br>
<a class="moz-txt-link-freetext" href="http://www.esc-net.de">http://www.esc-net.de</a><br>
<a class="moz-txt-link-freetext" href="http://thegordian.blogspot.com">http://thegordian.blogspot.com</a><br>
<a class="moz-txt-link-freetext" href="http://twitter.com/eikestepper">http://twitter.com/eikestepper</a><br>
<br>
<br>
Am 24.11.2011 10:39, schrieb Federico Tomassetti:
<blockquote cite="mid:jal3c9$kb2$1@news.eclipse.org" type="cite">I
have implemented this approach.
<br>
<br>
1) declare in IDBAdapter the method:
<br>
<br>
<br>
public boolean existTable(String tableName, Statement statement)
throws DBException;
<br>
<br>
<br>
<br>
2) implement it in DBAdapter:
<br>
<br>
<br>
 public boolean existTable(String tableName, Statement statement)
throws DBException
<br>
 {
<br>
   StringBuilder builder = new StringBuilder();
<br>
   builder.append("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='public' AND TABLE_NAME='");
<br>
   builder.append(tableName);
<br>
   builder.append("'");
<br>
   String sql = builder.toString();
<br>
   if (TRACER.isEnabled())
<br>
   {
<br>
     TRACER.trace(sql);
<br>
   }
<br>
<br>
   try
<br>
   {
<br>
     ResultSet resultSet = statement.executeQuery(sql);
<br>
     resultSet.next();
<br>
     boolean result = resultSet.getBoolean("count");
<br>
     return result;
<br>
   }
<br>
   catch (SQLException ex)
<br>
   {
<br>
     throw new DBException(ex);
<br>
   }
<br>
 }
<br>
<br>
<br>
3) Call it from PostgreSQLAdapter:
<br>
<br>
<br>
 @Override
<br>
 public boolean createTable(IDBTable table, Statement statement)
throws DBException
<br>
 {
<br>
   boolean created = true;
<br>
   Savepoint savepoint = null;
<br>
<br>
   if (existTable(table.getName(), statement))
<br>
   {
<br>
     // table already existing, skipped...
<br>
     return false;
<br>
   }
<br>
   ...
<br>
 }
<br>
<br>
<br>
I could move this snipped to the same method in DBAdapter and
remove the override method in PostgreSQLAdapter.
<br>
<br>
The problem with this approach is that if the table is already
existing but has a different schema problems will arise when the
table is used. By the way if the table exists and we have to alter
them we would need also strategy to migrate the data populating
the table and I am not sure this is reasonable.
<br>
<br>
By the way I still get errors because of a transaction aborted
which is not signaled and I am don't know how to find the root of
this problem:
<br>
<br>
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating
ManagedContainer
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating
{org.eclipse.net4j.randomizers[default]=Factory[org.eclipse.net4j.randomizers,
default],
org.eclipse.net4j.userManagers[file]=Factory[org.eclipse.net4j.userManagers,
file],
org.eclipse.net4j.serverProtocols[failover-client]=Factory[org.eclipse.net4j.serverProtocols,
failover-client],
org.eclipse.net4j.serverProtocols[cdo]=Factory[org.eclipse.net4j.serverProtocols,
cdo],
org.eclipse.net4j.serverProtocols[heartbeat]=Factory[org.eclipse.net4j.serverProtocols,
heartbeat],
org.eclipse.net4j.bufferProviders[default]=Factory[org.eclipse.net4j.bufferProviders,
default],
org.eclipse.net4j.acceptors[tcp]=Factory[org.eclipse.net4j.acceptors,
tcp],
org.eclipse.net4j.connectors[tcp]=Factory[org.eclipse.net4j.connectors,
tcp],
org.eclipse.net4j.executorServices[default]=Factory[org.eclipse.net4j.executorServices,
default],
org.eclipse.net4j.serverProtocols[failover]=Factory[org.eclipse.net4j.serverProtocols,
failover],
org.eclipse.net4j.util.timers[daemon]=Factory[org.eclipse.net4j.util.timers,
daemon],
org.eclipse.net4j.selectors[tcp]=Factory[org.eclipse.net4j.selectors,
tcp],
org.eclipse.emf.cdo.server.net4j.failoverMonitors[net4j]=Factory[org.eclipse.emf.cdo.server.net4j.failoverMonitors,
net4j]}
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP 
HashMapRegistry@1
<br>
 Registry.autoCommit = true
<br>
 Registry.transaction = null
<br>
 map =   
org.eclipse.net4j.randomizers[default]=Factory[org.eclipse.net4j.randomizers,
default]
<br>
  
org.eclipse.net4j.userManagers[file]=Factory[org.eclipse.net4j.userManagers,
file]
<br>
  
org.eclipse.net4j.serverProtocols[failover-client]=Factory[org.eclipse.net4j.serverProtocols,
failover-client]
<br>
  
org.eclipse.net4j.serverProtocols[cdo]=Factory[org.eclipse.net4j.serverProtocols,
cdo]
<br>
  
org.eclipse.net4j.serverProtocols[heartbeat]=Factory[org.eclipse.net4j.serverProtocols,
heartbeat]
<br>
  
org.eclipse.net4j.bufferProviders[default]=Factory[org.eclipse.net4j.bufferProviders,
default]
<br>
  
org.eclipse.net4j.acceptors[tcp]=Factory[org.eclipse.net4j.acceptors,
tcp]
<br>
  
org.eclipse.net4j.connectors[tcp]=Factory[org.eclipse.net4j.connectors,
tcp]
<br>
  
org.eclipse.net4j.executorServices[default]=Factory[org.eclipse.net4j.executorServices,
default]
<br>
  
org.eclipse.net4j.serverProtocols[failover]=Factory[org.eclipse.net4j.serverProtocols,
failover]
<br>
  
org.eclipse.net4j.util.timers[daemon]=Factory[org.eclipse.net4j.util.timers,
daemon]
<br>
  
org.eclipse.net4j.selectors[tcp]=Factory[org.eclipse.net4j.selectors,
tcp]
<br>
  
org.eclipse.emf.cdo.server.net4j.failoverMonitors[net4j]=Factory[org.eclipse.emf.cdo.server.net4j.failoverMonitors,
net4j]
<br>
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP 
ManagedContainer@2
<br>
 factoryRegistry =   
org.eclipse.net4j.randomizers[default]=Factory[org.eclipse.net4j.randomizers,
default]
<br>
  
org.eclipse.net4j.userManagers[file]=Factory[org.eclipse.net4j.userManagers,
file]
<br>
  
org.eclipse.net4j.serverProtocols[failover-client]=Factory[org.eclipse.net4j.serverProtocols,
failover-client]
<br>
  
org.eclipse.net4j.serverProtocols[cdo]=Factory[org.eclipse.net4j.serverProtocols,
cdo]
<br>
  
org.eclipse.net4j.serverProtocols[heartbeat]=Factory[org.eclipse.net4j.serverProtocols,
heartbeat]
<br>
  
org.eclipse.net4j.bufferProviders[default]=Factory[org.eclipse.net4j.bufferProviders,
default]
<br>
  
org.eclipse.net4j.acceptors[tcp]=Factory[org.eclipse.net4j.acceptors,
tcp]
<br>
  
org.eclipse.net4j.connectors[tcp]=Factory[org.eclipse.net4j.connectors,
tcp]
<br>
  
org.eclipse.net4j.executorServices[default]=Factory[org.eclipse.net4j.executorServices,
default]
<br>
  
org.eclipse.net4j.serverProtocols[failover]=Factory[org.eclipse.net4j.serverProtocols,
failover]
<br>
  
org.eclipse.net4j.util.timers[daemon]=Factory[org.eclipse.net4j.util.timers,
daemon]
<br>
  
org.eclipse.net4j.selectors[tcp]=Factory[org.eclipse.net4j.selectors,
tcp]
<br>
  
org.eclipse.emf.cdo.server.net4j.failoverMonitors[net4j]=Factory[org.eclipse.emf.cdo.server.net4j.failoverMonitors,
net4j]
<br>
 postProcessors =    org.eclipse.net4j.TransportInjector@2200d5
<br>
  
org.eclipse.net4j.signal.heartbeat.HeartBeatProtocol$Server$TimerInjector@64ab4d<br>
   org.eclipse.net4j.internal.tcp.TCPSelectorInjector@12a55aa
<br>
 elementRegistry = <br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating
Repository[CDORepositoryForExperiments]
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating
DBStore@3
<br>
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM
INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND
TABLE_NAME='cdo_lobs'
<br>
*** [Table cdo_lobs exists, skipped]
<br>
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM
INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND
TABLE_NAME='cdo_branches'
<br>
*** [Table cdo_branches exists, skipped]
<br>
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM
INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND
TABLE_NAME='cdo_package_units'
<br>
*** [Table cdo_package_units exists, skipped]
<br>
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM
INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND
TABLE_NAME='cdo_package_infos'
<br>
*** [Table cdo_package_infos exists, skipped]
<br>
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM
INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND
TABLE_NAME='cdo_commit_infos'
<br>
*** [Table cdo_commit_infos exists, skipped]
<br>
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM
INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND
TABLE_NAME='cdo_properties'
<br>
*** [Table cdo_properties exists, skipped]
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating
LongIDHandler@4
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating
ExternalReferenceManager@5
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating
DBStoreAccessor@6
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating
SmartPreparedStatementCache@7
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP 
SmartPreparedStatementCache@7
<br>
 AbstractPreparedStatementCache.connection =
org.postgresql.jdbc3.Jdbc3Connection@19eda2c
<br>
 cache =
org.eclipse.emf.cdo.server.internal.db.SmartPreparedStatementCache$Cache@1cef4f7<br>
 checkedOut = <br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP 
DBStoreAccessor@6
<br>
 StoreAccessorBase.store = DBStore@3
<br>
 StoreAccessorBase.context = null
<br>
 StoreAccessorBase.reader = false
<br>
 StoreAccessorBase.commitContexts =  connection =
org.postgresql.jdbc3.Jdbc3Connection@19eda2c
<br>
 connectionKeepAliveTask =
org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor$ConnectionKeepAliveTask@a98932<br>
 statementCache = SmartPreparedStatementCache@7
<br>
 newObjects =  maxID = NULL
<br>
<br>
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM
INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND
TABLE_NAME='cdo_external_refs'
<br>
*** [Table cdo_external_refs exists, skipped]
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP 
ExternalReferenceManager@5
<br>
 table = cdo_external_refs
<br>
 idField = id
<br>
 uriField = uri
<br>
 timestampField = committime
<br>
 idHandler = LongIDHandler@4
<br>
 lastMappedID = -13
<br>
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP 
LongIDHandler@4
<br>
 store = DBStore@3
<br>
 externalReferenceManager = ExternalReferenceManager@5
<br>
 lastObjectID = NULL
<br>
 nextLocalObjectID = OID9223372036854775807
<br>
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating
MetaDataManager@8
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP 
MetaDataManager@8
<br>
 store = DBStore@3
<br>
 modelElementToMetaID =  metaIDToModelElement = <br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating
DurableLockingManager@9
<br>
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM
INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND
TABLE_NAME='cdo_lock_areas'
<br>
*** [Table cdo_lock_areas exists, skipped]
<br>
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM
INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND
TABLE_NAME='cdo_locks'
<br>
*** [Table cdo_locks exists, skipped]
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP 
DurableLockingManager@9
<br>
 store = DBStore@3
<br>
 branchManager = CDOBranchManagerImpl@10
<br>
 idHandler = LongIDHandler@4
<br>
 lockAreas = cdo_lock_areas
<br>
 lockAreasID = id
<br>
 lockAreasUser = user_id
<br>
 lockAreasBranch = view_branch
<br>
 lockAreasTime = view_time
<br>
 lockAreasReadOnly = read_only
<br>
 locks = cdo_locks
<br>
 locksArea = area_id
<br>
 locksObject = object_id
<br>
 locksGrade = lock_grade
<br>
 sqlInsertLockArea = INSERT INTO
cdo_lock_areas(id,user_id,view_branch,view_time,read_only) VALUES
(?, ?, ?, ?, ?)
<br>
 sqlSelectLockArea = SELECT
user_id,view_branch,view_time,read_only FROM cdo_lock_areas WHERE
id=?
<br>
 sqlSelectAllLockAreas = SELECT
id,user_id,view_branch,view_time,read_only FROM cdo_lock_areas
<br>
 sqlSelectLockAreas = SELECT
id,user_id,view_branch,view_time,read_only FROM cdo_lock_areas
WHERE user_id LIKE ?
<br>
 sqlDeleteLockArea = DELETE FROM cdo_lock_areas WHERE id=?
<br>
 sqlDeleteLockAreas = DELETE FROM cdo_lock_areas a WHERE EXISTS
(SELECT * FROM cdo_locks l WHERE l.area_id=a.id)
<br>
 sqlSelectLocks = SELECT object_id,lock_grade FROM cdo_locks WHERE
area_id=?
<br>
 sqlSelectLock = SELECT lock_grade FROM cdo_locks WHERE area_id=?
AND object_id=?
<br>
 sqlInsertLock = INSERT INTO
cdo_locks(area_id,object_id,lock_grade) VALUES (?, ?, ?)
<br>
 sqlUpdateLock = UPDATE cdo_locks SET lock_grade=?  WHERE
area_id=? AND object_id=?
<br>
 sqlDeleteLock = DELETE FROM cdo_locks WHERE area_id=? AND
object_id=?
<br>
 sqlDeleteLocks = DELETE FROM cdo_locks WHERE area_id=?
<br>
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating
HorizontalAuditMappingStrategy@11
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating
ObjectTypeCache@12
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] Activating
ObjectTypeTable@13
<br>
main [org.eclipse.net4j.spi.db.DBAdapter] SELECT COUNT(*) FROM
INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='public' AND
TABLE_NAME='cdo_objects'
<br>
*** [Table cdo_objects exists, skipped]
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP 
ObjectTypeTable@13
<br>
 AbstractObjectTypeMapper.mappingStrategy =
HorizontalAuditMappingStrategy@11
<br>
 AbstractObjectTypeMapper.metaDataManager = MetaDataManager@8
<br>
 table = cdo_objects
<br>
 idField = cdo_id
<br>
 typeField = cdo_class
<br>
 timeField = cdo_created
<br>
 sqlDelete = DELETE FROM cdo_objects WHERE cdo_id=?
<br>
 sqlInsert = INSERT INTO cdo_objects(cdo_id,cdo_class,cdo_created)
VALUES (?, ?, ?)
<br>
 sqlSelect = SELECT cdo_class FROM cdo_objects WHERE cdo_id=?
<br>
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP 
ObjectTypeCache@12
<br>
 AbstractObjectTypeMapper.mappingStrategy =
HorizontalAuditMappingStrategy@11
<br>
 AbstractObjectTypeMapper.metaDataManager = MetaDataManager@8
<br>
 DelegatingObjectTypeMapper.delegate = ObjectTypeTable@13
<br>
 memoryCache =  cacheSize = 100000
<br>
<br>
main [org.eclipse.net4j.util.lifecycle.Lifecycle] DUMP 
HorizontalAuditMappingStrategy@11
<br>
 AbstractMappingStrategy.store = DBStore@3
<br>
 AbstractMappingStrategy.properties =
 AbstractMappingStrategy.classMappings =
 AbstractMappingStrategy.allClassMappingsCreated = false
<br>
 AbstractHorizontalMappingStrategy.objectTypeMapper =
ObjectTypeCache@12
<br>
<br>
[WARN] Detected crash of repository CDORepositoryForExperiments
<br>
REMOVING /mypath_testLocking
<br>
FAIL:ERROR: current transaction is aborted, commands ignored until
end of transaction block
<br>
<blockquote type="cite">org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
<br>
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
<br>
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
<br>
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
<br>
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
<br>
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:252)
<br>
org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.ObjectTypeTable.getMaxID(ObjectTypeTable.java:174)
<br>
org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.DelegatingObjectTypeMapper.getMaxID(DelegatingObjectTypeMapper.java:85)
<br>
org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.AbstractHorizontalMappingStrategy.repairAfterCrash(AbstractHorizontalMappingStrategy.java:94)
<br>
org.eclipse.emf.cdo.server.internal.db.DBStore.repairAfterCrash(DBStore.java:679)
<br>
org.eclipse.emf.cdo.server.internal.db.DBStore.reStart(DBStore.java:661)
<br>
org.eclipse.emf.cdo.server.internal.db.DBStore.doActivate(DBStore.java:556)
<br>
org.eclipse.net4j.util.lifecycle.Lifecycle.activate(Lifecycle.java:75)
<br>
org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:101)
<br>
org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:91)
<br>
org.eclipse.emf.cdo.internal.server.Repository.doActivate(Repository.java:1792)
<br>
org.eclipse.net4j.util.lifecycle.Lifecycle.activate(Lifecycle.java:75)
<br>
org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:101)
<br>
org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(LifecycleUtil.java:91)
<br>
org.eclipse.emf.cdo.server.CDOServerUtil.addRepository(CDOServerUtil.java:204)
<br>
it.rcpvision.cdoexamples.stockmanager.server.Server.start(Server.java:123)
<br>
it.rcpvision.cdoexamples.stockmanager.server.tests.AbstractCDOTest.startServer(AbstractCDOTest.java:191)
<br>
it.csipiemonte.cdoexamples.locking.LockingTest.setUp(LockingTest.java:38)
<br>
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
<br>
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
<br>
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
<br>
java.lang.reflect.Method.invoke(Unknown Source)
<br>
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
<br>
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
<br>
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
<br>
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
<br>
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
<br>
org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
<br>
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
<br>
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
<br>
org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
<br>
org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
<br>
org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
<br>
org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
<br>
org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
<br>
org.junit.runners.ParentRunner.run(ParentRunner.java:236)
<br>
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
<br>
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
<br>
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
<br>
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
<br>
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
<br>
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
<br>
</blockquote>
<br>
<br>
<br>
Federico
<br>
</blockquote>
</body>
</html>


Re: [CDO] Exception on Repository activation [message #758932 is a reply to message #758903] Fri, 25 November 2011 10:42 Go to previous message
Federico Tomassetti is currently offline Federico TomassettiFriend
Messages: 190
Registered: July 2009
Location: Dublin
Senior Member

Bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=364809 created.
There is a description of the problem and a patch implementing what you required (the part about indexes is not yet complete).

Federico


Previous Topic:Ecore Custom XML Serialization with ExtendedMetaData
Next Topic:EMF Database Schema: Custom or Generic?
Goto Forum:
  


Current Time: Thu Apr 25 15:03:50 GMT 2024

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

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

Back to the top