[:0100005c] [2017-6-4 20:36:21] lua call [100057b to :100005c : 0 msgsz = 5327] error :
./../server/core/lualib/skynet.lua:541: ./../server/core/lualib/skynet.lua:156: Invalid value type : nil
stack traceback:
[C]: in function 'bson.encode'
./../server/core/lualib/mongo.lua:370: in method 'update'
./../server/server_common/service/mongodb.lua:85: in local 'f'
./../server/server_common/lualib/service.lua:32: in upvalue 'f'
./../server/core/lualib/skynet.lua:111: in function <./../server/core/lualib/skynet.lua:105>
mongo.lua:370:
local pack = driver.update(self.full_name, flags, bson_encode(selector), bson_encode(update))
lua-bson.c
static void
append_one(struct bson *bs, lua_State *L, const char *key, size_t sz, int depth) {
int vt = lua_type(L,-1);
switch(vt) {
case LUA_TNUMBER:
break;
case LUA_TUSERDATA: {
break;
}
case LUA_TSTRING: {
break;
}
case LUA_TTABLE:
break;
case LUA_TBOOLEAN:
break;
default:
**luaL_error(L, "Invalid value type : %s", lua_typename(L,vt));** // 走到该分支报错
}
}
问题出在 bson_encode 上面,因为走到一个无法识别的 bson key 类型 分支,我在生产环境下面把这个 table 数据 dump 下来保存到文件,然后在自己机器上重新进行 bson_encode ,但是无法复现问题.
mongo.lua:370:
lua-bson.c