Changeset: 804426b5fa79 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/804426b5fa79
Modified Files:
gdk/gdk_heap.c
gdk/gdk_logger.c
tools/mserver/mserver5.c
Branch: Dec2025
Log Message:
Fix error handling with testing mask.
If running under Mtest.py, we want USR1 output when heap allocations
fail. The test was reversed so that didn't happen.
Also, we only want a delay when triggering USR1 output when it is
initiated by the server itself, not when there was an actual signal.
diffs (85 lines):
diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -159,7 +159,7 @@ HEAPalloc(Heap *h, size_t nitems, size_t
!MT_thread_override_limits()) {
GDKerror("allocating too much memory (current: %zu, requested:
%zu, limit: %zu)\n", GDKvm_cursize(), h->size, GDK_vm_maxsize);
if (GDKtriggerusr1 &&
- !(ATOMIC_GET(&GDKdebug) & TESTINGMASK))
+ (ATOMIC_GET(&GDKdebug) & TESTINGMASK))
(*GDKtriggerusr1)();
return GDK_FAIL;
}
@@ -265,7 +265,7 @@ HEAPextend(Heap *h, size_t size, bool ma
!MT_thread_override_limits()) {
GDKerror("allocating too much memory (current: %zu, requested:
%zu, limit: %zu)\n", GDKvm_cursize(), size - h->size, GDK_vm_maxsize);
if (GDKtriggerusr1 &&
- !(ATOMIC_GET(&GDKdebug) & TESTINGMASK))
+ (ATOMIC_GET(&GDKdebug) & TESTINGMASK))
(*GDKtriggerusr1)();
return GDK_FAIL;
}
@@ -782,7 +782,7 @@ HEAPload(Heap *h, const char *nme, const
!MT_thread_override_limits()) {
GDKerror("allocating too much memory (current: %zu, requested:
%zu, limit: %zu)\n", GDKvm_cursize(), h->size, GDK_vm_maxsize);
if (GDKtriggerusr1 &&
- !(ATOMIC_GET(&GDKdebug) & TESTINGMASK))
+ (ATOMIC_GET(&GDKdebug) & TESTINGMASK))
(*GDKtriggerusr1)();
return GDK_FAIL;
}
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2620,7 +2620,7 @@ log_new(int debug, const char *fn, const
int max_pending = GDKgetenv_int("wal_max_pending", 5);
lng max_file_size = 0;
- if (GDKdebug & TESTINGMASK) {
+ if (ATOMIC_GET(&GDKdebug) & TESTINGMASK) {
max_file_size = 2048; /* 2 KiB */
} else {
const char *max_file_size_str = GDKgetenv("wal_max_file_size");
@@ -2932,7 +2932,7 @@ log_flush(logger *lg, ulng ts)
lg->cur_max_pending *= 2; /* when to warn again */
TRC_WARNING(GDK, "Too many pending log files " ULLFMT
"\n", (lg->id - lg->saved_id));
if (GDKtriggerusr1 &&
- !(ATOMIC_GET(&GDKdebug) & TESTINGMASK))
+ (ATOMIC_GET(&GDKdebug) & TESTINGMASK))
(*GDKtriggerusr1)();
}
/* log files went down, reduce cur_max_pending */
diff --git a/tools/mserver/mserver5.c b/tools/mserver/mserver5.c
--- a/tools/mserver/mserver5.c
+++ b/tools/mserver/mserver5.c
@@ -236,9 +236,16 @@ static volatile sig_atomic_t usr1_interr
static volatile sig_atomic_t usr2_interrupted = 0;
static void
+handler_usr1(int sig)
+{
+ (void) sig;
+ usr1_interrupted = 1;
+}
+
+static void
usr1trigger(void)
{
- usr1_interrupted = 1;
+ handler_usr1(0);
MT_sleep_ms(150); /* sleep slightly longer than delay for handling usr1
*/
}
@@ -258,12 +265,6 @@ handler(int sig)
interrupted = 1;
}
static void
-handler_usr1(int sig)
-{
- (void) sig;
- usr1trigger();
-}
-static void
handler_usr2(int sig)
{
(void) sig;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]