aboutsummaryrefslogtreecommitdiff
path: root/graphx/src
diff options
context:
space:
mode:
authorDongjoon Hyun <dongjoon@apache.org>2016-03-28 17:38:45 -0700
committerReynold Xin <rxin@databricks.com>2016-03-28 17:38:45 -0700
commit289257c4c6005779e416b23e593c61e6531b2d9a (patch)
treebf7279469fe2d98c0672f9d42ca1c57fd131af86 /graphx/src
parent2bc7c96d61a51bd458ba04e9d318640ddada559d (diff)
downloadspark-289257c4c6005779e416b23e593c61e6531b2d9a.tar.gz
spark-289257c4c6005779e416b23e593c61e6531b2d9a.tar.bz2
spark-289257c4c6005779e416b23e593c61e6531b2d9a.zip
[SPARK-14219][GRAPHX] Fix `pickRandomVertex` not to fall into infinite loops for graphs with one vertex
## What changes were proposed in this pull request? Currently, `GraphOps.pickRandomVertex()` falls into infinite loops for graphs having only one vertex. This PR fixes it by modifying the following termination-checking condition. ```scala - if (selectedVertices.count > 1) { + if (selectedVertices.count > 0) { ``` ## How was this patch tested? Pass the Jenkins tests (including new test case). Author: Dongjoon Hyun <dongjoon@apache.org> Closes #12018 from dongjoon-hyun/SPARK-14219.
Diffstat (limited to 'graphx/src')
-rw-r--r--graphx/src/main/scala/org/apache/spark/graphx/GraphOps.scala2
-rw-r--r--graphx/src/test/scala/org/apache/spark/graphx/GraphSuite.scala9
2 files changed, 10 insertions, 1 deletions
diff --git a/graphx/src/main/scala/org/apache/spark/graphx/GraphOps.scala b/graphx/src/main/scala/org/apache/spark/graphx/GraphOps.scala
index fcb1b5999f..a783fe305f 100644
--- a/graphx/src/main/scala/org/apache/spark/graphx/GraphOps.scala
+++ b/graphx/src/main/scala/org/apache/spark/graphx/GraphOps.scala
@@ -276,7 +276,7 @@ class GraphOps[VD: ClassTag, ED: ClassTag](graph: Graph[VD, ED]) extends Seriali
if (Random.nextDouble() < probability) { Some(vidVvals._1) }
else { None }
}
- if (selectedVertices.count > 1) {
+ if (selectedVertices.count > 0) {
found = true
val collectedVertices = selectedVertices.collect()
retVal = collectedVertices(Random.nextInt(collectedVertices.length))
diff --git a/graphx/src/test/scala/org/apache/spark/graphx/GraphSuite.scala b/graphx/src/test/scala/org/apache/spark/graphx/GraphSuite.scala
index cb981797d3..96aa262a39 100644
--- a/graphx/src/test/scala/org/apache/spark/graphx/GraphSuite.scala
+++ b/graphx/src/test/scala/org/apache/spark/graphx/GraphSuite.scala
@@ -404,4 +404,13 @@ class GraphSuite extends SparkFunSuite with LocalSparkContext {
assert(sc.getPersistentRDDs.isEmpty)
}
}
+
+ test("SPARK-14219: pickRandomVertex") {
+ withSpark { sc =>
+ val vert = sc.parallelize(List((1L, "a")), 1)
+ val edges = sc.parallelize(List(Edge[Long](1L, 1L)), 1)
+ val g0 = Graph(vert, edges)
+ assert(g0.pickRandomVertex() === 1L)
+ }
+ }
}