diff --git a/cluster/engine.go b/cluster/engine.go index dcb3113c7f..c49be1f08a 100644 --- a/cluster/engine.go +++ b/cluster/engine.go @@ -342,16 +342,6 @@ func (e *Engine) CheckConnectionErr(err error) { return } - // Docker engine may return 404 when it doesn't recognize a command. - // It's not an error from the engine itself. Version validation should be done separately. - // This error message is not recorded here to avoid user confusion. - if strings.HasPrefix(err.Error(), "404 ") { - return - } - - // update engine error message - e.setErrMsg(err.Error()) - // dockerclient defines ErrConnectionRefused error. but if http client is from swarm, it's not using // dockerclient. We need string matching for these cases. Remove the first character to deal with // case sensitive issue @@ -364,6 +354,8 @@ func (e *Engine) CheckConnectionErr(err error) { // can track last error time. Only increase failure count if last error is // not too recent, e.g., last error is at least 1 seconds ago. e.incFailureCount() + // update engine error message + e.setErrMsg(err.Error()) return } // other errors may be ambiguous. diff --git a/cluster/engine_test.go b/cluster/engine_test.go index 6fa17a72e3..6a17396f3e 100644 --- a/cluster/engine_test.go +++ b/cluster/engine_test.go @@ -69,6 +69,11 @@ func TestCheckConnectionErr(t *testing.T) { engine.CheckConnectionErr(err) assert.True(t, engine.failureCount == 0) assert.True(t, len(engine.ErrMsg()) == 0) + // Do not accept random error + err = fmt.Errorf("random error") + engine.CheckConnectionErr(err) + assert.True(t, engine.failureCount == 0) + assert.True(t, len(engine.ErrMsg()) == 0) } func TestEngineFailureCount(t *testing.T) {