You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@s2graph.apache.org by st...@apache.org on 2017/11/19 02:28:56 UTC

[13/23] incubator-s2graph git commit: remove SelfType bidirectional dependencies on S2EdgeLike.

remove SelfType bidirectional dependencies on S2EdgeLike.


Project: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/commit/3514060a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/tree/3514060a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/diff/3514060a

Branch: refs/heads/master
Commit: 3514060ab112303efb0782929e4333dd5ee1f2cd
Parents: d3a2e75
Author: DO YUNG YOON <st...@apache.org>
Authored: Tue Nov 7 10:38:44 2017 +0900
Committer: DO YUNG YOON <st...@apache.org>
Committed: Tue Nov 7 11:13:27 2017 +0900

----------------------------------------------------------------------
 .../s2graph/core/GraphElementBuilder.scala      | 11 +++++++---
 .../org/apache/s2graph/core/PostProcess.scala   |  8 ++++----
 .../org/apache/s2graph/core/QueryParam.scala    |  4 ++--
 .../scala/org/apache/s2graph/core/S2Edge.scala  |  8 ++++----
 .../org/apache/s2graph/core/S2EdgeLike.scala    | 21 ++++++++++++--------
 .../s2graph/core/index/IndexProvider.scala      |  2 +-
 .../s2graph/core/parsers/WhereParser.scala      |  4 ++--
 .../storage/WriteWriteConflictResolver.scala    |  6 +++---
 .../core/storage/serde/MutationHelper.scala     |  7 +++----
 .../tall/SnapshotEdgeSerializable.scala         |  4 ++--
 .../wide/SnapshotEdgeSerializable.scala         |  4 ++--
 11 files changed, 44 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/3514060a/s2core/src/main/scala/org/apache/s2graph/core/GraphElementBuilder.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/GraphElementBuilder.scala b/s2core/src/main/scala/org/apache/s2graph/core/GraphElementBuilder.scala
