Skip to content
Snippets Groups Projects
Commit 54f2519c authored by vito.he's avatar vito.he Committed by 邹毅贤
Browse files

Merge pull request #788 from LaurenceLiZhixin/fix/consul-destory

Fix: consul destory
parent e6a3382c
No related branches found
No related tags found
No related merge requests found
...@@ -36,7 +36,8 @@ import ( ...@@ -36,7 +36,8 @@ import (
) )
const ( const (
registryConnDelay = 3 registryConnDelay = 3
registryDestroyDefaultTimeout = time.Second * 3
) )
func init() { func init() {
...@@ -187,5 +188,25 @@ func (r *consulRegistry) IsAvailable() bool { ...@@ -187,5 +188,25 @@ func (r *consulRegistry) IsAvailable() bool {
// Destroy consul registry center // Destroy consul registry center
func (r *consulRegistry) Destroy() { func (r *consulRegistry) Destroy() {
if r.URL != nil {
done := make(chan struct{}, 1)
go func() {
defer func() {
if e := recover(); e != nil {
logger.Errorf("consulRegistry destory with panic: %v", e)
}
done <- struct{}{}
}()
if err := r.UnRegister(*r.URL); err != nil {
logger.Errorf("consul registry unregister with err: %s", err.Error())
}
}()
select {
case <-done:
logger.Infof("consulRegistry unregister done")
case <-time.After(registryDestroyDefaultTimeout):
logger.Errorf("consul unregister timeout")
}
}
close(r.done) close(r.done)
} }
...@@ -55,3 +55,19 @@ func (suite *consulRegistryTestSuite) testSubscribe() { ...@@ -55,3 +55,19 @@ func (suite *consulRegistryTestSuite) testSubscribe() {
assert.NoError(suite.t, err) assert.NoError(suite.t, err)
suite.listener = listener suite.listener = listener
} }
func (suite *consulRegistryTestSuite) testDestroy() {
consumerRegistryUrl := newConsumerRegistryUrl(registryHost, registryPort)
consumerRegistry, _ := newConsulRegistry(consumerRegistryUrl)
consulRegistryImp := consumerRegistry.(*consulRegistry)
assert.True(suite.t, consulRegistryImp.IsAvailable())
consulRegistryImp.Destroy()
assert.False(suite.t, consulRegistryImp.IsAvailable())
consumerRegistry, _ = newConsulRegistry(consumerRegistryUrl)
consulRegistryImp = consumerRegistry.(*consulRegistry)
consulRegistryImp.URL = nil
assert.True(suite.t, consulRegistryImp.IsAvailable())
consulRegistryImp.Destroy()
assert.False(suite.t, consulRegistryImp.IsAvailable())
}
...@@ -163,6 +163,7 @@ func test1(t *testing.T) { ...@@ -163,6 +163,7 @@ func test1(t *testing.T) {
suite.testListener(remoting.EventTypeAdd) suite.testListener(remoting.EventTypeAdd)
suite.testUnregister() suite.testUnregister()
suite.testListener(remoting.EventTypeDel) suite.testListener(remoting.EventTypeDel)
suite.testDestroy()
} }
// subscribe -> register -> unregister // subscribe -> register -> unregister
...@@ -183,6 +184,7 @@ func test2(t *testing.T) { ...@@ -183,6 +184,7 @@ func test2(t *testing.T) {
suite.testListener(remoting.EventTypeAdd) suite.testListener(remoting.EventTypeAdd)
suite.testUnregister() suite.testUnregister()
suite.testListener(remoting.EventTypeDel) suite.testListener(remoting.EventTypeDel)
suite.testDestroy()
} }
func TestConsulRegistry(t *testing.T) { func TestConsulRegistry(t *testing.T) {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment