1
0
mirror of https://github.com/go-micro/go-micro.git synced 2025-06-06 22:06:19 +02:00

grpc server add RegisterCheck (#2178)

This commit is contained in:
dudu 2021-06-11 16:57:44 +08:00 committed by GitHub
parent 4af9e245fb
commit b892efa25f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 12 deletions

View File

@ -889,12 +889,19 @@ func (g *grpcServer) Start() error {
} }
} }
// use RegisterCheck func before register
if err = g.opts.RegisterCheck(g.opts.Context); err != nil {
if logger.V(logger.ErrorLevel, logger.DefaultLogger) {
logger.Errorf("Server %s-%s register check error: %s", config.Name, config.Id, err)
}
} else {
// announce self to the world // announce self to the world
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.Errorf("Server register error: %v", err) logger.Errorf("Server register error: %v", err)
} }
} }
}
// micro: go ts.Accept(s.accept) // micro: go ts.Accept(s.accept)
go func() { go func() {
@ -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)

View File

@ -70,6 +70,7 @@ func newOptions(opt ...server.Option) server.Options {
Metadata: map[string]string{}, Metadata: map[string]string{},
Broker: broker.DefaultBroker, Broker: broker.DefaultBroker,
Registry: registry.DefaultRegistry, Registry: registry.DefaultRegistry,
RegisterCheck: server.DefaultRegisterCheck,
Transport: transport.DefaultTransport, Transport: transport.DefaultTransport,
Address: server.DefaultAddress, Address: server.DefaultAddress,
Name: server.DefaultName, Name: server.DefaultName,