From 18902f5d4f42ed4ad0aff7485346b4b4cfb96d72 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michal=20Voc=C5=AF?= Date: Tue, 8 Feb 2011 08:51:30 +0000 Subject: [PATCH] write some statistical info --- org.glite.lb.logger-msg/Makefile | 2 +- .../src/activemq_cpp_plugin.cpp | 2 ++ org.glite.lb.logger/interface/interlogd.h | 2 ++ org.glite.lb.logger/src/event_store.c | 5 ++++ org.glite.lb.logger/src/queue_thread.c | 29 ++++++++++++++++++++++ org.glite.lb.logger/src/send_event.c | 7 ++++-- 6 files changed, 44 insertions(+), 3 deletions(-) diff --git a/org.glite.lb.logger-msg/Makefile b/org.glite.lb.logger-msg/Makefile index 97a1019..0a1d817 100644 --- a/org.glite.lb.logger-msg/Makefile +++ b/org.glite.lb.logger-msg/Makefile @@ -77,7 +77,7 @@ PLUGIN_LIB:=activemq_cpp_plugin.la default: all -all compile: ${PLUGIN_LIB} +all compile: ${PLUGIN_LIB} ${PLUGIN_LIB}: ${PLUGIN_LOBJS} ${SOLINK} -o $@ ${PLUGIN_LOBJS} ${EXT_LIB} diff --git a/org.glite.lb.logger-msg/src/activemq_cpp_plugin.cpp b/org.glite.lb.logger-msg/src/activemq_cpp_plugin.cpp index 7e788c7..21098d3 100644 --- a/org.glite.lb.logger-msg/src/activemq_cpp_plugin.cpp +++ b/org.glite.lb.logger-msg/src/activemq_cpp_plugin.cpp @@ -324,6 +324,7 @@ event_queue_connect(struct event_queue *eq, struct queue_thread *me) return 0; } me->first_event_sent = 0; + eq->last_connected= time(NULL); return 1; } @@ -417,6 +418,7 @@ event_queue_send(struct event_queue *eq, struct queue_thread *me) } event_queue_remove(eq, me); me->first_event_sent = 1; + eq->last_sent = time(NULL); } edg_wll_FreeContext(context); return 1; diff --git a/org.glite.lb.logger/interface/interlogd.h b/org.glite.lb.logger/interface/interlogd.h index 8ddb5b9..10f0bbf 100644 --- a/org.glite.lb.logger/interface/interlogd.h +++ b/org.glite.lb.logger/interface/interlogd.h @@ -210,6 +210,8 @@ struct event_queue { int max_len; /* max queue length */ int cur_len; /* current length */ int throttling; /* event insertion suspend flag */ + time_t last_connected; /* time of the last successful connection */ + time_t last_sent; /* time the last event was sent */ /* delivery methods */ int (*event_queue_connect)(struct event_queue *, struct queue_thread *); int (*event_queue_send)(struct event_queue *, struct queue_thread *); diff --git a/org.glite.lb.logger/src/event_store.c b/org.glite.lb.logger/src/event_store.c index 1813f35..8e88d00 100644 --- a/org.glite.lb.logger/src/event_store.c +++ b/org.glite.lb.logger/src/event_store.c @@ -1390,6 +1390,11 @@ event_store_init(char *prefix) s[4] == '\0') continue; + /* skip all statistic files */ + if((s=strstr(entry->d_name, ".stat")) != NULL && + s[5] == '\0') + continue; + s = malloc(strlen(dir) + strlen(entry->d_name) + 2); if(s == NULL) { free(dir); diff --git a/org.glite.lb.logger/src/queue_thread.c b/org.glite.lb.logger/src/queue_thread.c index a8e4c4a..51769aa 100644 --- a/org.glite.lb.logger/src/queue_thread.c +++ b/org.glite.lb.logger/src/queue_thread.c @@ -22,6 +22,7 @@ limitations under the License. #include #include #include +#include #include "interlogd.h" @@ -62,6 +63,33 @@ cmp_expires(struct server_msg *msg, void *data) return (msg->expires > 0) && (msg->expires < *t); } +extern char *file_prefix; + +static +void +event_queue_write_stat(struct event_queue *eq) { + FILE *statfile; + char fn[MAXPATHLEN]; + + snprintf(fn, sizeof(fn), "%s.%s.stat", file_prefix, eq->dest_name); + statfile = fopen(fn, "w"); + if(NULL == statfile) { + glite_common_log(IL_LOG_CATEGORY, LOG_PRIORITY_WARN, + "Error opening destination stat file %s: %s", + fn, strerror(errno)); + return; + } + if(fprintf(statfile, "last_connected=%ld\nlast_sent=%ld\n", + eq->last_connected, + eq->last_sent) < 0) { + glite_common_log(IL_LOG_CATEGORY, LOG_PRIORITY_WARN, + "Error writing destination statistics into %s: %s", + fn, strerror(errno)); + } + fclose(statfile); +} + + static void * queue_thread(void *q) @@ -225,6 +253,7 @@ queue_thread(void *q) eq->dest); } } + event_queue_write_stat(eq); } #if defined(INTERLOGD_HANDLE_CMD) && defined(INTERLOGD_FLUSH) diff --git a/org.glite.lb.logger/src/send_event.c b/org.glite.lb.logger/src/send_event.c index 1bb7e9b..0be4a7a 100644 --- a/org.glite.lb.logger/src/send_event.c +++ b/org.glite.lb.logger/src/send_event.c @@ -241,6 +241,7 @@ event_queue_connect(struct event_queue *eq, struct queue_thread *me) } #endif + eq->last_connected = time(NULL); return(1); } @@ -354,8 +355,8 @@ event_queue_send(struct event_queue *eq, struct queue_thread *me) case LB_NOMEM: /* NOT USED: case LB_SYS: */ /* NOT USED: case LB_AUTH: */ - case LB_PERM: - case LB_DBERR: + + case LB_DBERR: /* non fatal errors (for us) */ me->timeout = TIMEOUT; return(0); @@ -363,6 +364,7 @@ event_queue_send(struct event_queue *eq, struct queue_thread *me) case LB_OK: /* event succesfully delivered */ + case LB_PERM: default: /* LB_PROTO */ /* the event was not accepted by the server */ /* update the event pointer */ @@ -385,6 +387,7 @@ event_queue_send(struct event_queue *eq, struct queue_thread *me) event_queue_remove(eq, me); me->first_event_sent = 1; + eq->last_sent = time(NULL); break; } /* switch */ -- 1.8.2.3