Repository: thrift Updated Branches: refs/heads/master 622ef03f1 -> a6b120301
THRIFT-3422 Fixed Go's TServerSocket not closing socket on Interrupt. Client: Go Patch: Mark Sonnabaum <[email protected]> This closes #692 Project: http://git-wip-us.apache.org/repos/asf/thrift/repo Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/a6b12030 Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/a6b12030 Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/a6b12030 Branch: refs/heads/master Commit: a6b120301a05ef6bfb77d5bd7df1784b78339a09 Parents: 622ef03 Author: Mark Sonnabaum <[email protected]> Authored: Fri Nov 13 10:48:25 2015 -0600 Committer: Jens Geyer <[email protected]> Committed: Sat Nov 14 13:37:46 2015 +0100 ---------------------------------------------------------------------- lib/go/thrift/server_socket.go | 1 + lib/go/thrift/server_socket_test.go | 50 ++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/thrift/blob/a6b12030/lib/go/thrift/server_socket.go ---------------------------------------------------------------------- diff --git a/lib/go/thrift/server_socket.go b/lib/go/thrift/server_socket.go index 2581056..d6e9495 100644 --- a/lib/go/thrift/server_socket.go +++ b/lib/go/thrift/server_socket.go @@ -115,6 +115,7 @@ func (p *TServerSocket) Close() error { func (p *TServerSocket) Interrupt() error { p.mu.Lock() p.interrupted = true + p.Close() p.mu.Unlock() return nil http://git-wip-us.apache.org/repos/asf/thrift/blob/a6b12030/lib/go/thrift/server_socket_test.go ---------------------------------------------------------------------- diff --git a/lib/go/thrift/server_socket_test.go b/lib/go/thrift/server_socket_test.go new file mode 100644 index 0000000..f08e8e9 --- /dev/null +++ b/lib/go/thrift/server_socket_test.go @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package thrift + +import ( + "fmt" + "testing" +) + +func TestSocketIsntListeningAfterInterrupt(t *testing.T) { + host := "127.0.0.1" + port := 9090 + addr := fmt.Sprintf("%s:%d", host, port) + + socket := CreateServerSocket(t, addr) + socket.Listen() + socket.Interrupt() + + newSocket := CreateServerSocket(t, addr) + err := newSocket.Listen() + defer newSocket.Interrupt() + if err != nil { + t.Fatalf("Failed to rebinds: %s", err) + } +} + +func CreateServerSocket(t *testing.T, addr string) *TServerSocket { + socket, err := NewTServerSocket(addr) + if err != nil { + t.Fatalf("Failed to create server socket: %s", err) + } + return socket +}
