From e2d1dba22a0cabacadd6f67f44b43b842ba8079c Mon Sep 17 00:00:00 2001 From: kanoi Date: Wed, 10 Sep 2014 08:22:20 +1000 Subject: [PATCH] ckdb - set all dbload to abort early on shutdown --- src/ckdb.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/src/ckdb.c b/src/ckdb.c index d71634c6..26e16ac2 100644 --- a/src/ckdb.c +++ b/src/ckdb.c @@ -47,7 +47,7 @@ #define DB_VLOCK "1" #define DB_VERSION "0.9" -#define CKDB_VERSION DB_VERSION"-0.275" +#define CKDB_VERSION DB_VERSION"-0.276" #define WHERE_FFL " - from %s %s() line %d" #define WHERE_FFL_HERE __FILE__, __func__, __LINE__ @@ -2915,6 +2915,11 @@ static bool users_fill(PGconn *conn) item = k_unlink_head(users_free); DATA_USERS(row, item); + if (everyone_die) { + ok = false; + break; + } + PQ_GET_FLD(res, i, "userid", field, ok); if (!ok) break; @@ -3363,6 +3368,11 @@ static bool workers_fill(PGconn *conn) item = k_unlink_head(workers_free); DATA_WORKERS(row, item); + if (everyone_die) { + ok = false; + break; + } + PQ_GET_FLD(res, i, "userid", field, ok); if (!ok) break; @@ -3652,6 +3662,11 @@ static bool paymentaddresses_fill(PGconn *conn) item = k_unlink_head(paymentaddresses_free); DATA_PAYMENTADDRESSES(row, item); + if (everyone_die) { + ok = false; + break; + } + PQ_GET_FLD(res, i, "paymentaddressid", field, ok); if (!ok) break; @@ -3759,6 +3774,11 @@ static bool payments_fill(PGconn *conn) item = k_unlink_head(payments_free); DATA_PAYMENTS(row, item); + if (everyone_die) { + ok = false; + break; + } + PQ_GET_FLD(res, i, "userid", field, ok); if (!ok) break; @@ -4383,7 +4403,7 @@ static bool workinfo_fill(PGconn *conn) // TODO: select the data based on sharesummary since old data isn't needed // however, the ageing rules for workinfo will decide that also - // keep the last block + current? + // keep the last block + current? Rules will depend on payout scheme also sel = "select " // "workinfoid,poolinstance,transactiontree,merklehash,prevhash," "workinfoid,poolinstance,merklehash,prevhash," @@ -4417,6 +4437,11 @@ static bool workinfo_fill(PGconn *conn) item = k_unlink_head(workinfo_free); DATA_WORKINFO(row, item); + if (everyone_die) { + ok = false; + break; + } + PQ_GET_FLD(res, i, "workinfoid", field, ok); if (!ok) break; @@ -5229,6 +5254,11 @@ static bool sharesummary_fill(PGconn *conn) item = k_unlink_head(sharesummary_free); DATA_SHARESUMMARY(row, item); + if (everyone_die) { + ok = false; + break; + } + row->inserted = true; PQ_GET_FLD(res, i, "userid", field, ok); @@ -6045,6 +6075,11 @@ static bool blocks_fill(PGconn *conn) item = k_unlink_head(blocks_free); DATA_BLOCKS(row, item); + if (everyone_die) { + ok = false; + break; + } + PQ_GET_FLD(res, i, "height", field, ok); if (!ok) break; @@ -6320,6 +6355,11 @@ static bool miningpayouts_fill(PGconn *conn) item = k_unlink_head(miningpayouts_free); DATA_MININGPAYOUTS(row, item); + if (everyone_die) { + ok = false; + break; + } + PQ_GET_FLD(res, i, "miningpayoutid", field, ok); if (!ok) break; @@ -6582,6 +6622,11 @@ static bool auths_fill(PGconn *conn) item = k_unlink_head(auths_free); DATA_AUTHS(row, item); + if (everyone_die) { + ok = false; + break; + } + PQ_GET_FLD(res, i, "authid", field, ok); if (!ok) break; @@ -6817,6 +6862,11 @@ static bool poolstats_fill(PGconn *conn) item = k_unlink_head(poolstats_free); DATA_POOLSTATS(row, item); + if (everyone_die) { + ok = false; + break; + } + row->stored = true; PQ_GET_FLD(res, i, "poolinstance", field, ok); @@ -7260,6 +7310,11 @@ static bool userstats_fill(PGconn *conn) item = k_unlink_head(userstats_free); DATA_USERSTATS(row, item); + if (everyone_die) { + ok = false; + break; + } + // Not a DB field row->poolinstance[0] = '\0';