diff --git a/protocol/rest/rest_protocol.go b/protocol/rest/rest_protocol.go index f4f12e415f53550ebe6f377a6e0e62fb3e72676a..fe147e25a3f2df8c8fd1902fc76f070a2a77b9f9 100644 --- a/protocol/rest/rest_protocol.go +++ b/protocol/rest/rest_protocol.go @@ -55,8 +55,8 @@ type RestProtocol struct { func NewRestProtocol() *RestProtocol { return &RestProtocol{ BaseProtocol: protocol.NewBaseProtocol(), - serverMap: make(map[string]rest_interface.RestServer), - clientMap: make(map[rest_interface.RestOptions]rest_interface.RestClient), + serverMap: make(map[string]rest_interface.RestServer, 8), + clientMap: make(map[rest_interface.RestOptions]rest_interface.RestClient, 8), } } @@ -105,13 +105,13 @@ func (rp *RestProtocol) getServer(url common.URL, serverType string) rest_interf panic("[RestProtocol]" + url.ServiceKey() + "is not existing") } rp.serverLock.Lock() + defer rp.serverLock.Unlock() restServer, ok = rp.serverMap[url.Location] if !ok { restServer = extension.GetNewRestServer(serverType) restServer.Start(url) rp.serverMap[url.Location] = restServer } - rp.serverLock.Unlock() return restServer } @@ -121,12 +121,12 @@ func (rp *RestProtocol) getClient(restOptions rest_interface.RestOptions, client return restClient } rp.clientLock.Lock() + defer rp.clientLock.Unlock() restClient, ok = rp.clientMap[restOptions] if !ok { restClient = extension.GetNewRestClient(clientType, &restOptions) rp.clientMap[restOptions] = restClient } - rp.clientLock.Unlock() return restClient }