Skip to content

Commit

Permalink
Add OnServerReload to replace /.reload.lua with a bit more flexibility (
Browse files Browse the repository at this point in the history
  • Loading branch information
pkulchenko committed Aug 17, 2023
1 parent 3a9cac4 commit d0d0278
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 7 deletions.
8 changes: 7 additions & 1 deletion tool/net/help.txt
Original file line number Diff line number Diff line change
Expand Up @@ -499,7 +499,7 @@ SPECIAL PATHS
this path is a hidden file so that it can't be unintentionally run
by the network client.

/.reload.lua
/.reload.lua (deprecated; use OnServerReload instead)
This script is run from the main process when SIGHUP is received.
This only applies to redbean when running in daemon mode. Any
changes that are made to the Lua interpreter state will be
Expand Down Expand Up @@ -612,6 +612,12 @@ HOOKS
to modify socket configuration to set `SO_REUSEPORT`, for example.
If it returns `true`, redbean will not listen to that ip/port.

OnServerReload(reindex:bool)
If this function is defined it'll be called from the main process
on each server reload triggered by SIGHUP (for deamonized) and
SIGUSR1 (for all) redbean instances. reindex indicates if redbean
assets have been re-indexed following the signal.

OnServerStart()
If this function is defined it'll be called from the main process
right before the main event loop starts.
Expand Down
18 changes: 12 additions & 6 deletions tool/net/redbean.c
Original file line number Diff line number Diff line change
Expand Up @@ -5560,11 +5560,20 @@ static void LuaInit(void) {
#endif
}

static void LuaReload(void) {
static void LuaOnServerReload(bool reindex) {
#ifndef STATIC
if (!LuaRunAsset("/.reload.lua", false)) {
DEBUGF("(srvr) no /.reload.lua defined");
}

lua_State *L = GL;
lua_getglobal(L, "OnServerReload");
lua_pushboolean(L, reindex);
if (LuaCallWithTrace(L, 1, 0, NULL) != LUA_OK) {
LogLuaError("OnServerReload", lua_tostring(L, -1));
lua_pop(L, 1); // pop error
}
AssertLuaStackIsAt(L, 0);
#endif
}

Expand Down Expand Up @@ -5754,8 +5763,8 @@ static void HandleFrag(size_t got) {

static void HandleReload(void) {
LockInc(&shared->c.reloads);
Reindex();
LuaReload();
LuaOnServerReload(Reindex());
invalidated = false;
}

static void HandleHeartbeat(void) {
Expand Down Expand Up @@ -6506,7 +6515,6 @@ static void HandleMessages(void) {
}
if (invalidated) {
HandleReload();
invalidated = false;
}
}
if (cpm.msgsize == amtread) {
Expand Down Expand Up @@ -6537,7 +6545,6 @@ static void HandleMessages(void) {
CollectGarbage();
if (invalidated) {
HandleReload();
invalidated = false;
}
}
}
Expand Down Expand Up @@ -7135,7 +7142,6 @@ int EventLoop(int ms) {
lua_repl_lock();
HandleReload();
lua_repl_unlock();
invalidated = false;
} else if (meltdown) {
lua_repl_lock();
EnterMeltdownMode();
Expand Down

0 comments on commit d0d0278

Please sign in to comment.