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