This is an automated email from the ASF dual-hosted git repository.
dcelasun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/thrift.git
The following commit(s) were added to refs/heads/master by this push:
new 2b7365c THRIFT-4659: Fix race when closing server socket (#1645)
2b7365c is described below
commit 2b7365c54f823013cc6a4760798051b22743c103
Author: Jay Gheewala <[email protected]>
AuthorDate: Tue Dec 11 00:44:44 2018 -0800
THRIFT-4659: Fix race when closing server socket (#1645)
Client: go
---
lib/go/thrift/server_socket.go | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/lib/go/thrift/server_socket.go b/lib/go/thrift/server_socket.go
index 80313c4..7dd24ae 100644
--- a/lib/go/thrift/server_socket.go
+++ b/lib/go/thrift/server_socket.go
@@ -75,7 +75,9 @@ func (p *TServerSocket) Accept() (TTransport, error) {
return nil, errTransportInterrupted
}
+ p.mu.Lock()
listener := p.listener
+ p.mu.Unlock()
if listener == nil {
return nil, NewTTransportException(NOT_OPEN, "No underlying
server socket")
}
@@ -115,19 +117,20 @@ func (p *TServerSocket) Addr() net.Addr {
}
func (p *TServerSocket) Close() error {
- defer func() {
- p.listener = nil
- }()
+ var err error
+ p.mu.Lock()
if p.IsListening() {
- return p.listener.Close()
+ err = p.listener.Close()
+ p.listener = nil
}
- return nil
+ p.mu.Unlock()
+ return err
}
func (p *TServerSocket) Interrupt() error {
p.mu.Lock()
- defer p.mu.Unlock()
p.interrupted = true
+ p.mu.Unlock()
p.Close()
return nil