"docker swarm init --force-new-cluster" use limit
Signed-off-by: yangchenliang <yangchenliang@huawei.com> When worker executor `docker swarm init --force-new-cluster`,docker would hang.So only manager can process it. Signed-off-by: yangchenliang <yangchenliang@huawei.com>
This commit is contained in:
parent
c5c0702a4d
commit
12e947efdb
2 changed files with 7 additions and 0 deletions
|
@ -15,6 +15,9 @@ const (
|
|||
|
||||
// errSwarmCertificatesExpired is returned if docker was not started for the whole validity period and they had no chance to renew automatically.
|
||||
errSwarmCertificatesExpired notAvailableError = "Swarm certificates have expired. To replace them, leave the swarm and join again."
|
||||
|
||||
// errSwarmNotManager is returned if the node is not a swarm manager.
|
||||
errSwarmNotManager notAvailableError = "This node is not a swarm manager. Worker nodes can't be used to view or modify cluster state. Please run this command on a manager node or promote the current node to a manager."
|
||||
)
|
||||
|
||||
type notFoundError struct {
|
||||
|
|
|
@ -26,9 +26,13 @@ func (c *Cluster) Init(req types.InitRequest) (string, error) {
|
|||
defer c.controlMutex.Unlock()
|
||||
if c.nr != nil {
|
||||
if req.ForceNewCluster {
|
||||
|
||||
// Take c.mu temporarily to wait for presently running
|
||||
// API handlers to finish before shutting down the node.
|
||||
c.mu.Lock()
|
||||
if !c.nr.nodeState.IsManager() {
|
||||
return "", errSwarmNotManager
|
||||
}
|
||||
c.mu.Unlock()
|
||||
|
||||
if err := c.nr.Stop(); err != nil {
|
||||
|
|
Loading…
Reference in a new issue