[SCM] CTDB repository - branch master updated - ctdb-1.0.105-62-gcc99c05
Ronnie Sahlberg
sahlberg at samba.org
Thu Dec 3 17:48:04 MST 2009
The branch, master has been updated
via cc99c05c0c6484ad574039a454e6133852cb41fa (commit)
via c5cbb95512f034abeec515579983bf7ac55eadd9 (commit)
from 0a0526e03ef995b6b6634f5b75c7a17cb7b5df8f (commit)
http://gitweb.samba.org/?p=sahlberg/ctdb.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit cc99c05c0c6484ad574039a454e6133852cb41fa
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date: Fri Dec 4 11:45:37 2009 +1100
Dont store debug level DEBUG_DEBUG in the in-memory ringbuffer.
It is unlikely we will need something this verbose for normal troubleshooting.
This allows us to keep a significantly longer time interval of log messages
in the 500k slots available in the ringbuffer.
commit c5cbb95512f034abeec515579983bf7ac55eadd9
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date: Fri Dec 4 11:36:27 2009 +1100
Use statically allocated ringbuffer to store the last 500k log entries
in memory instead of dynamically allocated ones so that we reduce the pressure
on malloc/free.
-----------------------------------------------------------------------
Summary of changes:
common/ctdb_logging.c | 20 +++++++++-----------
include/includes.h | 2 +-
lib/util/debug.c | 2 +-
3 files changed, 11 insertions(+), 13 deletions(-)
Changeset truncated at 500 lines:
diff --git a/common/ctdb_logging.c b/common/ctdb_logging.c
index efb47c6..64507f4 100644
--- a/common/ctdb_logging.c
+++ b/common/ctdb_logging.c
@@ -24,15 +24,18 @@
#include "../include/ctdb_private.h"
#include "../include/ctdb.h"
+#define MAX_LOG_ENTRIES 500000
+#define MAX_LOG_SIZE 128
+
+static int first_entry;
+static int last_entry;
+
struct ctdb_log_entry {
int32_t level;
struct timeval t;
- char *message;
+ char message[MAX_LOG_SIZE];
};
-#define MAX_LOG_ENTRIES 500000
-static int first_entry;
-static int last_entry;
static struct ctdb_log_entry log_entries[MAX_LOG_ENTRIES];
@@ -42,21 +45,16 @@ static struct ctdb_log_entry log_entries[MAX_LOG_ENTRIES];
static void log_ringbuffer_v(const char *format, va_list ap)
{
int ret;
- char *s = NULL;
- if (log_entries[last_entry].message != NULL) {
- free(log_entries[last_entry].message);
- log_entries[last_entry].message = NULL;
- }
+ log_entries[last_entry].message[0] = '\0';
- ret = vasprintf(&s, format, ap);
+ ret = vsnprintf(&log_entries[last_entry].message[0], MAX_LOG_SIZE, format, ap);
if (ret == -1) {
return;
}
log_entries[last_entry].level = this_log_level;
log_entries[last_entry].t = timeval_current();
- log_entries[last_entry].message = s;
last_entry++;
if (last_entry >= MAX_LOG_ENTRIES) {
diff --git a/include/includes.h b/include/includes.h
index 4b4d242..b7e2105 100644
--- a/include/includes.h
+++ b/include/includes.h
@@ -28,7 +28,7 @@ enum debug_level {
DEBUG_DEBUG = 4,
};
-#define DEBUG(lvl, x) do { this_log_level = (lvl); log_ringbuffer x; if ((lvl) <= LogLevel) { do_debug x; }} while (0)
+#define DEBUG(lvl, x) do { this_log_level = (lvl); if ((lvl) < DEBUG_DEBUG) { log_ringbuffer x; } if ((lvl) <= LogLevel) { do_debug x; }} while (0)
#define _PUBLIC_
diff --git a/lib/util/debug.c b/lib/util/debug.c
index 6597570..d4d3bd6 100644
--- a/lib/util/debug.c
+++ b/lib/util/debug.c
@@ -90,7 +90,7 @@ void do_debug_add(const char *format, ...)
}
#define DEBUGLVL(lvl) ((lvl) <= LogLevel)
-#define DEBUG(lvl, x) do { this_log_level = (lvl); log_ringbuffer x; if ((lvl) <= LogLevel) { do_debug x; }} while (0)
+#define DEBUG(lvl, x) do { this_log_level = (lvl); if ((lvl) < DEBUG_DEBUG) { log_ringbuffer x; } if ((lvl) <= LogLevel) { do_debug x; }} while (0)
#define DEBUGADD(lvl, x) do { if ((lvl) <= LogLevel) { this_log_level = (lvl); do_debug_add x; }} while (0)
static void print_asc(int level, const uint8_t *buf, size_t len)
--
CTDB repository
More information about the samba-cvs
mailing list