Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disable FTL's DB functionality on errors #166

Merged
merged 2 commits into from
Dec 7, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions database.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,21 @@ pthread_mutex_t dblock;

enum { DB_VERSION, DB_LASTTIMESTAMP };

void check_database(int rc)
{
// We will retry if the database is busy at the moment
// However, we won't retry if any other error happened
// and - instead - disable the database functionality
// altogether in FTL (setting database to false)
if(rc != SQLITE_OK &&
rc != SQLITE_DONE &&
rc != SQLITE_ROW &&
rc != SQLITE_BUSY)
{
database = false;
}
}

void dbclose(void)
{
sqlite3_close(db);
Expand Down Expand Up @@ -51,6 +66,7 @@ bool dbopen(void)
if( rc ){
logg("dbopen() - SQL error (%i): %s", rc, sqlite3_errmsg(db));
dbclose();
check_database(rc);
return false;
}

Expand Down Expand Up @@ -81,6 +97,7 @@ bool dbquery(const char *format, ...)
if( rc != SQLITE_OK ){
logg("dbquery(%s) - SQL error (%i): %s", query, rc, zErrMsg);
sqlite3_free(zErrMsg);
check_database(rc);
return false;
}

Expand All @@ -97,6 +114,7 @@ bool db_create(void)
if( rc ){
logg("db_create() - SQL error (%i): %s", rc, sqlite3_errmsg(db));
dbclose();
check_database(rc);
return false;
}
// Create Queries table in the database
Expand Down Expand Up @@ -132,6 +150,7 @@ void db_init(void)
if( rc ){
logg("db_init() - Cannot open database (%i): %s", rc, sqlite3_errmsg(db));
dbclose();
check_database(rc);

logg("Creating new (empty) database");
if (!db_create())
Expand Down Expand Up @@ -172,6 +191,7 @@ int db_get_FTL_property(unsigned int ID)
if( rc ){
logg("db_get_FTL_property() - SQL error prepare (%i): %s", rc, sqlite3_errmsg(db));
dbclose();
check_database(rc);
return -1;
}
free(querystring);
Expand All @@ -181,6 +201,7 @@ int db_get_FTL_property(unsigned int ID)
if( rc != SQLITE_ROW ){
logg("db_get_FTL_property() - SQL error step (%i): %s", rc, sqlite3_errmsg(db));
dbclose();
check_database(rc);
return -1;
}

Expand All @@ -205,13 +226,15 @@ int number_of_queries_in_DB(void)
if( rc ){
logg("number_of_queries_in_DB() - SQL error prepare (%i): %s", rc, sqlite3_errmsg(db));
dbclose();
check_database(rc);
return -1;
}

rc = sqlite3_step(stmt);
if( rc != SQLITE_ROW ){
logg("number_of_queries_in_DB() - SQL error step (%i): %s", rc, sqlite3_errmsg(db));
dbclose();
check_database(rc);
return -1;
}

Expand Down Expand Up @@ -274,6 +297,7 @@ void save_to_DB(void)
{
logg("save_to_DB() - error in preparing SQL statement (%i): %s", ret, sqlite3_errmsg(db));
dbclose();
check_database(rc);
return;
}

Expand Down Expand Up @@ -338,6 +362,8 @@ void save_to_DB(void)
logg("save_to_DB() - exiting due to too many errors");
break;
}
// Check this error message
check_database(rc);
}

saved++;
Expand Down