[SPARK-2464][Streaming] Fixed Twitter stream stopping bug
Stopping the Twitter Receiver would call twitter4j's TwitterStream.shutdown, which in turn causes an Exception to be thrown to the listener. This exception caused the Receiver to be restarted. This patch check whether the receiver was stopped or not, and accordingly restarts on exception. Author: Tathagata Das <tathagata.das1565@gmail.com> Closes #1577 from tdas/twitter-stop and squashes the following commits: 011b525 [Tathagata Das] Fixed Twitter stream stopping bug.
This commit is contained in:
parent
fec641b84d
commit
a45d5480f6
|
@ -63,7 +63,8 @@ class TwitterReceiver(
|
|||
storageLevel: StorageLevel
|
||||
) extends Receiver[Status](storageLevel) with Logging {
|
||||
|
||||
private var twitterStream: TwitterStream = _
|
||||
@volatile private var twitterStream: TwitterStream = _
|
||||
@volatile private var stopped = false
|
||||
|
||||
def onStart() {
|
||||
try {
|
||||
|
@ -78,7 +79,9 @@ class TwitterReceiver(
|
|||
def onScrubGeo(l: Long, l1: Long) {}
|
||||
def onStallWarning(stallWarning: StallWarning) {}
|
||||
def onException(e: Exception) {
|
||||
restart("Error receiving tweets", e)
|
||||
if (!stopped) {
|
||||
restart("Error receiving tweets", e)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -91,12 +94,14 @@ class TwitterReceiver(
|
|||
}
|
||||
setTwitterStream(newTwitterStream)
|
||||
logInfo("Twitter receiver started")
|
||||
stopped = false
|
||||
} catch {
|
||||
case e: Exception => restart("Error starting Twitter stream", e)
|
||||
}
|
||||
}
|
||||
|
||||
def onStop() {
|
||||
stopped = true
|
||||
setTwitterStream(null)
|
||||
logInfo("Twitter receiver stopped")
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue