write some statistical info
authorMichal Voců <michal@ruk.cuni.cz>
Tue, 8 Feb 2011 08:51:30 +0000 (08:51 +0000)
committerMichal Voců <michal@ruk.cuni.cz>
Tue, 8 Feb 2011 08:51:30 +0000 (08:51 +0000)
org.glite.lb.logger-msg/Makefile
org.glite.lb.logger-msg/src/activemq_cpp_plugin.cpp
org.glite.lb.logger/interface/interlogd.h
org.glite.lb.logger/src/event_store.c
org.glite.lb.logger/src/queue_thread.c
org.glite.lb.logger/src/send_event.c

index 97a1019..0a1d817 100644 (file)
@@ -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}
index 7e788c7..21098d3 100644 (file)
@@ -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;
index 8ddb5b9..10f0bbf 100644 (file)
@@ -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 *);
index 1813f35..8e88d00 100644 (file)
@@ -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);
index a8e4c4a..51769aa 100644 (file)
@@ -22,6 +22,7 @@ limitations under the License.
 #include <errno.h>
 #include <signal.h>
 #include <unistd.h>
+#include <sys/param.h>
 
 #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)
index 1bb7e9b..0be4a7a 100644 (file)
@@ -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 */