LINUX.ORG.RU

golang зависает на отправке в канал

 ,


0

1

Одна поделка на go (swarm для docker) залипает на строке 88:

https://github.com/docker/swarm/blob/6678a167fe873a320d00aa99be09945ac5f9ca96...

стек:

goroutine 7 [chan send, 7 minutes]:
github.com/docker/swarm/discovery/token.func·001()
        /root/gocode/src/github.com/docker/swarm/discovery/token/token.go:88 +0x12c
created by github.com/docker/swarm/discovery/token.(*Discovery).Watch
        /root/gocode/src/github.com/docker/swarm/discovery/token/token.go:113 +0x226

Это нормально, или надо катать багрепорт?

upd. накатал https://github.com/docker/swarm/issues/1200

upd2. ребята из докера уже выкатили фикс

Deleted

Последнее исправление: Deleted (всего исправлений: 3)

Нормально. Насколько я вижу, это канал без буфера и стало быть блокирующий. Будет висеть, пока не прочтут сообщение, которое там застряло. Предыдущее.

Weres ★★★
()
Ответ на: комментарий от Weres

ну это я нагуглил, а вот тут нюанс в том что канал не выходит за пределы функции, потому я и спрашиваю может там он както не явно читается дето? А то оно может висеть сутками при том сервер нормально работает (ну кроме этой функции).

Deleted
()
Ответ на: комментарий от Deleted

Баг, скорее всего.

Watch должна возвращать пару (<-chan discovery.Entries, <-chan error), т.е. и канал ошибок тоже. Только внизу вместо return ch, errCh написано return ch, nil.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.