From: Florian G. <re...@us...> - 2006-10-31 22:55:29
|
Update of /cvsroot/perfparse/_perfparse/db_tools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1765 Modified Files: perfparse-db-purge.c Log Message: Added dynamic sleep to give other transactions the possibility to run. Index: perfparse-db-purge.c =================================================================== RCS file: /cvsroot/perfparse/_perfparse/db_tools/perfparse-db-purge.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** perfparse-db-purge.c 31 Oct 2006 22:01:47 -0000 1.4 --- perfparse-db-purge.c 31 Oct 2006 22:55:25 -0000 1.5 *************** *** 42,45 **** --- 42,46 ---- #include <gettext.h> #include <locale.h> + #include <math.h> /* Debug / Output definitions: */ *************** *** 66,69 **** --- 67,72 ---- /* Accounting */ int iDeleted = 0; + time_t iStartTime; + /* Options */ int bNoRaw = FALSE; *************** *** 92,95 **** --- 95,102 ---- }; + // Start measuring time. The purge should make regular small pauses + // to make it possible for other transactions to write to the tables. + iStartTime=time(NULL); + setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); *************** *** 139,142 **** --- 146,162 ---- } + void check_need_for_sleep(void) + { + if(time(NULL)-iStartTime < 60) { + return; + } else { + sleep((int) ceil((float)(time(NULL)-iStartTime)/60.0)); // sleep one second for every minute + #ifdef DEBUG + printf("Sleeped %d seconds for other transactions",(int) ceil((float)(time(NULL)-iStartTime)/60.0)); + #endif + iStartTime=time(NULL); + } + } + /*************************************** * *************** *** 187,190 **** --- 207,211 ---- "WHERE perfdata_service.raw_delete_policy_type = 'host' " "AND perfdata_service.host_name = perfdata_host.host_name "); + check_need_for_sleep(); query_no_return("UPDATE perfdata_service_metric,perfdata_delete_policy " *************** *** 257,260 **** --- 278,282 ---- iCountMetric = query_int("SELECT COUNT(*) FROM perfdata_service_metric WHERE is_deleted = 1"); + check_need_for_sleep(); if (iCountHost == 0 && iCountService == 0 && iCountMetric == 0) { printf(_("+-----------------------------------------------------------------------------+\n")); *************** *** 324,327 **** --- 346,350 ---- } + check_need_for_sleep(); if (iCountService) { *************** *** 348,351 **** --- 371,375 ---- } + check_need_for_sleep(); if (iCountMetric) { *************** *** 366,369 **** --- 390,394 ---- } + check_need_for_sleep(); if (iCountHost) { *************** *** 390,393 **** --- 415,419 ---- } + check_need_for_sleep(); if (iCountService) { *************** *** 414,417 **** --- 440,444 ---- } + check_need_for_sleep(); if (iCountMetric) { *************** *** 432,435 **** --- 459,463 ---- } + check_need_for_sleep(); *************** *** 459,462 **** --- 487,491 ---- } + check_need_for_sleep(); if (iCountService) { *************** *** 482,485 **** --- 511,515 ---- } + check_need_for_sleep(); *************** *** 507,510 **** --- 537,541 ---- } + check_need_for_sleep(); *************** *** 531,534 **** --- 562,566 ---- } + check_need_for_sleep(); *************** *** 558,561 **** --- 590,594 ---- } + check_need_for_sleep(); if (iCountService) { *************** *** 582,585 **** --- 615,619 ---- } + check_need_for_sleep(); *************** *** 608,611 **** --- 642,646 ---- } + check_need_for_sleep(); *************** *** 633,636 **** --- 668,672 ---- } + check_need_for_sleep(); *************** *** 654,657 **** --- 690,694 ---- } + check_need_for_sleep(); /* Metrics */ *************** *** 680,683 **** --- 717,721 ---- } + check_need_for_sleep(); if (iCountService) { *************** *** 704,707 **** --- 742,746 ---- } + check_need_for_sleep(); if (iCountMetric) { *************** *** 720,723 **** --- 759,763 ---- } + check_need_for_sleep(); /* Service */ *************** *** 745,748 **** --- 785,789 ---- } + check_need_for_sleep(); *************** *** 766,769 **** --- 807,811 ---- } + check_need_for_sleep(); *************** *** 789,792 **** --- 831,835 ---- } + check_need_for_sleep(); *************** *** 795,798 **** --- 838,842 ---- printf(_("| %-66s %08d |\n"), _("Total Records deleted:"), iDelete); } + check_need_for_sleep(); } *************** *** 817,820 **** --- 861,865 ---- iDelete += iRowsAffected; iDeleted += iDelete; + check_need_for_sleep(); *************** *** 824,827 **** --- 869,873 ---- iDelete += iRowsAffected; iDeleted += iDelete; + check_need_for_sleep(); *************** *** 843,846 **** --- 889,893 ---- query("SELECT host_name, service_description, metric, bin_delete_policy FROM perfdata_service_metric WHERE bin_delete_policy IS NOT NULL"); + check_need_for_sleep(); #ifdef USE_DB_MYSQL while ((result_row = mysql_fetch_row(query_result))) { *************** *** 890,893 **** --- 937,941 ---- query_no_return(s_SQL->str); iDeleted += iRowsAffected; + check_need_for_sleep(); #endif *************** *** 914,917 **** --- 962,966 ---- query("SELECT host_name, service_description, raw_delete_policy FROM perfdata_service WHERE raw_delete_policy IS NOT NULL"); + check_need_for_sleep(); #ifdef USE_DB_MYSQL while ((result_row = mysql_fetch_row(query_result))) { *************** *** 965,968 **** --- 1014,1018 ---- query_no_return(s_SQL->str); iDeleted += iRowsAffected; + check_need_for_sleep(); #endif |