Hello,
We have a project where we are migrating the documents stored in a open source tool Contineo to Documentum (6.5). We have multiple versions (mostly 2 versions for each document) of a document and we are replicating the structure in documentum by first storing the oldest version of the document and then checking it out and then checking in the next version.
However I am observing that the checking in of a 5kb-10kb files it's taking close to 5 mins. However storing of a document and checking out is quite fast.
The code to checkin code is simple similar to
Code:
public static void doCheckin( String strPath, IDfSession session ) throws DfException {
IDfClientX clientx = new DfClientX();
IDfCheckinOperation operation = clientx.getCheckinOperation();
IDfSysObject sysObj = (IDfSysObject) session.getObjectByPath( strPath );
if( sysObj == null ) {
System.out.println("Object " + strPath + " can not be found.");
return;
}
if (sysObj.isCheckedOut() == false) {
System.out.println("Object " + strPath + " is not checked out.");
return;
}
IDfCheckinNode node;
if( sysObj.isVirtualDocument() ) {
IDfVirtualDocument vDoc = sysObj.asVirtualDocument( "CURRENT", false );
node = (IDfCheckinNode)operation.add(vDoc);
} else {
node = (IDfCheckinNode)operation.add(sysObj);
}
//Other options for setCheckinVersion: VERSION_NOT_SET, NEXT_MAJOR,
// NEXT_MINOR, BRANCH_VERSION
operation.setCheckinVersion(IDfCheckinOperation.SAME_VERSION);
//see sample: Operations- Execute and Check Errors
executeOperation( operation );
System.out.println("Old object id: " + node.getObjectId().toString() );
System.out.println("New object id: " + node.getNewObjectId().toString() );
}The thread stack I am observing which is there for a long time is
Code:
Name: Migration Task - 3
State: RUNNABLE
Total blocked: 989 Total waited: 0
Stack trace:
sun.nio.ch.SocketDispatcher.read0(Native Method)
sun.nio.ch.SocketDispatcher.read(Unknown Source)
sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
sun.nio.ch.IOUtil.read(Unknown Source)
sun.nio.ch.SocketChannelImpl.read(Unknown Source)
- locked java.lang.Object@11ec8dd
com.documentum.fc.impl.util.io.MessageChannel.readSocket(MessageChannel.java:123)
com.documentum.fc.impl.util.io.MessageChannel.readLength(MessageChannel.java:100)
com.documentum.fc.impl.util.io.MessageChannel.getIncomingMessageLength(MessageChannel.java:92)
com.documentum.fc.impl.util.io.MessageChannel.read(MessageChannel.java:77)
- locked com.documentum.fc.impl.util.io.MessageChannel@153d56
com.documentum.fc.client.impl.connection.netwise.AbstractNetwiseRpcClient.receiveMessage(AbstractNetwiseRpcClient.java:167)
com.documentum.fc.client.impl.connection.docbase.netwise.NetwiseDocbaseRpcClient.applyForCollection(NetwiseDocbaseRpcClient.java:369)
- locked com.documentum.fc.client.impl.connection.docbase.netwise.NetwiseDocbaseRpcClient@6de053
com.documentum.fc.client.impl.connection.docbase.DocbaseConnection$3.evaluate(DocbaseConnection.java:1129)
- locked com.documentum.fc.client.impl.connection.docbase.DocbaseConnection@3aa791
com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.evaluateRpc(DocbaseConnection.java:1000)
- locked com.documentum.fc.client.impl.connection.docbase.DocbaseConnection@3aa791
com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.applyForCollection(DocbaseConnection.java:1117)
com.documentum.fc.client.impl.docbase.DocbaseApi.exec(DocbaseApi.java:82)
com.documentum.fc.client.impl.session.Session.query(Session.java:3247)
com.documentum.fc.client.DfQuery.runQuery(DfQuery.java:161)
com.documentum.fc.client.DfQuery.execute(DfQuery.java:205)
com.documentum.fc.client.impl.objectmanager.PersistentObjectManager.getObjectsByQuery(PersistentObjectManager.java:143)
com.documentum.fc.client.impl.session.Session.getObjectsByQuery(Session.java:1115)
com.documentum.fc.client.impl.session.SessionHandle.getObjectsByQuery(SessionHandle.java:800)
com.documentum.operations.impl.config.ConfigManager.getLastModifiedTimeStamp(ConfigManager.java:404)
com.documentum.operations.impl.config.ConfigManager.getConfigService(ConfigManager.java:502)
com.documentum.operations.impl.config.ConfigManager.lookupOperation(ConfigManager.java:105)
com.documentum.operations.DfOperation.getDefinition(DfOperation.java:84)
com.documentum.operations.impl.OperationNodeTreeBuilder.populate(OperationNodeTreeBuilder.java:574)
com.documentum.operations.impl.OperationNodeTreeBuilder.add(OperationNodeTreeBuilder.java:65)
com.documentum.operations.DfOperation.add(DfOperation.java:257)
com.arisglobal.docmig.dms.documentum.DocumentumServiceImpl.checkinDocument(DocumentumServiceImpl.java:438)
com.arisglobal.docmig.util.DocumentumHelper.storeAllDocumentVersions(DocumentumHelper.java:32)
com.arisglobal.docmig.ContineoToDocumentumMigrationHelper.migrateDocs(ContineoToDocumentumMigrationHelper.java:81)
com.arisglobal.docmig.ContineoToDocumentumMigrationHelper.migrateNewRI(ContineoToDocumentumMigrationHelper.java:64)
com.arisglobal.docmig.MigrationTask.migrateNewRI(MigrationTask.java:84)
com.arisglobal.docmig.MigrationTask.migrate(MigrationTask.java:60)
com.arisglobal.docmig.MigrationTask.run(MigrationTask.java:31)
java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
java.util.concurrent.FutureTask.run(Unknown Source)
org.springframework.core.task.SimpleAsyncTaskExecutor$ConcurrencyThrottlingRunnable.run(SimpleAsyncTaskExecutor.java:229)
java.lang.Thread.run(Unknown Source)
Please pass on any pointers you may have and I would appreciate any help in this regard.
Thanks,
Shashi