Home » Modeling » EMF » [CDO] Exception on Repository activation
[CDO] Exception on Repository activation [message #754361] |
Wed, 02 November 2011 10:42 |
|
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...
website: http://www.federico-tomassetti.it
[Updated on: Wed, 02 November 2011 11:13] Report message to a moderator
|
|
| | | |
Re: [CDO] Exception on Repository activation [message #756813 is a reply to message #754817] |
Tue, 15 November 2011 09:05 |
|
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
website: http://www.federico-tomassetti.it
|
|
|
Re: [CDO] Exception on Repository activation [message #756963 is a reply to message #756813] |
Tue, 15 November 2011 17:58 |
|
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
>
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
|
|
| |
Re: [CDO] Exception on Repository activation [message #757468 is a reply to message #756963] |
Fri, 18 November 2011 15:02 |
|
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.
website: http://www.federico-tomassetti.it
|
|
|
Re: [CDO] Exception on Repository activation [message #757981 is a reply to message #757468] |
Mon, 21 November 2011 06:40 |
|
<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<String> names = new HashSet<String>();
<br>
names.add(PROP_REPOSITORY_CREATED);
<br>
names.add(PROP_GRACEFULLY_SHUT_DOWN);
<br>
<br>
Map<String, String> 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>
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
|
|
| |
Re: [CDO] Exception on Repository activation [message #758213 is a reply to message #758208] |
Tue, 22 November 2011 11:04 |
|
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
website: http://www.federico-tomassetti.it
|
|
| |
Re: [CDO] Exception on Repository activation [message #758219 is a reply to message #758213] |
Tue, 22 November 2011 11:32 |
|
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 :)
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
|
|
|
Re: [CDO] Exception on Repository activation [message #758691 is a reply to message #758219] |
Thu, 24 November 2011 09:39 |
|
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
website: http://www.federico-tomassetti.it
|
|
|
Re: [CDO] Exception on Repository activation [message #758903 is a reply to message #758691] |
Fri, 25 November 2011 07:40 |
|
<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>
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
|
|
| |
Goto Forum:
Current Time: Thu Apr 25 15:03:50 GMT 2024
Powered by FUDForum. Page generated in 0.03945 seconds
|