mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
cluster: avoid recursive readlock on swarm info
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
parent
462d79165f
commit
ee1be71e9d
1 changed files with 12 additions and 4 deletions
|
@ -198,9 +198,9 @@ func (c *Cluster) Join(req types.JoinRequest) error {
|
|||
|
||||
// Inspect retrieves the configuration properties of a managed swarm cluster.
|
||||
func (c *Cluster) Inspect() (types.Swarm, error) {
|
||||
var swarm *swarmapi.Cluster
|
||||
var swarm types.Swarm
|
||||
if err := c.lockedManagerAction(func(ctx context.Context, state nodeState) error {
|
||||
s, err := getSwarm(ctx, state.controlClient)
|
||||
s, err := c.inspect(ctx, state)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -209,7 +209,15 @@ func (c *Cluster) Inspect() (types.Swarm, error) {
|
|||
}); err != nil {
|
||||
return types.Swarm{}, err
|
||||
}
|
||||
return convert.SwarmFromGRPC(*swarm), nil
|
||||
return swarm, nil
|
||||
}
|
||||
|
||||
func (c *Cluster) inspect(ctx context.Context, state nodeState) (types.Swarm, error) {
|
||||
s, err := getSwarm(ctx, state.controlClient)
|
||||
if err != nil {
|
||||
return types.Swarm{}, err
|
||||
}
|
||||
return convert.SwarmFromGRPC(*s), nil
|
||||
}
|
||||
|
||||
// Update updates configuration of a managed swarm cluster.
|
||||
|
@ -413,7 +421,7 @@ func (c *Cluster) Info() types.Info {
|
|||
|
||||
if state.IsActiveManager() {
|
||||
info.ControlAvailable = true
|
||||
swarm, err := c.Inspect()
|
||||
swarm, err := c.inspect(ctx, state)
|
||||
if err != nil {
|
||||
info.Error = err.Error()
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue