Wowza 3.6.4; in a 3-tier configuration:
-
An origin server with an incoming RTMP stream
-
An edge server
-
A CDN
Server #2 pulls the stream from #1 using a custom module and MediaCaster, then uses Push Publishing to relay the stream to the CDN. When the signal into #1 is interrupted, server #2 notifies the breach, and is programmed to shut down (1) the Push Publisher, and (2) the Media Caster. I see the following processes in the log (in specified order):
-
PushPublisher.disconnect
-
PushPublisher.sessionClosed
-
LiveMediaStreamReceiver.shutdown
-
PushPublisher.sessionClosed
-
LiveMediaStreamReceiver.disconnect
-
unpublish stream
-
destroy stream
-
LiveMediaStreamReceiver.sessionClosed
-
LiveMediaStreamReceiver.sessionClosed[applicationname/definst/streamname]: reconnect: isCurrentSession:false tryConnect:false
Right after that, there’s a NullPointerException as follows
LiveMediaStreamReceiver.doWatchdog[applicationname/_definst_/streamname]: java.lang.NullPointerException: java.lang.NullPointerException|at com.wowza.wms.mediacaster.wowza.LiveMediaStreamReceiver.doWatchdogInternal(LiveMediaStreamReceiver.java:1294)|at com.wowza.wms.mediacaster.wowza.LiveMediaStreamReceiver.doWatchdog(LiveMediaStreamReceiver.java:1118)|at com.wowza.wms.mediacaster.MediaCasterStreamItem.doWatchdog(MediaCasterStreamItem.java:184)|at com.wowza.wms.mediacaster.MediaCasterStreamMap.doWatchdog(MediaCasterStreamMap.java:116)| - - - 838.697 - - - - - - - - - - - - - - - - - - - -
java.lang.NullPointerException
at com.wowza.wms.mediacaster.wowza.LiveMediaStreamReceiver.doWatchdogInternal(LiveMediaStreamReceiver.java:1294)
at com.wowza.wms.mediacaster.wowza.LiveMediaStreamReceiver.doWatchdog(LiveMediaStreamReceiver.java:1118)
at com.wowza.wms.mediacaster.MediaCasterStreamItem.doWatchdog(MediaCasterStreamItem.java:184)
at com.wowza.wms.mediacaster.MediaCasterStreamMap.doWatchdog(MediaCasterStreamMap.java:116)
at com.wowza.wms.application.ApplicationInstance.doWatchdog(ApplicationInstance.java:2132)
at com.wowza.wms.application.Application.doWatchdog(Application.java:486)
at com.wowza.wms.vhost.VHost.d(VHost.java:1167)
at com.wowza.wms.vhost.VHost.doWatchdog(VHost.java:1208)
at com.wowza.wms.vhost.VHostWatchdog.run(VHostWatchdog.java:47)
Now I know that since there’s a custom module controlling the Push Publisher and the MediaCaster, there’s probably something in there that causes this. But I have not the faintest idea why the WatchDog is still trying to access the stream after it has been destroyed. Since the LiveStreamReceived reports disconnected and session closed, I expected the WatchDog no longer to check on this.
Can anyone give me a hint as why this may occur?