added dev sleep command
This commit is contained in:
parent
770c6ad322
commit
4a3800596e
@ -70,9 +70,9 @@ type Controller struct {
|
|||||||
|
|
||||||
// atomics
|
// atomics
|
||||||
followc aint // counter increases when follow property changes
|
followc aint // counter increases when follow property changes
|
||||||
statsTotalConns aint
|
statsTotalConns aint // counter for total connections
|
||||||
statsTotalCommands aint
|
statsTotalCommands aint // counter for total commands
|
||||||
statsExpired aint
|
statsExpired aint // item expiration counter
|
||||||
lastShrinkDuration aint
|
lastShrinkDuration aint
|
||||||
currentShrinkStart atime
|
currentShrinkStart atime
|
||||||
stopBackgroundExpiring abool
|
stopBackgroundExpiring abool
|
||||||
@ -215,9 +215,7 @@ func ListenAndServeEx(host string, port int, dir string, ln *net.Listener, http
|
|||||||
// -h address
|
// -h address
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
c.mu.RLock()
|
|
||||||
is := c.config.protectedMode() != "no" && c.config.requirePass() == ""
|
is := c.config.protectedMode() != "no" && c.config.requirePass() == ""
|
||||||
c.mu.RUnlock()
|
|
||||||
return is
|
return is
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,18 +296,13 @@ func (c *Controller) watchMemory() {
|
|||||||
var mem runtime.MemStats
|
var mem runtime.MemStats
|
||||||
for range t.C {
|
for range t.C {
|
||||||
func() {
|
func() {
|
||||||
c.mu.RLock()
|
|
||||||
if c.stopWatchingMemory.on() {
|
if c.stopWatchingMemory.on() {
|
||||||
c.mu.RUnlock()
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
oom := c.outOfMemory.on()
|
oom := c.outOfMemory.on()
|
||||||
c.mu.RUnlock()
|
|
||||||
if c.config.maxMemory() == 0 {
|
if c.config.maxMemory() == 0 {
|
||||||
if oom {
|
if oom {
|
||||||
c.mu.Lock()
|
|
||||||
c.outOfMemory.set(false)
|
c.outOfMemory.set(false)
|
||||||
c.mu.Unlock()
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -317,9 +310,7 @@ func (c *Controller) watchMemory() {
|
|||||||
runtime.GC()
|
runtime.GC()
|
||||||
}
|
}
|
||||||
runtime.ReadMemStats(&mem)
|
runtime.ReadMemStats(&mem)
|
||||||
c.mu.Lock()
|
|
||||||
c.outOfMemory.set(int(mem.HeapAlloc) > c.config.maxMemory())
|
c.outOfMemory.set(int(mem.HeapAlloc) > c.config.maxMemory())
|
||||||
c.mu.Unlock()
|
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -497,6 +488,10 @@ func (c *Controller) handleInputCommand(conn *server.Conn, msg *server.Message,
|
|||||||
// dev operation
|
// dev operation
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
|
case "sleep":
|
||||||
|
// dev operation
|
||||||
|
c.mu.RLock()
|
||||||
|
defer c.mu.RUnlock()
|
||||||
case "shutdown":
|
case "shutdown":
|
||||||
// dev operation
|
// dev operation
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
@ -596,6 +591,12 @@ func (c *Controller) command(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
res, err = c.cmdMassInsert(msg)
|
res, err = c.cmdMassInsert(msg)
|
||||||
|
case "sleep":
|
||||||
|
if !core.DevMode {
|
||||||
|
err = fmt.Errorf("unknown command '%s'", msg.Values[0])
|
||||||
|
return
|
||||||
|
}
|
||||||
|
res, err = c.cmdSleep(msg)
|
||||||
case "follow":
|
case "follow":
|
||||||
res, err = c.cmdFollow(msg)
|
res, err = c.cmdFollow(msg)
|
||||||
case "readonly":
|
case "readonly":
|
||||||
|
@ -130,3 +130,16 @@ func (c *Controller) cmdMassInsert(msg *server.Message) (res string, err error)
|
|||||||
log.Infof("massinsert: done %d objects", atomic.LoadUint64(&k))
|
log.Infof("massinsert: done %d objects", atomic.LoadUint64(&k))
|
||||||
return server.OKMessage(msg, start), nil
|
return server.OKMessage(msg, start), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Controller) cmdSleep(msg *server.Message) (res string, err error) {
|
||||||
|
start := time.Now()
|
||||||
|
vs := msg.Values[1:]
|
||||||
|
var sduration string
|
||||||
|
var ok bool
|
||||||
|
if vs, sduration, ok = tokenval(vs); !ok || sduration == "" {
|
||||||
|
return "", errInvalidNumberOfArguments
|
||||||
|
}
|
||||||
|
d, _ := strconv.Atoi(sduration)
|
||||||
|
time.Sleep(time.Duration(d) * time.Second)
|
||||||
|
return server.OKMessage(msg, start), nil
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user