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)

    1. 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