diff --git a/config/graceful_shutdown.go b/config/graceful_shutdown.go index d12c8dfb1f..0b39d11150 100644 --- a/config/graceful_shutdown.go +++ b/config/graceful_shutdown.go @@ -134,18 +134,17 @@ func destroyProviderProtocols(consumerProtocols *gxset.HashSet) { logger.Info("Graceful shutdown --- Destroy provider's protocols. ") - if providerConfig == nil || providerConfig.ProtocolConf == nil { + if providerConfig == nil || providerConfig.Protocols == nil { return } - protocols := providerConfig.ProtocolConf.(map[interface{}]interface{}) - for name := range protocols { + for _, protocol := range providerConfig.Protocols { // the protocol is the consumer's protocol too, we can not destroy it. - if consumerProtocols.Contains(name) { + if consumerProtocols.Contains(protocol.Name) { continue } - extension.GetProtocol(name.(string)).Destroy() + extension.GetProtocol(protocol.Name).Destroy() } } diff --git a/config/graceful_shutdown_test.go b/config/graceful_shutdown_test.go index 0c4960152d..de203572c7 100644 --- a/config/graceful_shutdown_test.go +++ b/config/graceful_shutdown_test.go @@ -43,31 +43,37 @@ func TestBeforeShutdown(t *testing.T) { return &mockRegistryProtocol{} }) - protocolConfigs := make(map[interface{}]interface{}, 16) - protocolConfigs[constant.DUBBO] = "aaa" + // protocolConfigs := make(map[interface{}]interface{}, 16) + consumerReferences := map[string]*ReferenceConfig{} + consumerReferences[constant.DUBBO] = &ReferenceConfig{ + Protocol: constant.DUBBO, + } // without configuration BeforeShutdown() consumerConfig = &ConsumerConfig{ - ProtocolConf: protocolConfigs, + References: consumerReferences, ShutdownConfig: &ShutdownConfig{ Timeout: "1", StepTimeout: "1s", - }, - } + }} - providerProtocols := make(map[interface{}]interface{}, 16) - providerProtocols[constant.DUBBO] = "aaa" + providerProtocols := map[string]*ProtocolConfig{} + providerProtocols[constant.DUBBO] = &ProtocolConfig{ + Name: constant.DUBBO, + } - providerProtocols["mock"] = "aaa" + providerProtocols["mock"] = &ProtocolConfig{ + Name: "mock", + } providerConfig = &ProviderConfig{ ShutdownConfig: &ShutdownConfig{ Timeout: "1", StepTimeout: "1s", }, - ProtocolConf: providerProtocols, + Protocols: providerProtocols, } // test destroy protocol BeforeShutdown() @@ -77,11 +83,11 @@ func TestBeforeShutdown(t *testing.T) { Timeout: "1", StepTimeout: "-1s", }, - ProtocolConf: protocolConfigs, + Protocols: providerProtocols, } consumerConfig = &ConsumerConfig{ - ProtocolConf: protocolConfigs, + References: consumerReferences, ShutdownConfig: &ShutdownConfig{ Timeout: "1", StepTimeout: "-1s",