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