revid-cli: handle RTMP EOF error

Issue #59 resolved
Alan Noble created an issue

When YouTube (or presumably another RTMP service) closes the RTMP connection, the rtmp package returns an EOF error.

revid-cli attempts to redial a few times before logging a fatal error. Instead it should retry indefinitely, preferably using an exponential backoff.

This can be replicated by supplying a valid RTMP URL containing an invalid RTMP key. In practice, YouTube could close the connection for any number of reasons, so EOF errors need not be the result of user error.

{"level":"warn","time":"2019-03-02T20:51:54.953Z","caller":"revid/revid.go:251","message":"rtmp:EOF error; connection likely terminated"}
{"level":"error","time":"2019-03-02T20:51:54.965Z","caller":"revid/revid.go:251","message":"EOF","stackTrace":"bitbucket.org/ausocean/utils/logger.(*Logger).Log\n\t/home/pi/go/src/bitbucket.org/ausocean/utils/logger/logger.go:80\nbitbucket.org/ausocean/av/revid.Logger.Log-fm\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:251\nbitbucket.org/ausocean/av/revid.newRtmpSender\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/senders.go:275\nbitbucket.org/ausocean/av/revid.(*Revid).reset\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:251\nbitbucket.org/ausocean/av/revid.(*Revid).Update\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:501\nmain.run\n\t/home/pi/go/src/bitbucket.org/ausocean/av/cmd/revid-cli/main.go:341\nmain.main\n\t/home/pi/go/src/bitbucket.org/ausocean/av/cmd/revid-cli/main.go:103\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:201"}
{"level":"info","time":"2019-03-02T20:51:54.968Z","caller":"revid/revid.go:251","message":"revid:retry rtmp connection"}
{"level":"warn","time":"2019-03-02T20:51:56.234Z","caller":"revid/revid.go:251","message":"rtmp:EOF error; connection likely terminated"}
{"level":"error","time":"2019-03-02T20:51:56.244Z","caller":"revid/revid.go:251","message":"EOF","stackTrace":"bitbucket.org/ausocean/utils/logger.(*Logger).Log\n\t/home/pi/go/src/bitbucket.org/ausocean/utils/logger/logger.go:80\nbitbucket.org/ausocean/av/revid.Logger.Log-fm\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:251\nbitbucket.org/ausocean/av/revid.newRtmpSender\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/senders.go:275\nbitbucket.org/ausocean/av/revid.(*Revid).reset\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:251\nbitbucket.org/ausocean/av/revid.(*Revid).Update\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:501\nmain.run\n\t/home/pi/go/src/bitbucket.org/ausocean/av/cmd/revid-cli/main.go:341\nmain.main\n\t/home/pi/go/src/bitbucket.org/ausocean/av/cmd/revid-cli/main.go:103\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:201"}
{"level":"info","time":"2019-03-02T20:51:56.245Z","caller":"revid/revid.go:251","message":"revid:retry rtmp connection"}
{"level":"warn","time":"2019-03-02T20:51:57.414Z","caller":"revid/revid.go:251","message":"rtmp:EOF error; connection likely terminated"}
{"level":"error","time":"2019-03-02T20:51:57.423Z","caller":"revid/revid.go:251","message":"EOF","stackTrace":"bitbucket.org/ausocean/utils/logger.(*Logger).Log\n\t/home/pi/go/src/bitbucket.org/ausocean/utils/logger/logger.go:80\nbitbucket.org/ausocean/av/revid.Logger.Log-fm\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:251\nbitbucket.org/ausocean/av/revid.newRtmpSender\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/senders.go:275\nbitbucket.org/ausocean/av/revid.(*Revid).reset\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:251\nbitbucket.org/ausocean/av/revid.(*Revid).Update\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:501\nmain.run\n\t/home/pi/go/src/bitbucket.org/ausocean/av/cmd/revid-cli/main.go:341\nmain.main\n\t/home/pi/go/src/bitbucket.org/ausocean/av/cmd/revid-cli/main.go:103\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:201"}
{"level":"info","time":"2019-03-02T20:51:57.424Z","caller":"revid/revid.go:251","message":"revid:retry rtmp connection"}
{"level":"warn","time":"2019-03-02T20:51:58.384Z","caller":"revid/revid.go:251","message":"rtmp:EOF error; connection likely terminated"}
{"level":"error","time":"2019-03-02T20:51:58.394Z","caller":"revid/revid.go:251","message":"EOF","stackTrace":"bitbucket.org/ausocean/utils/logger.(*Logger).Log\n\t/home/pi/go/src/bitbucket.org/ausocean/utils/logger/logger.go:80\nbitbucket.org/ausocean/av/revid.Logger.Log-fm\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:251\nbitbucket.org/ausocean/av/revid.newRtmpSender\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/senders.go:275\nbitbucket.org/ausocean/av/revid.(*Revid).reset\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:251\nbitbucket.org/ausocean/av/revid.(*Revid).Update\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:501\nmain.run\n\t/home/pi/go/src/bitbucket.org/ausocean/av/cmd/revid-cli/main.go:341\nmain.main\n\t/home/pi/go/src/bitbucket.org/ausocean/av/cmd/revid-cli/main.go:103\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:201"}
{"level":"info","time":"2019-03-02T20:51:58.396Z","caller":"revid/revid.go:251","message":"revid:retry rtmp connection"}
{"level":"warn","time":"2019-03-02T20:51:59.360Z","caller":"revid/revid.go:251","message":"rtmp:EOF error; connection likely terminated"}
{"level":"error","time":"2019-03-02T20:51:59.361Z","caller":"revid/revid.go:251","message":"EOF","stackTrace":"bitbucket.org/ausocean/utils/logger.(*Logger).Log\n\t/home/pi/go/src/bitbucket.org/ausocean/utils/logger/logger.go:80\nbitbucket.org/ausocean/av/revid.Logger.Log-fm\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:251\nbitbucket.org/ausocean/av/revid.newRtmpSender\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/senders.go:275\nbitbucket.org/ausocean/av/revid.(*Revid).reset\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:251\nbitbucket.org/ausocean/av/revid.(*Revid).Update\n\t/home/pi/go/src/bitbucket.org/ausocean/av/revid/revid.go:501\nmain.run\n\t/home/pi/go/src/bitbucket.org/ausocean/av/cmd/revid-cli/main.go:341\nmain.main\n\t/home/pi/go/src/bitbucket.org/ausocean/av/cmd/revid-cli/main.go:103\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:201"}
{"level":"fatal","time":"2019-03-02T20:51:59.362Z","caller":"revid-cli/main.go:104","message":"revid-cli:failed to run revid","error":"EOF","stackTrace":"bitbucket.org/ausocean/utils/logger.(*Logger).Log\n\t/home/pi/go/src/bitbucket.org/ausocean/utils/logger/logger.go:78\nmain.main\n\t/home/pi/go/src/bitbucket.org/ausocean/av/cmd/revid-cli/main.go:104\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:201"}

Comments (1)

  1. Log in to comment