From 3a99c4ca85011399ec9486160d02f43805784241 Mon Sep 17 00:00:00 2001 From: Dong Chen Date: Mon, 1 Feb 2016 20:03:44 -0800 Subject: [PATCH 1/2] Ignore 404 error. Remove trailing white spaces from error, including new lines. Signed-off-by: Dong Chen --- cluster/engine.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/cluster/engine.go b/cluster/engine.go index 5ec081781b..dcb3113c7f 100644 --- a/cluster/engine.go +++ b/cluster/engine.go @@ -280,7 +280,7 @@ func (e *Engine) ValidationComplete() { func (e *Engine) setErrMsg(errMsg string) { e.Lock() defer e.Unlock() - e.lastError = errMsg + e.lastError = strings.TrimSpace(errMsg) e.updatedAt = time.Now() } @@ -342,6 +342,13 @@ 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()) From 388b8fd50f7b0a7798d6eaf6d80d9a5babf53f98 Mon Sep 17 00:00:00 2001 From: Dong Chen Date: Mon, 1 Feb 2016 22:13:11 -0800 Subject: [PATCH 2/2] Only record connection failure error in error message. Signed-off-by: Dong Chen --- cluster/engine.go | 12 ++---------- cluster/engine_test.go | 5 +++++ 2 files changed, 7 insertions(+), 10 deletions(-) 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) {