index c9133b1..3ef7ba3 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/GraphElementBuilder.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/GraphElementBuilder.scala
@@ -279,10 +279,15 @@ class GraphElementBuilder(graph: S2Graph) {
         val edge = edgeWithScore.edge
         val copiedEdge = label.consistencyLevel match {
           case "strong" =>
-            edge.builder.copyEdge(op = GraphUtil.operations("delete"),
-              version = requestTs, propsWithTs = S2Edge.propsToState(edge.updatePropsWithTs()), ts = requestTs)
+            edge
+              .copyEdgeWithState(S2Edge.propsToState(edge.updatePropsWithTs()))
+              .copyTs(requestTs)
+              .copyOp(GraphUtil.operations("delete"))
+              .copyVersion(requestTs)
           case _ =>
-            edge.builder.copyEdge(propsWithTs = S2Edge.propsToState(edge.updatePropsWithTs()), ts = requestTs)
+            edge
+              .copyEdgeWithState(S2Edge.propsToState(edge.updatePropsWithTs()))
+              .copyTs(requestTs)
         }
 
         val edgeToDelete = edgeWithScore.copy(edge = copiedEdge)

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/3514060a/s2core/src/main/scala/org/apache/s2graph/core/PostProcess.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/PostProcess.scala b/s2core/src/main/scala/org/apache/s2graph/core/PostProcess.scala
index 5118600..900bbbd 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/PostProcess.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/PostProcess.scala
@@ -64,9 +64,9 @@ object PostProcess {
     else {
       val ancestors = for {
         current <- parentEdges
-        parents = s2EdgeParent(graph, queryOption, current.edge.parentEdges) if parents != JsNull
+        parents = s2EdgeParent(graph, queryOption, current.edge.getParentEdges()) if parents != JsNull
       } yield {
-          val s2Edge = current.edge.originalEdgeOpt.getOrElse(current.edge)
+          val s2Edge = current.edge.getOriginalEdgeOpt().getOrElse(current.edge)
           s2EdgeToJsValue(queryOption, current.copy(edge = s2Edge), false, parents = parents, checkSelectColumns = true)
         }
       Json.toJson(ancestors)
@@ -240,7 +240,7 @@ object PostProcess {
       // no group by specified on query.
       val results = if (limitOpt.isDefined) stepResult.edgeWithScores.take(limitOpt.get) else stepResult.edgeWithScores
       val ls = results.map { t =>
-        val parents = if (queryOption.returnTree) s2EdgeParent(graph, queryOption, t.edge.parentEdges) else JsNull
+        val parents = if (queryOption.returnTree) s2EdgeParent(graph, queryOption, t.edge.getParentEdges()) else JsNull
 
         s2EdgeToJsValue(queryOption, t, false, parents)
       }
@@ -266,7 +266,7 @@ object PostProcess {
             )
           } else {
             val agg = edges.map { t =>
-              val parents = if (queryOption.returnTree) s2EdgeParent(graph, queryOption, t.edge.parentEdges) else JsNull
+              val parents = if (queryOption.returnTree) s2EdgeParent(graph, queryOption, t.edge.getParentEdges()) else JsNull
               s2EdgeToJsValue(queryOption, t, false, parents)
             }
             val aggJson = Json.toJson(agg)

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/3514060a/s2core/src/main/scala/org/apache/s2graph/core/QueryParam.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/QueryParam.scala b/s2core/src/main/scala/org/apache/s2graph/core/QueryParam.scala
index 3d0d076..748e8c5 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/QueryParam.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/QueryParam.scala
@@ -185,7 +185,7 @@ case class EdgeTransformer(jsValue: JsValue) {
             replace(queryParam, fmt, fieldNames.flatMap(fieldName => toInnerValOpt(queryParam, edge, fieldName)), nextStepOpt)
           }
         }
-      } yield edge.builder.updateTgtVertex(innerVal).copyOriginalEdgeOpt(Option(edge))
+      } yield edge.updateTgtVertex(innerVal).copyOriginalEdgeOpt(Option(edge))
 
 
       edges
@@ -383,7 +383,7 @@ case class QueryParam(labelName: String,
       propValJs match {
         case JsString(in) if edgeOpt.isDefined && in.contains("_parent.") =>
           val parentLen = in.split("_parent.").length - 1
-          val edge = (0 until parentLen).foldLeft(edgeOpt.get) { case (acc, _) => acc.parentEdges.head.edge }
+          val edge = (0 until parentLen).foldLeft(edgeOpt.get) { case (acc, _) => acc.getParentEdges().head.edge }
 
           val timePivot = edge.ts
           val replaced = TemplateHelper.replaceVariable(timePivot, in).trim

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/3514060a/s2core/src/main/scala/org/apache/s2graph/core/S2Edge.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/S2Edge.scala b/s2core/src/main/scala/org/apache/s2graph/core/S2Edge.scala
index 9f5093c..db530ac 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/S2Edge.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/S2Edge.scala
@@ -515,7 +515,7 @@ object S2Edge {
     state.foreach { case (k, v) =>
       edge.propertyInner(k.name, v.innerVal.value, v.ts)
     }
-    edge.propsWithTs
+    edge.getPropsWithTs()
   }
 
   def allPropsDeleted(props: Map[LabelMeta, InnerValLikeWithTs]): Boolean =
@@ -559,7 +559,7 @@ object S2Edge {
     //            logger.debug(s"requestEdge: ${requestEdge.toStringRaw}")
     val oldPropsWithTs =
       if (invertedEdge.isEmpty) Map.empty[LabelMeta, InnerValLikeWithTs]
-      else propsToState(invertedEdge.get.propsWithTs)
+      else propsToState(invertedEdge.get.getPropsWithTs())
 
     val funcs = requestEdges.map { edge =>
       if (edge.getOp() == GraphUtil.operations("insert")) {
@@ -592,7 +592,7 @@ object S2Edge {
       for {
         (requestEdge, func) <- requestWithFuncs
       } {
-        val (_newPropsWithTs, _) = func((prevPropsWithTs, propsToState(requestEdge.propsWithTs), requestEdge.ts, requestEdge.innerLabel.schemaVersion))
+        val (_newPropsWithTs, _) = func((prevPropsWithTs, propsToState(requestEdge.getPropsWithTs()), requestEdge.ts, requestEdge.innerLabel.schemaVersion))
         prevPropsWithTs = _newPropsWithTs
         //        logger.debug(s"${requestEdge.toLogString}\n$oldPropsWithTs\n$prevPropsWithTs\n")
       }
@@ -628,7 +628,7 @@ object S2Edge {
       val newOp = snapshotEdgeOpt match {
         case None => requestEdge.getOp()
         case Some(old) =>
-          val oldMaxTs = old.propsWithTs.asScala.map(_._2.ts).max
+          val oldMaxTs = old.getPropsWithTs().asScala.map(_._2.ts).max
           if (oldMaxTs > requestEdge.ts) old.getOp()
           else requestEdge.getOp()
       }

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/3514060a/s2core/src/main/scala/org/apache/s2graph/core/S2EdgeLike.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/S2EdgeLike.scala b/s2core/src/main/scala/org/apache/s2graph/core/S2EdgeLike.scala
index 33e7e83..0b40cf5 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/S2EdgeLike.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/S2EdgeLike.scala
@@ -15,26 +15,25 @@ import scala.concurrent.Await
 import scala.collection.JavaConverters._
 
 trait S2EdgeLike extends Edge with GraphElement {
-  this: S2Edge =>
-
-  val builder: S2EdgeBuilder = new S2EdgeBuilder(this)
-
-
   val innerGraph: S2Graph
   val srcVertex: S2VertexLike
   var tgtVertex: S2VertexLike
   val innerLabel: Label
   val dir: Int
 
-//  var op: Byte = GraphUtil.defaultOpByte
-//  var version: Long = System.currentTimeMillis()
+  val builder: S2EdgeBuilder = new S2EdgeBuilder(this)
+
+  var op: Byte
+  var version: Long
+  var tsInnerValOpt: Option[InnerValLike]
+
   val propsWithTs: Props = S2Edge.EmptyProps
+
   val parentEdges: Seq[EdgeWithScore] = Nil
   val originalEdgeOpt: Option[S2EdgeLike] = None
   val pendingEdgeOpt: Option[S2EdgeLike] = None
   val statusCode: Byte = 0
   val lockTs: Option[Long] = None
-//  var tsInnerValOpt: Option[InnerValLike] = None
 
   lazy val ts = propsWithTs.get(LabelMeta.timestamp.name).innerVal.value match {
     case b: BigDecimal => b.longValue()
@@ -149,6 +148,12 @@ trait S2EdgeLike extends Edge with GraphElement {
     builder.copyEdge(lockTs = newLockTs)
   }
 
+  def copyTs(newTs: Long): S2EdgeLike =
+    builder.copyEdge(ts = newTs)
+
+  def updateTgtVertex(id: InnerValLike): S2EdgeLike =
+    builder.updateTgtVertex(id)
+
   def vertices(direction: Direction): util.Iterator[structure.Vertex] = {
     val arr = new util.ArrayList[Vertex]()
 

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/3514060a/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala b/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala
index e5005b7..2411e65 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala
@@ -180,7 +180,7 @@ class LuceneIndexProvider(config: Config) extends IndexProvider {
   }
 
   private def toDocument(globalIndex: GlobalIndex, edge: S2EdgeLike): Option[Document] = {
-    val props = edge.propsWithTs.asScala
+    val props = edge.getPropsWithTs().asScala
     val exist = props.exists(t => globalIndex.propNamesSet(t._1))
     if (!exist) None
     else {

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/3514060a/s2core/src/main/scala/org/apache/s2graph/core/parsers/WhereParser.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/parsers/WhereParser.scala b/s2core/src/main/scala/org/apache/s2graph/core/parsers/WhereParser.scala
index d947066..d9e6a7b 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/parsers/WhereParser.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/parsers/WhereParser.scala
@@ -66,7 +66,7 @@ trait ExtractValue {
 
   @tailrec
   private def findParent(edge: S2EdgeLike, depth: Int): S2EdgeLike =
-    if (depth > 0) findParent(edge.parentEdges.head.edge, depth - 1)
+    if (depth > 0) findParent(edge.getParentEdges().head.edge, depth - 1)
     else edge
 
   private def findParentEdge(edge: S2EdgeLike, key: String): (String, S2EdgeLike) = {
@@ -145,7 +145,7 @@ case class InWithoutParent(label: Label, propKey: String, values: Set[String]) e
   }
 
   override def filter(edge: S2EdgeLike): Boolean = {
-    if (edge.dir == GraphUtil.directions("in")) {
+    if (edge.getDir() == GraphUtil.directions("in")) {
       val propVal = propToInnerVal(edge, propKey)
       innerValLikeLsIn.contains(propVal)
     } else {

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/3514060a/s2core/src/main/scala/org/apache/s2graph/core/storage/WriteWriteConflictResolver.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/storage/WriteWriteConflictResolver.scala b/s2core/src/main/scala/org/apache/s2graph/core/storage/WriteWriteConflictResolver.scala
index 854fc18..af0d53d 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/storage/WriteWriteConflictResolver.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/storage/WriteWriteConflictResolver.scala
@@ -143,7 +143,7 @@ class WriteWriteConflictResolver(graph: S2Graph,
             commitProcess(statusCode, squashedEdge, fetchedSnapshotEdgeOpt, lockSnapshotEdge, releaseLockSnapshotEdge, edgeMutate)
 
           case Some(snapshotEdge) =>
-            snapshotEdge.pendingEdgeOpt match {
+            snapshotEdge.getPendingEdgeOpt() match {
               case None =>
                 /*
                  * others finished commit on this SN. but there is no contention.
@@ -165,7 +165,7 @@ class WriteWriteConflictResolver(graph: S2Graph,
                   commitProcess(statusCode, squashedEdge, fetchedSnapshotEdgeOpt, lockSnapshotEdge, releaseLockSnapshotEdge, edgeMutate)
                 }
               case Some(pendingEdge) =>
-                val isLockExpired = pendingEdge.lockTs.get + LockExpireDuration < System.currentTimeMillis()
+                val isLockExpired = pendingEdge.getLockTs().get + LockExpireDuration < System.currentTimeMillis()
                 if (isLockExpired) {
                   /*
                    * if pendingEdge.ts == snapshotEdge.ts =>
@@ -219,7 +219,7 @@ class WriteWriteConflictResolver(graph: S2Graph,
          * releaseLock = (edgeMutate.newSnapshotEdge, None)
          */
         val _edges =
-          if (fetchedSnapshotEdgeOpt.isDefined && fetchedSnapshotEdgeOpt.get.pendingEdgeOpt.isDefined) fetchedSnapshotEdgeOpt.get.pendingEdgeOpt.get +: edges
+          if (fetchedSnapshotEdgeOpt.isDefined && fetchedSnapshotEdgeOpt.get.getPendingEdgeOpt().isDefined) fetchedSnapshotEdgeOpt.get.pendingEdgeOpt.get +: edges
           else edges
         val (squashedEdge, edgeMutate) = S2Edge.buildOperation(fetchedSnapshotEdgeOpt, _edges)
         val newVersion = fetchedSnapshotEdgeOpt.map(_.getVersion()).getOrElse(squashedEdge.ts) + 2

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/3514060a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/MutationHelper.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/MutationHelper.scala b/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/MutationHelper.scala
index 79c9dc3..9312181 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/MutationHelper.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/MutationHelper.scala
@@ -28,19 +28,18 @@ class MutationHelper(storage: Storage) {
         edgeWithScore <- stepInnerResult.edgeWithScores
       } yield {
         val edge = edgeWithScore.edge
-        val score = edgeWithScore.score
 
-        val edgeSnapshot = edge.builder.copyEdge(propsWithTs = S2Edge.propsToState(edge.updatePropsWithTs()))
+        val edgeSnapshot = edge.copyEdgeWithState(S2Edge.propsToState(edge.updatePropsWithTs()))
         val reversedSnapshotEdgeMutations = serDe.snapshotEdgeSerializer(edgeSnapshot.toSnapshotEdge).toKeyValues.map(_.copy(operation = SKeyValue.Put))
 
-        val edgeForward = edge.builder.copyEdge(propsWithTs = S2Edge.propsToState(edge.updatePropsWithTs()))
+        val edgeForward = edge.copyEdgeWithState(S2Edge.propsToState(edge.updatePropsWithTs()))
         val forwardIndexedEdgeMutations = edgeForward.edgesWithIndex.flatMap { indexEdge =>
           serDe.indexEdgeSerializer(indexEdge).toKeyValues.map(_.copy(operation = SKeyValue.Delete)) ++
             io.buildIncrementsAsync(indexEdge, -1L)
         }
 
         /* reverted direction */
-        val edgeRevert = edge.builder.copyEdge(propsWithTs = S2Edge.propsToState(edge.updatePropsWithTs()))
+        val edgeRevert = edge.copyEdgeWithState(S2Edge.propsToState(edge.updatePropsWithTs()))
         val reversedIndexedEdgesMutations = edgeRevert.duplicateEdge.edgesWithIndex.flatMap { indexEdge =>
           serDe.indexEdgeSerializer(indexEdge).toKeyValues.map(_.copy(operation = SKeyValue.Delete)) ++
             io.buildIncrementsAsync(indexEdge, -1L)

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/3514060a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/snapshotedge/tall/SnapshotEdgeSerializable.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/snapshotedge/tall/SnapshotEdgeSerializable.scala b/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/snapshotedge/tall/SnapshotEdgeSerializable.scala
index 12edf54..02b2977 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/snapshotedge/tall/SnapshotEdgeSerializable.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/snapshotedge/tall/SnapshotEdgeSerializable.scala
@@ -52,10 +52,10 @@ class SnapshotEdgeSerializable(snapshotEdge: SnapshotEdge) extends Serializable[
     snapshotEdge.pendingEdgeOpt match {
       case None => valueBytes()
       case Some(pendingEdge) =>
-        val opBytes = statusCodeWithOp(pendingEdge.statusCode, pendingEdge.getOp())
+        val opBytes = statusCodeWithOp(pendingEdge.getStatusCode(), pendingEdge.getOp())
         val versionBytes = Array.empty[Byte]
         val propsBytes = S2Edge.serializePropsWithTs(pendingEdge)
-        val lockBytes = Bytes.toBytes(pendingEdge.lockTs.get)
+        val lockBytes = Bytes.toBytes(pendingEdge.getLockTs().get)
 
         Bytes.add(Bytes.add(valueBytes(), opBytes, versionBytes), Bytes.add(propsBytes, lockBytes))
     }

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/3514060a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/snapshotedge/wide/SnapshotEdgeSerializable.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/snapshotedge/wide/SnapshotEdgeSerializable.scala b/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/snapshotedge/wide/SnapshotEdgeSerializable.scala
index 02a72b1..44d4a2a 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/snapshotedge/wide/SnapshotEdgeSerializable.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/snapshotedge/wide/SnapshotEdgeSerializable.scala
@@ -59,10 +59,10 @@ class SnapshotEdgeSerializable(snapshotEdge: SnapshotEdge) extends Serializable[
     snapshotEdge.pendingEdgeOpt match {
       case None => valueBytes()
       case Some(pendingEdge) =>
-        val opBytes = statusCodeWithOp(pendingEdge.statusCode, pendingEdge.getOp())
+        val opBytes = statusCodeWithOp(pendingEdge.getStatusCode(), pendingEdge.getOp())
         val versionBytes = Array.empty[Byte]
         val propsBytes = S2Edge.serializePropsWithTs(pendingEdge)
-        val lockBytes = Bytes.toBytes(pendingEdge.lockTs.get)
+        val lockBytes = Bytes.toBytes(pendingEdge.getLockTs().get)
         Bytes.add(Bytes.add(valueBytes(), opBytes, versionBytes), Bytes.add(propsBytes, lockBytes))
     }