Blob Blame History Raw
From bd6e817e5272069500e3504c0db669a119c08b68 Mon Sep 17 00:00:00 2001
From: Aravinda VK <avishwan@redhat.com>
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 <jenkins@build.gluster.org>
> Reviewed-by: Niels de Vos <ndevos@redhat.com>
> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>

BUG: 1351589
Change-Id: Ia6abfe9c1e46a7640c4d8ff5ccf0e9c30c87f928
Signed-off-by: Aravinda VK <avishwan@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/84742
Reviewed-by: Milind Changire <mchangir@redhat.com>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
---
 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 <stdio.h>
-
 #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 <pthread.h>
 #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