seaweedfs/weed/mq/broker/broker_grpc_server_discovery.go

73 lines
1.8 KiB
Go
Raw Normal View History

2020-05-05 09:05:28 +00:00
package broker
import (
"context"
2021-11-08 08:09:11 +00:00
"github.com/chrislusf/seaweedfs/weed/cluster"
"github.com/chrislusf/seaweedfs/weed/pb"
2020-05-05 09:05:28 +00:00
"time"
"github.com/chrislusf/seaweedfs/weed/glog"
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
"github.com/chrislusf/seaweedfs/weed/pb/master_pb"
)
2022-07-02 06:34:51 +00:00
func (broker *MessageQueueBroker) checkFilers() {
2020-05-05 09:05:28 +00:00
// contact a filer about masters
var masters []pb.ServerAddress
2020-05-05 09:05:28 +00:00
found := false
for !found {
for _, filer := range broker.option.Filers {
err := broker.withFilerClient(false, filer, func(client filer_pb.SeaweedFilerClient) error {
2020-05-05 09:05:28 +00:00
resp, err := client.GetFilerConfiguration(context.Background(), &filer_pb.GetFilerConfigurationRequest{})
if err != nil {
return err
}
for _, m := range resp.Masters {
masters = append(masters, pb.ServerAddress(m))
}
2020-05-05 09:05:28 +00:00
return nil
})
if err == nil {
found = true
break
}
glog.V(0).Infof("failed to read masters from %+v: %v", broker.option.Filers, err)
time.Sleep(time.Second)
}
}
glog.V(0).Infof("received master list: %s", masters)
// contact each masters for filers
var filers []pb.ServerAddress
2020-05-05 09:05:28 +00:00
found = false
for !found {
for _, master := range masters {
err := broker.withMasterClient(false, master, func(client master_pb.SeaweedClient) error {
resp, err := client.ListClusterNodes(context.Background(), &master_pb.ListClusterNodesRequest{
2021-11-08 08:09:11 +00:00
ClientType: cluster.FilerType,
2020-05-05 09:05:28 +00:00
})
if err != nil {
return err
}
for _, clusterNode := range resp.ClusterNodes {
filers = append(filers, pb.ServerAddress(clusterNode.Address))
}
2020-05-05 09:05:28 +00:00
return nil
})
if err == nil {
found = true
break
}
glog.V(0).Infof("failed to list filers: %v", err)
time.Sleep(time.Second)
}
}
glog.V(0).Infof("received filer list: %s", filers)
broker.option.Filers = filers
}