org.apache.tinkerpop.gremlin.structure.Transaction
希望 一个事务,只在一个线程里面完成
Transaction不是一个事务对象,只是包含了事务相关的很多方法
traversal.next ->
DefaultTraversal.next()->
AbstractStep.next -> 返回 Traverser.Admin
AddVertexStartStep.processNextStart -> 输入拟导入点的kv,获取vertex对象;并生成Traverser.Admin
JanusGraphBlueprintsGraph.addVertex() ->
JanusGraphBlueprintsTransaction.addVertex()
StandardJanusGraphTx.addVertex
StandardJanusGraph.assignID
idAssigner.assignID(vertex, label)
prepareTraversalForNextStep -> traverser 中添加下一个step的信息
此时,traversal中的graph对象,已经添加了StandardJanusGraphTx(含addedRelations,newVertexIndexEntries等)
g.tx().commit()
JanusGraphBlueprintsGraph的addVertex方法 —》StandardJanusGraphTx的addVertex方法
org.apache.tinkerpop.gremlin.structure.util.ElementHelper.getIdValue 获取用户自定义的id
走AbstractTransaction的commit方法
JanusGraphBlueprintsGraph的commit
StandardJanusGraphTx 的commit
Traverser
GraphDatabaseConfiguration
StandardJanusGraphTx中有一个IDPool, 每一个事务中有一个,该事务中的所有元素都能用
StandardJanusGraph.assignID
VertexIDAssigner
StandardIDPool
lastTraverser
traversal.next()
Traverer
====================================
- JanusGraph’s database-level cache, which is shared across all transactions