diff --git a/lualib/skynet/sharedata.lua b/lualib/skynet/sharedata.lua index b955bd90..be62f67d 100644 --- a/lualib/skynet/sharedata.lua +++ b/lualib/skynet/sharedata.lua @@ -18,6 +18,7 @@ local function monitor(name, obj, cobj) break end sd.update(obj, newobj) + skynet.send(service, "lua", "confirm" , newobj) end if cache[name] == obj then cache[name] = nil diff --git a/service/sharedatad.lua b/service/sharedatad.lua index d7439493..622180f1 100644 --- a/service/sharedatad.lua +++ b/service/sharedatad.lua @@ -118,6 +118,7 @@ function CMD.update(name, t, ...) if watch then sharedata.host.markdirty(oldcobj) for _,response in pairs(watch) do + sharedata.host.incref(newobj) response(true, newobj) end end @@ -138,6 +139,7 @@ end function CMD.monitor(name, obj) local v = assert(pool[name]) if obj ~= v.obj then + sharedata.host.incref(v.obj) return v.obj end