Added some exception hadling. Dont want to live *too* dangerously here

This commit is contained in:
Grant Limberg 2018-09-05 11:49:07 -07:00
parent 92abc92463
commit d701f4e331

View File

@ -153,6 +153,7 @@ void PostgreSQL::nodeIsOnline(const uint64_t networkId, const uint64_t memberId,
void PostgreSQL::initializeNetworks(PGconn *conn) void PostgreSQL::initializeNetworks(PGconn *conn)
{ {
try {
if (PQstatus(conn) != CONNECTION_OK) { if (PQstatus(conn) != CONNECTION_OK) {
fprintf(stderr, "Bad Database Connection: %s", PQerrorMessage(conn)); fprintf(stderr, "Bad Database Connection: %s", PQerrorMessage(conn));
exit(1); exit(1);
@ -276,10 +277,15 @@ void PostgreSQL::initializeNetworks(PGconn *conn)
} }
_readyLock.unlock(); _readyLock.unlock();
} }
} catch (std::exception &e) {
fprintf(stderr, "ERROR: Error initializing networks: %s", e.what());
exit(-1);
}
} }
void PostgreSQL::initializeMembers(PGconn *conn) void PostgreSQL::initializeMembers(PGconn *conn)
{ {
try {
if (PQstatus(conn) != CONNECTION_OK) { if (PQstatus(conn) != CONNECTION_OK) {
fprintf(stderr, "Bad Database Connection: %s", PQerrorMessage(conn)); fprintf(stderr, "Bad Database Connection: %s", PQerrorMessage(conn));
exit(1); exit(1);
@ -376,6 +382,10 @@ void PostgreSQL::initializeMembers(PGconn *conn)
} }
_readyLock.unlock(); _readyLock.unlock();
} }
} catch (std::exception &e) {
fprintf(stderr, "ERROR: Error initializing members: %s\n", e.what());
exit(-1);
}
} }
void PostgreSQL::heartbeat() void PostgreSQL::heartbeat()
@ -565,7 +575,7 @@ void PostgreSQL::commitThread()
{ {
PGconn *conn = PQconnectdb(_path.c_str()); PGconn *conn = PQconnectdb(_path.c_str());
if (PQstatus(conn) == CONNECTION_BAD) { if (PQstatus(conn) == CONNECTION_BAD) {
fprintf(stderr, "Connection to database failed: %s\n", PQerrorMessage(conn)); fprintf(stderr, "ERROR: Connection to database failed: %s\n", PQerrorMessage(conn));
PQfinish(conn); PQfinish(conn);
exit(1); exit(1);
} }
@ -575,8 +585,15 @@ void PostgreSQL::commitThread()
if (!config) { if (!config) {
continue; continue;
} }
if (PQstatus(conn) == CONNECTION_BAD) {
fprintf(stderr, "ERROR: Connection to database failed: %s\n", PQerrorMessage(conn));
PQfinish(conn);
exit(1);
}
try {
const std::string objtype = (*config)["objtype"]; const std::string objtype = (*config)["objtype"];
if (objtype == "member") { if (objtype == "member") {
try {
std::string memberId = (*config)["id"]; std::string memberId = (*config)["id"];
std::string networkId = (*config)["nwid"]; std::string networkId = (*config)["nwid"];
std::string name = (*config)["name"]; std::string name = (*config)["name"];
@ -700,7 +717,11 @@ void PostgreSQL::commitThread()
} }
PQclear(res); PQclear(res);
} catch (std::exception &e) {
fprintf(stderr, "ERROR: Error updating member: %s\n", e.what());
}
} else if (objtype == "network") { } else if (objtype == "network") {
try {
std::string id = (*config)["id"]; std::string id = (*config)["id"];
std::string controllerId = _myAddressStr.c_str(); std::string controllerId = _myAddressStr.c_str();
std::string name = (*config)["name"]; std::string name = (*config)["name"];
@ -882,10 +903,13 @@ void PostgreSQL::commitThread()
fprintf(stderr, "ERROR: Error committing network update: %s\n", PQresultErrorMessage(res)); fprintf(stderr, "ERROR: Error committing network update: %s\n", PQresultErrorMessage(res));
} }
PQclear(res); PQclear(res);
} catch (std::exception &e) {
fprintf(stderr, "ERROR: Error updating member: %s\n", e.what());
}
} else if (objtype == "trace") { } else if (objtype == "trace") {
fprintf(stderr, "ERROR: Trace not yet implemented"); fprintf(stderr, "ERROR: Trace not yet implemented");
} else if (objtype == "_delete_network") { } else if (objtype == "_delete_network") {
try {
std::string networkId = (*config)["nwid"]; std::string networkId = (*config)["nwid"];
const char *values[1] = { const char *values[1] = {
networkId.c_str() networkId.c_str()
@ -904,7 +928,11 @@ void PostgreSQL::commitThread()
} }
PQclear(res); PQclear(res);
} catch (std::exception &e) {
fprintf(stderr, "ERROR: Error deleting network: %s\n", e.what());
}
} else if (objtype == "_delete_member") { } else if (objtype == "_delete_member") {
try {
std::string memberId = (*config)["id"]; std::string memberId = (*config)["id"];
std::string networkId = (*config)["nwid"]; std::string networkId = (*config)["nwid"];
@ -927,10 +955,15 @@ void PostgreSQL::commitThread()
} }
PQclear(res); PQclear(res);
} catch (std::exception &e) {
fprintf(stderr, "ERROR: Error deleting member: %s\n", e.what());
}
} else { } else {
fprintf(stderr, "ERROR: unknown objtype"); fprintf(stderr, "ERROR: unknown objtype");
} }
} catch (std::exception &e) {
fprintf(stderr, "ERROR: Error getting objtype: %s\n", e.what());
}
delete config; delete config;
std::this_thread::sleep_for(std::chrono::milliseconds(10)); std::this_thread::sleep_for(std::chrono::milliseconds(10));