forked from cerc-io/plugeth
rpc: remove grace period when shutting down the server
The server delayed closing of connections for 3s when stopping. This was supposed to allow for slow handlers, but it didn't really work. When geth quits, it will just exit immediately after quitting the server. Removing the timer makes testing easier because all connections will be closed after Stop returns.
This commit is contained in:
parent
f58ac2b46b
commit
c145589f25
@ -21,7 +21,6 @@ import (
|
||||
"reflect"
|
||||
"runtime"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/ethereum/go-ethereum/logger"
|
||||
"github.com/ethereum/go-ethereum/logger/glog"
|
||||
@ -30,8 +29,6 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
stopPendingRequestTimeout = 3 * time.Second // give pending requests stopPendingRequestTimeout the time to finish when the server is stopped
|
||||
|
||||
notificationBufferSize = 10000 // max buffered notifications before codec is closed
|
||||
|
||||
MetadataApi = "rpc"
|
||||
@ -240,13 +237,11 @@ func (s *Server) ServeSingleRequest(codec ServerCodec, options CodecOption) {
|
||||
func (s *Server) Stop() {
|
||||
if atomic.CompareAndSwapInt32(&s.run, 1, 0) {
|
||||
glog.V(logger.Debug).Infoln("RPC Server shutdown initiatied")
|
||||
time.AfterFunc(stopPendingRequestTimeout, func() {
|
||||
s.codecsMu.Lock()
|
||||
defer s.codecsMu.Unlock()
|
||||
s.codecs.Each(func(c interface{}) bool {
|
||||
c.(ServerCodec).Close()
|
||||
return true
|
||||
})
|
||||
s.codecsMu.Lock()
|
||||
defer s.codecsMu.Unlock()
|
||||
s.codecs.Each(func(c interface{}) bool {
|
||||
c.(ServerCodec).Close()
|
||||
return true
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user