From c497397111451ac09d015b43560d3fdf0be79c70 Mon Sep 17 00:00:00 2001 From: Sfan5 Date: Wed, 5 Mar 2014 21:46:40 +0100 Subject: [PATCH] Catch SQLITE_BUSY and try again --- db-sqlite3.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/db-sqlite3.cpp b/db-sqlite3.cpp index 9adfe5f..2c1f82d 100644 --- a/db-sqlite3.cpp +++ b/db-sqlite3.cpp @@ -1,5 +1,6 @@ #include "db-sqlite3.h" #include +#include // for usleep DBSQLite3::DBSQLite3(const std::string &mapdir) { @@ -24,7 +25,8 @@ std::vector DBSQLite3::getBlockPos() { if(result == SQLITE_ROW) { sqlite3_int64 blocknum = sqlite3_column_int64(statement, 0); vec.push_back(blocknum); - } + } else if (result == SQLITE_BUSY) // Wait some time and try again + usleep(10000); else break; } @@ -59,8 +61,9 @@ DBBlockList DBSQLite3::getBlocksOnZ(int zPos) const unsigned char *data = reinterpret_cast(sqlite3_column_blob(statement, 1)); int size = sqlite3_column_bytes(statement, 1); blocks.push_back(DBBlock(blocknum, std::basic_string(data, size))); - } - else { + } else if (result == SQLITE_BUSY) { // Wait some time and try again + usleep(10000); + } else { break; } }