mirror of
https://github.com/go-micro/go-micro.git
synced 2025-05-31 21:59:42 +02:00
grpc server add RegisterCheck (#2178)
This commit is contained in:
parent
4af9e245fb
commit
b892efa25f
@ -889,10 +889,17 @@ func (g *grpcServer) Start() error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// announce self to the world
|
// use RegisterCheck func before register
|
||||||
if err := g.Register(); err != nil {
|
if err = g.opts.RegisterCheck(g.opts.Context); err != nil {
|
||||||
if logger.V(logger.ErrorLevel, logger.DefaultLogger) {
|
if logger.V(logger.ErrorLevel, logger.DefaultLogger) {
|
||||||
logger.Errorf("Server register error: %v", err)
|
logger.Errorf("Server %s-%s register check error: %s", config.Name, config.Id, err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// announce self to the world
|
||||||
|
if err := g.Register(); err != nil {
|
||||||
|
if logger.V(logger.ErrorLevel, logger.DefaultLogger) {
|
||||||
|
logger.Errorf("Server register error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -925,6 +932,26 @@ func (g *grpcServer) Start() error {
|
|||||||
select {
|
select {
|
||||||
// register self on interval
|
// register self on interval
|
||||||
case <-t.C:
|
case <-t.C:
|
||||||
|
g.RLock()
|
||||||
|
registered := g.registered
|
||||||
|
g.RUnlock()
|
||||||
|
rerr := g.opts.RegisterCheck(g.opts.Context)
|
||||||
|
if rerr != nil && registered {
|
||||||
|
if logger.V(logger.ErrorLevel, logger.DefaultLogger) {
|
||||||
|
logger.Errorf("Server %s-%s register check error: %s, deregister it", config.Name, config.Id, err)
|
||||||
|
}
|
||||||
|
// deregister self in case of error
|
||||||
|
if err := g.Deregister(); err != nil {
|
||||||
|
if logger.V(logger.ErrorLevel, logger.DefaultLogger) {
|
||||||
|
logger.Errorf("Server %s-%s deregister error: %s", config.Name, config.Id, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if rerr != nil && !registered {
|
||||||
|
if logger.V(logger.ErrorLevel, logger.DefaultLogger) {
|
||||||
|
logger.Errorf("Server %s-%s register check error: %s", config.Name, config.Id, err)
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
if err := g.Register(); err != nil {
|
if err := g.Register(); err != nil {
|
||||||
if logger.V(logger.ErrorLevel, logger.DefaultLogger) {
|
if logger.V(logger.ErrorLevel, logger.DefaultLogger) {
|
||||||
logger.Error("Server register error: ", err)
|
logger.Error("Server register error: ", err)
|
||||||
|
@ -66,15 +66,16 @@ func MaxMsgSize(s int) server.Option {
|
|||||||
|
|
||||||
func newOptions(opt ...server.Option) server.Options {
|
func newOptions(opt ...server.Option) server.Options {
|
||||||
opts := server.Options{
|
opts := server.Options{
|
||||||
Codecs: make(map[string]codec.NewCodec),
|
Codecs: make(map[string]codec.NewCodec),
|
||||||
Metadata: map[string]string{},
|
Metadata: map[string]string{},
|
||||||
Broker: broker.DefaultBroker,
|
Broker: broker.DefaultBroker,
|
||||||
Registry: registry.DefaultRegistry,
|
Registry: registry.DefaultRegistry,
|
||||||
Transport: transport.DefaultTransport,
|
RegisterCheck: server.DefaultRegisterCheck,
|
||||||
Address: server.DefaultAddress,
|
Transport: transport.DefaultTransport,
|
||||||
Name: server.DefaultName,
|
Address: server.DefaultAddress,
|
||||||
Id: server.DefaultId,
|
Name: server.DefaultName,
|
||||||
Version: server.DefaultVersion,
|
Id: server.DefaultId,
|
||||||
|
Version: server.DefaultVersion,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, o := range opt {
|
for _, o := range opt {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user