spogulis no https://git.mills.io/prologic/msgbus.git
Fix panic on nil message (#29)
Fixed a bug I found in `saltyd`: ``` saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | 2022/04/02 21:49:31 http: panic serving 10.0.2.82:50050: interface conversion: interface {} is nil, not msgbus.Message saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | goroutine 1839 [running]: saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | net/http.(*conn).serve.func1() saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /usr/local/go/src/net/http/server.go:1825 +0xbf saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | panic({0xc8c2c0, 0xc000095e60}) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /usr/local/go/src/runtime/panic.go:844 +0x258 saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | git.mills.io/prologic/msgbus.(*MessageBus).Subscribe.func1({0x0?, 0x0?}) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /go/pkg/mod/git.mills.io/prologic/msgbus@v0.1.13/msgbus.go:487 +0x205 saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | git.mills.io/prologic/msgbus.(*Queue).ForEach(0xc00015abe0, 0xc00043b020) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /go/pkg/mod/git.mills.io/prologic/msgbus@v0.1.13/queue.go:126 +0x110 saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | git.mills.io/prologic/msgbus.(*MessageBus).Subscribe(0xc0004fa000, {0xc0003088f0, 0xf}, {0xc0003aae05, 0x20}, {0xc0005330a8, 0x1, 0x40d987?}) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /go/pkg/mod/git.mills.io/prologic/msgbus@v0.1.13/msgbus.go:486 +0x5ad saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | git.mills.io/prologic/msgbus.(*Client).Start(0xc0000ac300) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /go/pkg/mod/git.mills.io/prologic/msgbus@v0.1.13/msgbus.go:742 +0xb5 saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | git.mills.io/prologic/msgbus.(*MessageBus).ServeHTTP(0xc0004fa000, {0x2b1ea08, 0xc0003b4000}, 0xc0002a8200) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /go/pkg/mod/git.mills.io/prologic/msgbus@v0.1.13/msgbus.go:617 +0x758 saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | go.mills.io/saltyim/internal.(*Server).initRoutes.func1({0x2b1ea08?, 0xc0003b4000?}, 0xd8732a?, {0x1d?, 0x0?, 0x0?}) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /src/internal/handlers.go:53 +0x37 saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | go.mills.io/saltyim/internal.NewServer.func1.1({0x2b1ea08, 0xc0003b4000}, 0xc0003aa200?, {0xc0000ca160, 0x1, 0x1}) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /src/internal/server.go:388 +0x26d saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | github.com/julienschmidt/httprouter.(*Router).ServeHTTP(0xc00024e900, {0x2b1ea08, 0xc0003b4000}, 0xc0002a8200) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /go/pkg/mod/github.com/julienschmidt/httprouter@v1.3.0/router.go:387 +0x82b saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | go.mills.io/saltyim/internal.(*Router).ServeHTTP(0xc44960?, {0x2b1ea08?, 0xc0003b4000?}, 0x4?) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /src/internal/router.go:144 +0x25 saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | github.com/justinas/nosurf.(*CSRFHandler).handleSuccess(...) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /go/pkg/mod/github.com/justinas/nosurf@v1.1.1/handler.go:187 saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | github.com/justinas/nosurf.(*CSRFHandler).ServeHTTP(0xc0002245a0, {0x2b1ea08, 0xc0003b4000}, 0x4?) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /go/pkg/mod/github.com/justinas/nosurf@v1.1.1/handler.go:144 +0x5c4 saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | github.com/NYTimes/gziphandler.GzipHandlerWithOpts.func1.1({0x2b1f0f8, 0xc0000ca060}, 0x4c4801?) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /go/pkg/mod/github.com/!n!y!times/gziphandler@v1.1.1/gzip.go:338 +0x262 saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | net/http.HandlerFunc.ServeHTTP(0x2?, {0x2b1f0f8?, 0xc0000ca060?}, 0xc0003d7380?) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /usr/local/go/src/net/http/server.go:2084 +0x2f saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | github.com/unrolled/logger.(*Logger).Handler.func1({0x2b1f7e8?, 0xc0001980e0}, 0xc0002a8100) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /go/pkg/mod/github.com/unrolled/logger@v0.0.0-20201216141554-31a3694fe979/logger.go:80 +0xf4 saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | net/http.HandlerFunc.ServeHTTP(0xc0003aa226?, {0x2b1f7e8?, 0xc0001980e0?}, 0xc000188400?) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /usr/local/go/src/net/http/server.go:2084 +0x2f saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | net/http.serverHandler.ServeHTTP({0xc00007c210?}, {0x2b1f7e8, 0xc0001980e0}, 0xc0002a8100) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /usr/local/go/src/net/http/server.go:2916 +0x43b saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | net/http.(*conn).serve(0xc000790000, {0x2b20228, 0xc0002ab830}) saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /usr/local/go/src/net/http/server.go:1966 +0x5d7 saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | created by net/http.(*Server).Serve saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | /usr/local/go/src/net/http/server.go:3071 +0x4db saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | time="2022-04-02T21:49:52Z" level=debug msg="pong latency of 10.0.2.82:49826: 1.671603ms" saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | time="2022-04-02T21:50:20Z" level=info msg="synced store" saltyim_saltyd.1.w8s8tw903qnj@dm3.mills.io | [saltyd] 2022/04/02 21:50:32 (172.69.42.134) "GET /avatar/d3d52221e8da5a8ae012f4e2db0631c181f4156f0edcde5cffa25b347c7ceda8 HTTP/1.1" 304 0 108.078µs ``` Co-authored-by: James Mills <prologic@shortcircuit.net.au> Reviewed-on: https://git.mills.io/prologic/msgbus/pulls/29
This commit is contained in:
vecāks
9ee8d0f867
revīzija
14b5443f50
|
@ -484,9 +484,8 @@ func (mb *MessageBus) Subscribe(id, topic string, opts ...SubscribeOption) chan
|
|||
var n int
|
||||
log.Debugf("subscriber wants to start from %d", o.Index)
|
||||
q.ForEach(func(item interface{}) error {
|
||||
msg := item.(Message)
|
||||
log.Debugf("found #%v", msg)
|
||||
if msg.ID >= o.Index {
|
||||
if msg, ok := item.(Message); ok && msg.ID >= o.Index {
|
||||
log.Debugf("found #%v", msg)
|
||||
ch <- msg
|
||||
n++
|
||||
}
|
||||
|
|
Notiek ielāde…
Atsaukties uz šo jaunā problēmā