Github user srowen commented on a diff in the pull request:

    https://github.com/apache/spark/pull/23088#discussion_r236092947
  
    --- Diff: core/src/main/scala/org/apache/spark/status/AppStatusStore.scala 
---
    @@ -222,29 +223,20 @@ private[spark] class AppStatusStore(
         val indices = quantiles.map { q => math.min((q * count).toLong, count 
- 1) }
     
         def scanTasks(index: String)(fn: TaskDataWrapper => Long): 
IndexedSeq[Double] = {
    -      Utils.tryWithResource(
    -        store.view(classOf[TaskDataWrapper])
    -          .parent(stageKey)
    -          .index(index)
    -          .first(0L)
    -          .closeableIterator()
    -      ) { it =>
    -        var last = Double.NaN
    -        var currentIdx = -1L
    -        indices.map { idx =>
    -          if (idx == currentIdx) {
    -            last
    -          } else {
    -            val diff = idx - currentIdx
    -            currentIdx = idx
    -            if (it.skip(diff - 1)) {
    -              last = fn(it.next()).toDouble
    -              last
    -            } else {
    -              Double.NaN
    -            }
    -          }
    -        }.toIndexedSeq
    +      val quantileTasks = store.view(classOf[TaskDataWrapper])
    --- End diff --
    
    I get it, but, it seems like there was a particular reason for using an 
iterator and skipping, and I'm not sure we can just undo it. If this is only to 
filter for "SUCCESS", that much seems easy enough in the original code with an 
'if' statement somewhere, no? similar code above still uses an iterator.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to