From 4111340abfd7355df127ce50aa264cfcb9ae024c Mon Sep 17 00:00:00 2001 From: Hao Wu Date: Fri, 13 Nov 2020 14:02:23 +0530 Subject: [PATCH] Make the macro of FAULT_INJECTOR configurable Definition FAULT_INJECTOR is hardcoded in a header(pg_config_manual.h) file. Fault injector is useful, but it may introduce some issues in production stage, like runtime cost, security problems. It's better to enable this feature in development and disable it in release. The --enable-debug-extensions configure option is used to control this feature. --- configure | 6 ++++-- configure.in | 6 ++++-- src/include/pg_config.h.in | 3 +++ src/include/pg_config_manual.h | 5 ----- src/include/utils/faultinjector.h | 2 +- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/configure b/configure index c089c678e6..9779dce326 100755 --- a/configure +++ b/configure @@ -3414,7 +3414,9 @@ if test "${enable_debug_extensions+set}" = set; then : enableval=$enable_debug_extensions; case $enableval in yes) - : + +$as_echo "#define FAULT_INJECTOR 1" >>confdefs.h + ;; no) : @@ -3426,7 +3428,7 @@ if test "${enable_debug_extensions+set}" = set; then : else enable_debug_extensions=yes - +$as_echo "#define FAULT_INJECTOR 1" >>confdefs.h fi diff --git a/configure.in b/configure.in index 5fa9ab0a00..de32e662cc 100644 --- a/configure.in +++ b/configure.in @@ -229,8 +229,10 @@ AC_SUBST(enable_pxf) # # include debug extensions in gpcontrib # -PGAC_ARG_BOOL(enable, debug-extensions, yes, - [exclude debug extensions in gpcontrib]) +PGAC_ARG_BOOL (enable, debug-extensions, yes, + [exclude debug extensions in gpcontrib], + [AC_DEFINE([FAULT_INJECTOR], 1, + [Define to 1 to build with fault injector. (--enable-faultinjector)])]) AC_SUBST(enable_debug_extensions) # diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in index 6be44a83d4..3adb8c7bff 100644 --- a/src/include/pg_config.h.in +++ b/src/include/pg_config.h.in @@ -61,6 +61,9 @@ (--enable-thread-safety) */ #undef ENABLE_THREAD_SAFETY +/* Define to 1 to build with fault injector. (--enable-debug-extensions) */ +#undef FAULT_INJECTOR + /* Define to nothing if C supports flexible array members, and to 1 if it does not. That way, with a declaration like `struct s { int n; double d[FLEXIBLE_ARRAY_MEMBER]; };', the struct hack can be used with pre-C99 diff --git a/src/include/pg_config_manual.h b/src/include/pg_config_manual.h index e6806509cc..d7c6ca0c91 100644 --- a/src/include/pg_config_manual.h +++ b/src/include/pg_config_manual.h @@ -315,11 +315,6 @@ */ /* #define WAL_DEBUG */ -/* - * Enable injecting faults. - */ -#define FAULT_INJECTOR 1 - /* * Enable tracing of resource consumption during sort operations; * see also the trace_sort GUC var. For 8.1 this is enabled by default. diff --git a/src/include/utils/faultinjector.h b/src/include/utils/faultinjector.h index 10a84e24fb..e8214023d3 100644 --- a/src/include/utils/faultinjector.h +++ b/src/include/utils/faultinjector.h @@ -9,7 +9,7 @@ #ifndef FAULTINJECTOR_H #define FAULTINJECTOR_H -#include "pg_config_manual.h" +#include "pg_config.h" #define FAULTINJECTOR_MAX_SLOTS 16 -- GitLab