From bd6e817e5272069500e3504c0db669a119c08b68 Mon Sep 17 00:00:00 2001 From: Aravinda VK Date: Thu, 18 Aug 2016 14:51:44 +0530 Subject: [PATCH 36/79] eventsapi: Fix disable-events issue Events related sources are not loaded in libglusterfs when configure is run with --disable-events option. Due to this every call of gf_event should be guarded with USE_EVENTS macro. To prevent this, USE_EVENTS macro was included in events.c itself(Patch #15054) Instead of disabling building entire directory "events", selectively disabled the code. So that constants and empty function gf_event is exposed. Code will not fail even if gf_event is called when events is disabled. > Reviewed-on: http://review.gluster.org/15198 > Smoke: Gluster Build System > Reviewed-by: Niels de Vos > CentOS-regression: Gluster Build System > NetBSD-regression: NetBSD Build System BUG: 1351589 Change-Id: Ia6abfe9c1e46a7640c4d8ff5ccf0e9c30c87f928 Signed-off-by: Aravinda VK Reviewed-on: https://code.engineering.redhat.com/gerrit/84742 Reviewed-by: Milind Changire Reviewed-by: Atin Mukherjee --- Makefile.am | 2 +- cli/src/cli-cmd-peer.c | 1 + cli/src/cli-cmd-volume.c | 1 + configure.ac | 1 - events/Makefile.am | 4 +++- events/src/Makefile.am | 15 ++++++++++----- events/src/eventsapiconf.py.in | 1 + events/src/gf_event.py | 5 ++++- events/tools/Makefile.am | 5 ++++- libglusterfs/src/Makefile.am | 14 ++++++-------- libglusterfs/src/events.c | 9 ++++++--- libglusterfs/src/{events.h.in => events.h} | 16 ++++++++++------ libglusterfs/src/glusterfs.h | 4 ---- xlators/features/bit-rot/src/bitd/bit-rot-scrub.c | 1 + xlators/mgmt/glusterd/src/glusterd.h | 1 + 16 files changed, 49 insertions(+), 32 deletions(-) rename libglusterfs/src/{events.h.in => events.h} (71%) diff --git a/Makefile.am b/Makefile.am index 37cbb86..da224c4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -12,7 +12,7 @@ EXTRA_DIST = autogen.sh \ SUBDIRS = $(ARGP_STANDALONE_DIR) libglusterfs rpc api xlators glusterfsd \ $(FUSERMOUNT_SUBDIR) doc extras cli heal @SYNCDAEMON_SUBDIR@ \ - @UMOUNTD_SUBDIR@ tools @EVENTS_SUBDIR@ + @UMOUNTD_SUBDIR@ tools events pkgconfigdir = @pkgconfigdir@ pkgconfig_DATA = glusterfs-api.pc libgfchangelog.pc diff --git a/cli/src/cli-cmd-peer.c b/cli/src/cli-cmd-peer.c index fc72075..4802f71 100644 --- a/cli/src/cli-cmd-peer.c +++ b/cli/src/cli-cmd-peer.c @@ -18,6 +18,7 @@ #include "cli-mem-types.h" #include "cli1-xdr.h" #include "protocol-common.h" +#include "events.h" extern struct rpc_clnt *global_rpc; diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c index 740a867..09cfcee 100644 --- a/cli/src/cli-cmd-volume.c +++ b/cli/src/cli-cmd-volume.c @@ -26,6 +26,7 @@ #include "run.h" #include "syscall.h" #include "common-utils.h" +#include "events.h" extern struct rpc_clnt *global_rpc; extern struct rpc_clnt *global_quotad_rpc; diff --git a/configure.ac b/configure.ac index 2e0323d..e18309d 100644 --- a/configure.ac +++ b/configure.ac @@ -38,7 +38,6 @@ AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile libglusterfs/Makefile libglusterfs/src/Makefile - libglusterfs/src/events.h libglusterfs/src/gfdb/Makefile geo-replication/src/peer_gsec_create geo-replication/src/peer_mountbroker diff --git a/events/Makefile.am b/events/Makefile.am index 04a74ef..264bb74 100644 --- a/events/Makefile.am +++ b/events/Makefile.am @@ -1,6 +1,8 @@ SUBDIRS = src tools - +EXTRA_DIST = eventskeygen.py noinst_PYTHON = eventskeygen.py +if BUILD_EVENTS install-data-hook: $(INSTALL) -d -m 755 $(DESTDIR)@GLUSTERD_WORKDIR@/events +endif diff --git a/events/src/Makefile.am b/events/src/Makefile.am index 423bc88..d292fbe 100644 --- a/events/src/Makefile.am +++ b/events/src/Makefile.am @@ -6,18 +6,21 @@ BUILT_SOURCES = eventtypes.py CLEANFILES = eventtypes.py eventsdir = $(libexecdir)/glusterfs/events +events_PYTHON = __init__.py gf_event.py eventsapiconf.py eventtypes.py \ + utils.py + +eventtypes.py: + $(PYTHON) $(top_srcdir)/events/eventskeygen.py PY_HEADER + +if BUILD_EVENTS eventspeerscriptdir = $(libexecdir)/glusterfs eventsconfdir = $(sysconfdir)/glusterfs eventsconf_DATA = eventsconfig.json -events_PYTHON = __init__.py eventsapiconf.py eventtypes.py handlers.py \ - utils.py gf_event.py +events_PYTHON += handlers.py events_SCRIPTS = glustereventsd.py eventspeerscript_SCRIPTS = peer_eventsapi.py -eventtypes.py: $(top_srcdir)/events/eventskeygen.py - $(PYTHON) $(top_srcdir)/events/eventskeygen.py PY_HEADER - install-exec-hook: $(mkdir_p) $(DESTDIR)$(sbindir) rm -f $(DESTDIR)$(sbindir)/glustereventsd @@ -30,3 +33,5 @@ install-exec-hook: uninstall-hook: rm -f $(DESTDIR)$(sbindir)/glustereventsd rm -f $(DESTDIR)$(sbindir)/gluster-eventsapi + +endif diff --git a/events/src/eventsapiconf.py.in b/events/src/eventsapiconf.py.in index 702e1d2..03dd0e8 100644 --- a/events/src/eventsapiconf.py.in +++ b/events/src/eventsapiconf.py.in @@ -20,3 +20,4 @@ EVENTSD = "glustereventsd" CONFIG_KEYS = ["log_level"] BOOL_CONFIGS = [] RESTART_CONFIGS = [] +EVENTS_ENABLED = @EVENTS_ENABLED@ diff --git a/events/src/gf_event.py b/events/src/gf_event.py index 0924a65..20dfc8a 100644 --- a/events/src/gf_event.py +++ b/events/src/gf_event.py @@ -13,7 +13,7 @@ import socket import time -from eventsapiconf import SERVER_ADDRESS +from eventsapiconf import SERVER_ADDRESS, EVENTS_ENABLED from eventtypes import all_events from utils import logger, setup_logger @@ -23,6 +23,9 @@ setup_logger() def gf_event(event_type, **kwargs): + if EVENTS_ENABLED == 0: + return + if not isinstance(event_type, int) or event_type >= len(all_events): logger.error("Invalid Event Type: {0}".format(event_type)) return diff --git a/events/tools/Makefile.am b/events/tools/Makefile.am index 7d5e331..fb6770c 100644 --- a/events/tools/Makefile.am +++ b/events/tools/Makefile.am @@ -1,3 +1,6 @@ +EXTRA_DIST = eventsdash.py + +if BUILD_EVENTS scriptsdir = $(datadir)/glusterfs/scripts scripts_SCRIPTS = eventsdash.py -EXTRA_DIST = eventsdash.py +endif diff --git a/libglusterfs/src/Makefile.am b/libglusterfs/src/Makefile.am index 66369e2..b7c3116 100644 --- a/libglusterfs/src/Makefile.am +++ b/libglusterfs/src/Makefile.am @@ -38,7 +38,7 @@ libglusterfs_la_SOURCES = dict.c xlator.c logging.c \ nodist_libglusterfs_la_SOURCES = y.tab.c graph.lex.c defaults.c nodist_libglusterfs_la_HEADERS = y.tab.h glusterfs-fops.h cli1-xdr.h -BUILT_SOURCES = graph.lex.c defaults.c glusterfs-fops.h cli1-xdr.h +BUILT_SOURCES = graph.lex.c defaults.c glusterfs-fops.h cli1-xdr.h eventtypes.h libglusterfs_la_HEADERS = common-utils.h defaults.h default-args.h \ dict.h glusterfs.h hashfn.h timespec.h logging.h xlator.h \ @@ -52,7 +52,7 @@ libglusterfs_la_HEADERS = common-utils.h defaults.h default-args.h \ glfs-message-id.h template-component-messages.h strfd.h \ syncop-utils.h parse-utils.h libglusterfs-messages.h tw.h \ lvm-defaults.h quota-common-utils.h rot-buffs.h \ - compat-uuid.h upcall-utils.h + compat-uuid.h upcall-utils.h events.h libglusterfs_ladir = $(includedir)/glusterfs @@ -72,14 +72,12 @@ libglusterfs_la_SOURCES += $(CONTRIBDIR)/uuid/clear.c \ $(CONTRIBDIR)/uuid/unpack.c endif -if BUILD_EVENTS -BUILT_SOURCES += eventtypes.h -libglusterfs_la_SOURCES += events.c - -libglusterfs_la_HEADERS += events.h eventtypes.h -eventtypes.h: $(top_srcdir)/events/eventskeygen.py +eventtypes.h: $(PYTHON) $(top_srcdir)/events/eventskeygen.py C_HEADER + +if BUILD_EVENTS +libglusterfs_la_SOURCES += events.c endif libgfchangelog_HEADERS = changelog.h diff --git a/libglusterfs/src/events.c b/libglusterfs/src/events.c index 2df8c29..f93934d 100644 --- a/libglusterfs/src/events.c +++ b/libglusterfs/src/events.c @@ -20,11 +20,15 @@ #include "mem-pool.h" #include "events.h" + +#define EVENT_PATH DATADIR "/run/gluster/events.sock" +#define EVENTS_MSG_MAX 2048 + + int -gf_event (int event, char *fmt, ...) +gf_event (eventtypes_t event, char *fmt, ...) { int ret = 0; -#if (USE_EVENTS) int sock = -1; char eventstr[EVENTS_MSG_MAX] = ""; struct sockaddr_un server; @@ -80,6 +84,5 @@ gf_event (int event, char *fmt, ...) out: sys_close(sock); GF_FREE(msg); -#endif return ret; } diff --git a/libglusterfs/src/events.h.in b/libglusterfs/src/events.h similarity index 71% rename from libglusterfs/src/events.h.in rename to libglusterfs/src/events.h index 37692be..6b280a0 100644 --- a/libglusterfs/src/events.h.in +++ b/libglusterfs/src/events.h @@ -11,13 +11,17 @@ #ifndef __EVENTS_H__ #define __EVENTS_H__ -#include - #include "eventtypes.h" -#define EVENT_PATH "@localstatedir@/run/gluster/events.sock" -#define EVENTS_MSG_MAX 2048 - -extern int gf_event(int key, char *fmt, ...); +#ifdef USE_EVENTS +int +gf_event (eventtypes_t event, char *fmt, ...); +#else +static inline int +gf_event (eventtypes_t event, char *fmt, ...) +{ + return 0; +} +#endif /* USE_EVENTS */ #endif /* __EVENTS_H__ */ diff --git a/libglusterfs/src/glusterfs.h b/libglusterfs/src/glusterfs.h index cbad737..0cee2ba 100644 --- a/libglusterfs/src/glusterfs.h +++ b/libglusterfs/src/glusterfs.h @@ -37,10 +37,6 @@ #include "lkowner.h" #include "compat-uuid.h" -#if (USE_EVENTS) -#include "events.h" -#endif - #define GF_YES 1 #define GF_NO 0 diff --git a/xlators/features/bit-rot/src/bitd/bit-rot-scrub.c b/xlators/features/bit-rot/src/bitd/bit-rot-scrub.c index 601dea9..abf8dcf 100644 --- a/xlators/features/bit-rot/src/bitd/bit-rot-scrub.c +++ b/xlators/features/bit-rot/src/bitd/bit-rot-scrub.c @@ -20,6 +20,7 @@ #include #include "bit-rot-bitd-messages.h" #include "bit-rot-scrub-status.h" +#include "events.h" struct br_scrubbers { pthread_t scrubthread; diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h index 29aaf64..f5e090d 100644 --- a/xlators/mgmt/glusterd/src/glusterd.h +++ b/xlators/mgmt/glusterd/src/glusterd.h @@ -36,6 +36,7 @@ #include "syncop.h" #include "store.h" #include "glusterd-rcu.h" +#include "events.h" #define GLUSTERD_TR_LOG_SIZE 50 #define GLUSTERD_SOCKET_LISTEN_BACKLOG 128 -- 1.7.1