Changeset: 1edc0b9924da for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1edc0b9924da
Modified Files:
clients/Tests/exports.stable.out
gdk/gdk.h
gdk/gdk_logger.c
gdk/gdk_private.h
gdk/gdk_utils.c
tools/mserver/mserver5.c
Branch: default
Log Message:
Trigger USR1 output when there are too many pending log files.
diffs (97 lines):
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -345,6 +345,7 @@ gdk_return GDKtracer_set_tracefile(const
gdk_return GDKtracer_stop(void);
gdk_return GDKupgradevarheap(BAT *b, var_t v, BUN cap, BUN ncopy)
__attribute__((__warn_unused_result__));
lng GDKusec(void);
+void GDKusr1triggerCB(void (*func)(void));
const char *GDKversion(void) __attribute__((__const__));
size_t GDKvm_cursize(void);
void *GDKzalloc(size_t size) __attribute__((__malloc__))
__attribute__((__malloc__(GDKfree, 1))) __attribute__((__alloc_size__(1)))
__attribute__((__warn_unused_result__));
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -2496,6 +2496,7 @@ gdk_export gdk_return gdk_add_callback(c
int argc, void *argv[], int interval);
gdk_export gdk_return gdk_remove_callback(const char *, gdk_callback_func *f);
+gdk_export void GDKusr1triggerCB(void (*func)(void));
#define SQLSTATE(sqlstate) #sqlstate "!"
#define MAL_MALLOC_FAIL "Could not allocate space"
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2746,6 +2746,8 @@ log_flush(logger *lg, ulng ts)
if (lg->saved_id + lg->cur_max_pending > lg->id) {
lg->cur_max_pending *= 2; /* when too warn again */
TRC_WARNING(GDK, "Too many pending log files " LLFMT
"\n", (lg->id - lg->saved_id));
+ if (GDKtriggerusr1)
+ (*GDKtriggerusr1)();
}
/* log files went down, reduce cur_max_pending */
if (lg->cur_max_pending > lg->max_pending && (int)(lg->id -
lg->saved_id) < (lg->cur_max_pending/2))
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -457,6 +457,8 @@ extern dbl no_hash_select_fraction;
#define HASH_DESTROY_CHAIN_LENGTH 1000
extern BUN hash_destroy_chain_length;
+extern void (*GDKtriggerusr1)(void);
+
#if !defined(NDEBUG) && !defined(__COVERITY__)
/* see comment in gdk.h */
#ifdef __GNUC__
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -2061,6 +2061,13 @@ GDKprintinfo(void)
printf("SIGUSR1 info end\n");
}
+void (*GDKtriggerusr1)(void);
+void
+GDKusr1triggerCB(void (*func)(void))
+{
+ GDKtriggerusr1 = func;
+}
+
exception_buffer *
eb_init(exception_buffer *eb)
{
diff --git a/tools/mserver/mserver5.c b/tools/mserver/mserver5.c
--- a/tools/mserver/mserver5.c
+++ b/tools/mserver/mserver5.c
@@ -247,6 +247,12 @@ emergencyBreakpoint(void)
static volatile sig_atomic_t interrupted = 0;
static volatile sig_atomic_t usr1_interrupted = 0;
+static void
+usr1trigger(void)
+{
+ usr1_interrupted = 1;
+}
+
#ifdef _MSC_VER
static BOOL WINAPI
winhandler(DWORD type)
@@ -266,7 +272,7 @@ static void
handler_usr1(int sig)
{
(void) sig;
- usr1_interrupted = 1;
+ usr1trigger();
}
#endif
@@ -900,6 +906,8 @@ main(int argc, char **av)
/* return all our free bats to global pool */
BBPrelinquishbats();
+ GDKusr1triggerCB(usr1trigger);
+
#ifdef _MSC_VER
printf("# MonetDB server is started. To stop server press Ctrl-C.\n");
fflush(stdout);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]