паника: http: несколько регистраций для /debug/requests

Я продал два проекта в моем проекте go. И я успешно скомпилировал свой проект. Когда я запустил свой проект, он сообщил об ошибке "panic: http: multiple registrations for /debug/requests". Подробные ошибки показаны ниже.

goroutine 1 [running]:
net/http.(*ServeMux).Handle(0x19ae000, 0x126bb20, 0xf, 0x1964540, 0x1297d90)
/usr/local/go/src/net/http/server.go:2270 +0x627
net/http.(*ServeMux).HandleFunc(0x19ae000, 0x126bb20, 0xf, 0x1297d90)
/usr/local/go/src/net/http/server.go:2302 +0x55
net/http.HandleFunc(0x126bb20, 0xf, 0x1297d90)
/usr/local/go/src/net/http/server.go:2314 +0x4b
github.own.com/chalex/testfabric/vendor/github.com/hyperledger/fabric-sdk-go/vendor/golang.org/x/net/trace.init.0()
/home/chalex/ibm/src/github.own.com/chalex/testfabric/vendor/github.com/hyperledger/fabric-sdk-go/vendor/golang.org/x/net/trace/trace.go:115 +0x42
github.own.com/chalex/testfabric/vendor/github.com/hyperledger/fabric-sdk-go/vendor/golang.org/x/net/trace.init()
<autogenerated>:1 +0x1cd
github.own.com/chalex/testfabric/vendor/github.com/hyperledger/fabric-sdk-go/vendor/google.golang.org/grpc.init()
<autogenerated>:1 +0x82
github.own.com/chalex/testfabric/vendor/github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/peer.init()
<autogenerated>:1 +0x6f
github.own.com/chalex/testfabric/vendor/github.com/hyperledger/fabric-sdk-go/api/apitxn.init()
<autogenerated>:1 +0x44
github.own.com/chalex/testfabric/chaincode/client.init()
<autogenerated>:1 +0x49
main.init()

Кто-нибудь знает, как это исправить? Я думаю, это потому, что два проекта, которые я импортировал, прослушивают /debug/requests?


person Chalex    schedule 22.12.2017    source источник
comment
Ваше предположение я прав. Должен изменить код.   -  person Volker    schedule 22.12.2017
comment
Вот почему для библиотек опасно делать подобные вещи в init функциях. Они должны регистрировать обработчики только тогда, когда вы явно говорите им об этом.   -  person Adrian    schedule 22.12.2017
comment
Спасибо. @Волкер @Адриан. Я нашел причину. Это из-за проекта golang.org/x/net/trace. В своей функции init() они обрабатывают debug/request с помощью жесткого кода. Поэтому, если два проекта импортируют эту библиотеку, возникает конфликт.   -  person Chalex    schedule 23.12.2017


Ответы (2)


Я нашел причину. Это из-за проекта golang.org/x/net/trace. В своей функции init() они обрабатывают debug/request с помощью жесткого кода. Поэтому, если два проекта импортируют эту библиотеку, возникает конфликт.

person Chalex    schedule 25.12.2017
comment
Причина проблемы описана @chalex выше. Временным исправлением для меня было закомментировать метод init() внутри $GOPATH/pkg/mod/<mypackage>/Godeps/_/x/net/trace/trace.go - person anisbhsl; 15.07.2020

Более одного проекта использовали golang.org/x/net/trace, а какой-то проект сохранил golang.org/x/net/trace в своем каталоге vendor, что и вызывает конфликт. Исправьте конфликт, удалив другие и оставив только один, тогда проблема будет решена.

person Bruce    schedule 25.05.2018
comment
Кто-нибудь знает способ выяснить, КАКОЙ пакет отвечает за двойную торговлю? - person Rogier Lommers; 28.11.2018