Hi,

I'm upgrading a system Play application that uses Java not Scala from 
Orientdb-2.2.15 to orientdb-2-2-21 and I'm having a problem with addVertex 
and need advice where to investigate (or to point out our novice error). 
 The error we get is in our unit tests where each test starts OrinetDB as 
an embedded server using an in-memory "testDb".

Here's the wrapper code for the update :

OrientGraphConnectionHandlerIF connPool;
       
@Inject
public GraphTransactionManager(OrientGraphConnectionHandlerIF connHandler) {
           connPool = connHandler;
}

        public T runWithCommit(withGraphConnection<T> runnable) {
              
                FramedGraph<OrientGraph> graph = connPool.getFrameGraph();
             T result = null;
               try {
                  result = runnable.run(graph);
                  graph.getBaseGraph().commit();
         } catch(Exception e) {
                 graph.getBaseGraph().rollback();
                       Logger.error(String.format("Error in graph 
transaction manager while running with commit: "), e);
           throw e;
          } finally {
                    graph.getBaseGraph().shutdown();
               }       
                return result;
         
       }



And here's lambda code that fails (arrHandler is an instance of the above 
where the Template T is an array).  I've commented the line 71 and 74 
mentioned in the stack trace shown later:


    @Override
   public DeletionDTO createDeletionFromInstance(String instanceId, 
DeletionDTO deletionDTO) throws Exception {

        return handler.runWithCommit((graph) -> {                           
                               //this is line 71

            // create and map the initial values
           DeletionGraph deletionGraph = graph.addVertex( 
"class:DeletionGraph", DeletionGraph.class);    // this is line 74

            //set the status and ID (this will overwrite anything set in 
the DTO)
           deletionGraph.setUniqueIdentifier( 
deletionGraph.generateUniqueIdentifier() );
           deletionGraph.setDeletionStage( 
DeletionStatus.NEW_UNCOMMITTED.getStatus());

            //get the mandatory fields
           deletionGraph.setUniqueIdentifier( 
deletionGraph.getUniqueIdentifier());
           deletionGraph.setDeletionType( 
deletionDTO.getDeletionType().toString());
           deletionGraph.setDeletionApprovalDate( 
deletionDTO.getDeletionApprovalDate());
           deletionGraph.setDDFReference( deletionDTO.getDDFReference());
           deletionGraph.setDeletionDescription( 
deletionDTO.getDeletionDescription());

            //add the actors
          
 deletionGraph.setCreatedBy(createActor(deletionDTO.getCreatedBy(), graph));

            //assign the asset instance edge/adjacency
           Iterable<AssetInstanceGraph> foundAssetInstances = 
graph.getVertices( "AssetInstance." + UNIQUE_IDENTIFIER, instanceId, 
AssetInstanceGraph.class);
           AssetInstanceGraph assetInstance = 
foundAssetInstances.iterator().hasNext() ? 
foundAssetInstances.iterator().next() : null;
           deletionGraph.setDeletionFor( assetInstance );

            return new DeletionDTO(deletionGraph);
       });
   }



The stack trace appears to show the record being saved at line 74 when 
running with OrientDb 2.2.15 it did not. 

DB name="testdb"
       at com.orientechnologies.orient.core.record.impl.ODocument.
validateField(ODocument.java:229)
   at com.orientechnologies.orient.core.record.impl.ODocument.validate(
ODocument.java:2047)
       at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.
save(ODatabaseDocumentTx.java:2733)
       at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.
save(ODatabaseDocumentTx.java:102)
at com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.
java:1805)
   at com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument
.java:1796)
   at com.tinkerpop.blueprints.impls.orient.OrientElement.save(OrientElement
.java:333)
    at com.tinkerpop.blueprints.impls.orient.OrientElement.save(
OrientElement.java:315)
    at com.tinkerpop.blueprints.impls.orient.OrientBaseGraph.addVertex(
OrientBaseGraph.java:571)
   at com.tinkerpop.blueprints.impls.orient.OrientBaseGraph.addVertex(
OrientBaseGraph.java:503)
   at com.tinkerpop.blueprints.impls.orient.OrientBaseGraph.addVertex(
OrientBaseGraph.java:75)
    at com.tinkerpop.frames.FramedGraph.addVertex(FramedGraph.java:242)
    at com.tinkerpop.frames.FramedGraph.addVertex(FramedGraph.java:258)
    at services.implementations.deletionservice.DeletionServiceImpl.lambda
$createDeletionFromInstance$3(DeletionServiceImpl.java:74)
       at modules.database.graph.connection.GraphTransactionManager.
runWithCommit(GraphTransactionManager.java:31)
    at services.implementations.deletionservice.DeletionServiceImpl.
createDeletionFromInstance(DeletionServiceImpl.java:71)
```




Any ideas would be much appreciated.

MikeH.

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to