Skip to content
This repository has been archived by the owner on Jan 15, 2019. It is now read-only.

Commit

Permalink
Merge branch 'feature/ido2db-startup-schema-check-5272' into next
Browse files Browse the repository at this point in the history
Fixes #5272
  • Loading branch information
Michael Friedrich authored and Michael Friedrich committed Jan 3, 2014
2 parents d9e7007 + 920eee9 commit 6bcd519
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 10 deletions.
1 change: 1 addition & 0 deletions module/idoutils/include/db.h
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ int ido2db_db_hello(ido2db_idi *);
int ido2db_thread_db_hello(ido2db_idi *);
int ido2db_db_goodbye(ido2db_idi *);
int ido2db_db_checkin(ido2db_idi *);
int ido2db_db_version_check(ido2db_idi *);

char *ido2db_db_escape_string(ido2db_idi *,char *);
char *ido2db_db_timet_to_sql(ido2db_idi *,time_t);
Expand Down
10 changes: 0 additions & 10 deletions module/idoutils/src/db.c
Original file line number Diff line number Diff line change
Expand Up @@ -1368,16 +1368,6 @@ int ido2db_db_hello(ido2db_idi *idi) {
if (idi->instance_name == NULL)
idi->instance_name = strdup("default");


result = ido2db_db_version_check(idi);

if (result == IDO_ERROR) {
syslog(LOG_USER | LOG_INFO, "Error: DB Version Check against %s database query failed! Please check %s database configuration and schema!", ido2db_db_settings.dbserver, ido2db_db_settings.dbserver);
ido2db_log_debug_info(IDO2DB_DEBUGL_PROCESSINFO, 2, "ido2db_db_version_check() query against existing instance not possible, cleaning up and exiting\n");

return IDO_ERROR;
}

#ifdef USE_LIBDBI /* everything else will be libdbi */

/* get existing instance */
Expand Down
47 changes: 47 additions & 0 deletions module/idoutils/src/ido2db.c
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,53 @@ int main(int argc, char **argv) {
/* open debug log */
ido2db_open_debug_log();

/******************************/
/* check db schema version */
ido2db_idi idi_schema;
ido2db_idi_init(&idi_schema);
ido2db_db_init(&idi_schema);

if (ido2db_db_connect(&idi_schema) == IDO_ERROR) {
if (idi_schema.dbinfo.connected != IDO_TRUE) {

/* we did not get a db connection and the client should be disconnected */
syslog(LOG_ERR, "Error: Database connection for schema check failed, bailing out...\n");
ido2db_log_debug_info(IDO2DB_DEBUGL_PROCESSINFO, 2, "Error: Database connection for schema check failed, bailing out...");

ido2db_db_deinit(&idi_schema);

ido2db_free_input_memory(&idi_schema);
ido2db_free_connection_memory(&idi_schema);

syslog(LOG_ERR, "Program shutdown... (PID=%d)\n", (int)getpid());
ido2db_close_debug_log();
ido2db_free_program_memory();
return 1;
}
}

if (ido2db_db_version_check(&idi_schema) == IDO_ERROR) {
syslog(LOG_ERR, "ERROR: DB Version Check against %s database query failed! Please check %s database configuration and schema! Bailing out ...", ido2db_db_settings.dbserver, ido2db_db_settings.dbserver);

ido2db_log_debug_info(IDO2DB_DEBUGL_PROCESSINFO, 2, "ERROR: DB Version Check against %s database query failed! Please check %s database configuration and schema! Bailing out ...", ido2db_db_settings.dbserver, ido2db_db_settings.dbserver);
printf(" ERROR: DB Version Check failed! Please check %s database configuration, schema and syslog for details! Bailing out ...", ido2db_db_settings.dbserver);

ido2db_db_disconnect(&idi_schema);
ido2db_db_deinit(&idi_schema);

ido2db_free_input_memory(&idi_schema);
ido2db_free_connection_memory(&idi_schema);

syslog(LOG_ERR, "Program shutdown... (PID=%d)\n", (int)getpid());
ido2db_close_debug_log();
ido2db_free_program_memory();
return 1;
}

ido2db_db_disconnect(&idi_schema);
ido2db_db_deinit(&idi_schema);
/******************************/

/* unlink leftover socket */
if (ido2db_socket_type == IDO_SINK_UNIXSOCKET)
unlink(ido2db_socket_name);
Expand Down

0 comments on commit 6bcd519

Please sign in to comment.