mirror of https://github.com/tidwall/tile38.git
parent
13c206fe05
commit
87185319b2
|
@ -760,7 +760,7 @@ func (server *Server) parseSetArgs(vs []string) (
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (server *Server) cmdSet(msg *Message) (res resp.Value, d commandDetails, err error) {
|
func (server *Server) cmdSet(msg *Message, resetExpires bool) (res resp.Value, d commandDetails, err error) {
|
||||||
if server.config.maxMemory() > 0 && server.outOfMemory.on() {
|
if server.config.maxMemory() > 0 && server.outOfMemory.on() {
|
||||||
err = errOOM
|
err = errOOM
|
||||||
return
|
return
|
||||||
|
@ -790,7 +790,9 @@ func (server *Server) cmdSet(msg *Message) (res resp.Value, d commandDetails, er
|
||||||
goto notok
|
goto notok
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
server.clearIDExpires(d.key, d.id)
|
if resetExpires {
|
||||||
|
server.clearIDExpires(d.key, d.id)
|
||||||
|
}
|
||||||
d.oldObj, d.oldFields, d.fields = col.Set(d.id, d.obj, fields, values)
|
d.oldObj, d.oldFields, d.fields = col.Set(d.id, d.obj, fields, values)
|
||||||
d.command = "set"
|
d.command = "set"
|
||||||
d.updated = true // perhaps we should do a diff on the previous object?
|
d.updated = true // perhaps we should do a diff on the previous object?
|
||||||
|
|
|
@ -222,7 +222,7 @@ func (c *Server) cmdJset(msg *Message) (res resp.Value, d commandDetails, err er
|
||||||
nmsg := *msg
|
nmsg := *msg
|
||||||
nmsg.Args = []string{"SET", key, id, "OBJECT", json}
|
nmsg.Args = []string{"SET", key, id, "OBJECT", json}
|
||||||
// SET key id OBJECT json
|
// SET key id OBJECT json
|
||||||
return c.cmdSet(&nmsg)
|
return c.cmdSet(&nmsg, false)
|
||||||
}
|
}
|
||||||
if createcol {
|
if createcol {
|
||||||
c.setCol(key, col)
|
c.setCol(key, col)
|
||||||
|
@ -291,7 +291,7 @@ func (c *Server) cmdJdel(msg *Message) (res resp.Value, d commandDetails, err er
|
||||||
nmsg := *msg
|
nmsg := *msg
|
||||||
nmsg.Args = []string{"SET", key, id, "OBJECT", json}
|
nmsg.Args = []string{"SET", key, id, "OBJECT", json}
|
||||||
// SET key id OBJECT json
|
// SET key id OBJECT json
|
||||||
return c.cmdSet(&nmsg)
|
return c.cmdSet(&nmsg, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
d.key = key
|
d.key = key
|
||||||
|
|
|
@ -17,7 +17,7 @@ import (
|
||||||
"github.com/tidwall/geojson/geo"
|
"github.com/tidwall/geojson/geo"
|
||||||
"github.com/tidwall/resp"
|
"github.com/tidwall/resp"
|
||||||
"github.com/tidwall/tile38/internal/log"
|
"github.com/tidwall/tile38/internal/log"
|
||||||
"github.com/yuin/gopher-lua"
|
lua "github.com/yuin/gopher-lua"
|
||||||
luajson "layeh.com/gopher-json"
|
luajson "layeh.com/gopher-json"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -161,7 +161,7 @@ func (pl *lStatePool) New() *lua.LState {
|
||||||
"error_reply": errorReply,
|
"error_reply": errorReply,
|
||||||
"status_reply": statusReply,
|
"status_reply": statusReply,
|
||||||
"sha1hex": sha1hex,
|
"sha1hex": sha1hex,
|
||||||
"distance_to": distanceTo,
|
"distance_to": distanceTo,
|
||||||
}
|
}
|
||||||
L.SetGlobal("tile38", L.SetFuncs(L.NewTable(), exports))
|
L.SetGlobal("tile38", L.SetFuncs(L.NewTable(), exports))
|
||||||
|
|
||||||
|
@ -592,7 +592,7 @@ func (c *Server) commandInScript(msg *Message) (
|
||||||
default:
|
default:
|
||||||
err = fmt.Errorf("unknown command '%s'", msg.Args[0])
|
err = fmt.Errorf("unknown command '%s'", msg.Args[0])
|
||||||
case "set":
|
case "set":
|
||||||
res, d, err = c.cmdSet(msg)
|
res, d, err = c.cmdSet(msg, true)
|
||||||
case "fset":
|
case "fset":
|
||||||
res, d, err = c.cmdFset(msg)
|
res, d, err = c.cmdFset(msg)
|
||||||
case "del":
|
case "del":
|
||||||
|
@ -707,7 +707,7 @@ func (c *Server) luaTile38AtomicRW(msg *Message) (resp.Value, error) {
|
||||||
if msg.Deadline != nil {
|
if msg.Deadline != nil {
|
||||||
if write {
|
if write {
|
||||||
res = NOMessage
|
res = NOMessage
|
||||||
err = errTimeoutOnCmd(msg.Command())
|
err = errTimeoutOnCmd(msg.Command())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
|
@ -813,7 +813,7 @@ func (c *Server) luaTile38NonAtomic(msg *Message) (resp.Value, error) {
|
||||||
if msg.Deadline != nil {
|
if msg.Deadline != nil {
|
||||||
if write {
|
if write {
|
||||||
res = NOMessage
|
res = NOMessage
|
||||||
err = errTimeoutOnCmd(msg.Command())
|
err = errTimeoutOnCmd(msg.Command())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
|
|
|
@ -932,7 +932,7 @@ func (server *Server) command(msg *Message, client *Client) (
|
||||||
default:
|
default:
|
||||||
err = fmt.Errorf("unknown command '%s'", msg.Args[0])
|
err = fmt.Errorf("unknown command '%s'", msg.Args[0])
|
||||||
case "set":
|
case "set":
|
||||||
res, d, err = server.cmdSet(msg)
|
res, d, err = server.cmdSet(msg, true)
|
||||||
case "fset":
|
case "fset":
|
||||||
res, d, err = server.cmdFset(msg)
|
res, d, err = server.cmdFset(msg)
|
||||||
case "del":
|
case "del":
|
||||||
|
|
Loading…
Reference in New Issue