mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-17 20:45:40 +00:00
MEDIUM: lua-thread: No longer use locked context in initialization parts
The goal is to allow execution of one main lua state per thread. Stop using locks in init part, we will use only in parts where the parent lua state is known, so we could take decision about lock according with the lua parent state.
This commit is contained in:
parent
ecb83c24c4
commit
3c539327f4
18
src/hlua.c
18
src/hlua.c
@ -8273,13 +8273,16 @@ int hlua_post_init_state(lua_State *L)
|
||||
hlua_global_allocator.limit = ~hlua_global_allocator.limit;
|
||||
|
||||
/* Call post initialisation function in safe environment. */
|
||||
if (!SET_SAFE_LJMP(L)) {
|
||||
if (setjmp(safe_ljmp_env) != 0) {
|
||||
lua_atpanic(L, hlua_panic_safe);
|
||||
if (lua_type(L, -1) == LUA_TSTRING)
|
||||
error = lua_tostring(L, -1);
|
||||
else
|
||||
error = "critical error";
|
||||
fprintf(stderr, "Lua post-init: %s.\n", error);
|
||||
exit(1);
|
||||
} else {
|
||||
lua_atpanic(L, hlua_panic_ljmp);
|
||||
}
|
||||
|
||||
hlua_fcn_post_init(L);
|
||||
@ -8338,7 +8341,8 @@ int hlua_post_init_state(lua_State *L)
|
||||
if (!return_status)
|
||||
break;
|
||||
}
|
||||
RESET_SAFE_LJMP(L);
|
||||
|
||||
lua_atpanic(L, hlua_panic_safe);
|
||||
return return_status;
|
||||
}
|
||||
|
||||
@ -8435,17 +8439,19 @@ lua_State *hlua_init_state(int thread_num)
|
||||
* process of HAProxy, this abort() is tolerated.
|
||||
*/
|
||||
|
||||
/* Set safe environment for the initialisation. */
|
||||
if (!SET_SAFE_LJMP(L)) {
|
||||
/* Call post initialisation function in safe environment. */
|
||||
if (setjmp(safe_ljmp_env) != 0) {
|
||||
lua_atpanic(L, hlua_panic_safe);
|
||||
if (lua_type(L, -1) == LUA_TSTRING)
|
||||
error_msg = lua_tostring(L, -1);
|
||||
else
|
||||
error_msg = "critical error";
|
||||
fprintf(stderr, "Lua init: %s.\n", error_msg);
|
||||
exit(1);
|
||||
} else {
|
||||
lua_atpanic(L, hlua_panic_ljmp);
|
||||
}
|
||||
|
||||
|
||||
/* Initialise lua. */
|
||||
luaL_openlibs(L);
|
||||
#define HLUA_PREPEND_PATH_TOSTRING1(x) #x
|
||||
@ -8990,7 +8996,7 @@ lua_State *hlua_init_state(int thread_num)
|
||||
}
|
||||
#endif
|
||||
|
||||
RESET_SAFE_LJMP(L);
|
||||
lua_atpanic(L, hlua_panic_safe);
|
||||
|
||||
return L;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user