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

    https://github.com/apache/spark/pull/20097#discussion_r159114315
  
    --- Diff: 
sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/MicroBatchExecution.scala
 ---
    @@ -236,14 +257,31 @@ class MicroBatchExecution(
         val hasNewData = {
           awaitProgressLock.lock()
           try {
    -        val latestOffsets: Map[Source, Option[Offset]] = uniqueSources.map 
{
    +        val latestOffsets: Map[BaseStreamingSource, Option[Offset]] = 
uniqueSources.map {
               case s: Source =>
                 updateStatusMessage(s"Getting offsets from $s")
                 reportTimeTaken("getOffset") {
                   (s, s.getOffset)
                 }
    +          case s: MicroBatchReader =>
    +            updateStatusMessage(s"Getting offsets from $s")
    +            reportTimeTaken("getOffset") {
    +              // Once v1 streaming source execution is gone, we can 
restructure this to be cleaner.
    +              // For now, we set the range here to get the available end 
offset, and set it again
    +              // for real when executing.
    +              if (availableOffsets.get(s).isDefined) {
    +                val offsetJson = availableOffsets.get(s).get.json
    +                s.setOffsetRange(
    +                  Optional.of(s.deserializeOffset(offsetJson)),
    --- End diff --
    
    This code can be simplified further simplified if there is a conversion 
from Option to Optional. 
    
    ```
    
s.setOffsetRange(availableOffsets.get(s).map(s.deserializedOffset).toOptional, 
Optional.empty())
    ```
    maybe add a implicit conversion class for that. would help in other places 
as well when you have done `Optional.ofNullable(someOption.orNull)`


---

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

Reply via email to