feature(main): add Etcd.Close() method

release-0.4
Cenk Alti 2014-03-24 14:53:48 -07:00
parent 094cc6347d
commit c463293d39
1 changed files with 17 additions and 9 deletions

View File

@ -17,6 +17,7 @@ limitations under the License.
package etcd
import (
"net"
"net/http"
"os"
"path/filepath"
@ -36,11 +37,13 @@ import (
)
type Etcd struct {
Config *config.Config // etcd config
Store store.Store // data store
Registry *server.Registry // stores URL information for nodes
Server *server.Server // http server, runs on 4001 by default
PeerServer *server.PeerServer // peer server, runs on 7001 by default
Config *config.Config // etcd config
Store store.Store // data store
Registry *server.Registry // stores URL information for nodes
Server *server.Server // http server, runs on 4001 by default
PeerServer *server.PeerServer // peer server, runs on 7001 by default
listener net.Listener // Listener for Server
peerListener net.Listener // Listener for PeerServer
}
// New returns a new Etcd instance.
@ -179,14 +182,19 @@ func (e *Etcd) Run() {
// the cluster could be out of work as long as the two nodes cannot transfer messages.
e.PeerServer.Start(e.Config.Snapshot, e.Config.Discovery, e.Config.Peers)
log.Infof("peer server [name %s, listen on %s, advertised url %s]", e.PeerServer.Config.Name, e.Config.Peer.BindAddr, e.PeerServer.Config.URL)
l := server.NewListener(psConfig.Scheme, e.Config.Peer.BindAddr, e.Config.PeerTLSInfo())
e.peerListener = server.NewListener(psConfig.Scheme, e.Config.Peer.BindAddr, e.Config.PeerTLSInfo())
sHTTP := &ehttp.CORSHandler{e.PeerServer.HTTPHandler(), corsInfo}
log.Fatal(http.Serve(l, sHTTP))
log.Fatal(http.Serve(e.peerListener, sHTTP))
}()
log.Infof("etcd server [name %s, listen on %s, advertised url %s]", e.Server.Name, e.Config.BindAddr, e.Server.URL())
l := server.NewListener(e.Config.EtcdTLSInfo().Scheme(), e.Config.BindAddr, e.Config.EtcdTLSInfo())
e.listener = server.NewListener(e.Config.EtcdTLSInfo().Scheme(), e.Config.BindAddr, e.Config.EtcdTLSInfo())
sHTTP := &ehttp.CORSHandler{e.Server.HTTPHandler(), corsInfo}
log.Fatal(http.Serve(l, sHTTP))
log.Fatal(http.Serve(e.listener, sHTTP))
}
func (e *Etcd) Close() {
e.listener.Close()
e.peerListener.Close()
}