Flush rollback log more often
authorest31 <MTest31@outlook.com>
Sat, 24 Oct 2015 06:20:42 +0000 (08:20 +0200)
committerest31 <MTest31@outlook.com>
Sat, 24 Oct 2015 06:45:13 +0000 (08:45 +0200)
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.

src/rollback.cpp

index a6b79393a30dd8c111955070c4d0de4973779517..3d264b880ad6fadd83745f41548c000aa987be8c 100644 (file)
@@ -107,6 +107,8 @@ RollbackManager::RollbackManager(const std::string & world_path,
 
 RollbackManager::~RollbackManager()
 {
+       flush();
+
        SQLOK(sqlite3_finalize(stmt_insert));
        SQLOK(sqlite3_finalize(stmt_replace));
        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,
                time_t seconds, int limit)
 {
+       flush();
        time_t cur_time = time(0);
        time_t first_time = cur_time - seconds;