Flush rollback log more often

Flushes the buffer of rollback actions that wait to get saved in two more situations:

1. Flushes in the destructor of the rollback. This makes the server not
forget the last < 500 rollback entries when it shuts down.

2. Flushes the rollback when /rollback_check is invoked. This is neccessary
as otherwise it leads to confusion if users want to test the rollback functionality
by placing a node and then executing the check on it, or if the actions were
very recent out of other reasons.
This commit is contained in:
est31 2015-10-24 08:20:42 +02:00
parent 964be640cb
commit f9eb31f317

@ -107,6 +107,8 @@ RollbackManager::RollbackManager(const std::string & world_path,
RollbackManager::~RollbackManager() RollbackManager::~RollbackManager()
{ {
flush();
SQLOK(sqlite3_finalize(stmt_insert)); SQLOK(sqlite3_finalize(stmt_insert));
SQLOK(sqlite3_finalize(stmt_replace)); SQLOK(sqlite3_finalize(stmt_replace));
SQLOK(sqlite3_finalize(stmt_select)); SQLOK(sqlite3_finalize(stmt_select));
@ -930,6 +932,7 @@ std::list<RollbackAction> RollbackManager::getEntriesSince(time_t first_time)
std::list<RollbackAction> RollbackManager::getNodeActors(v3s16 pos, int range, std::list<RollbackAction> RollbackManager::getNodeActors(v3s16 pos, int range,
time_t seconds, int limit) time_t seconds, int limit)
{ {
flush();
time_t cur_time = time(0); time_t cur_time = time(0);
time_t first_time = cur_time - seconds; time_t first_time = cur_time - seconds;