summaryrefslogtreecommitdiffstats
path: root/xlators
diff options
context:
space:
mode:
Diffstat (limited to 'xlators')
-rw-r--r--xlators/cluster/dht/src/dht-common.c6
-rw-r--r--xlators/cluster/dht/src/dht-common.h1
-rw-r--r--xlators/cluster/dht/src/dht.c17
3 files changed, 24 insertions, 0 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c
index c89b809b49f..5cf19d017a9 100644
--- a/xlators/cluster/dht/src/dht-common.c
+++ b/xlators/cluster/dht/src/dht-common.c
@@ -5164,6 +5164,12 @@ dht_notify (xlator_t *this, int event, void *data, ...)
case GF_EVENT_CHILD_DOWN:
subvol = data;
+ if (conf->assert_no_child_down) {
+ gf_log (this->name, GF_LOG_WARNING,
+ "Received CHILD_DOWN. Exiting");
+ exit(0);
+ }
+
for (i = 0; i < conf->subvolume_cnt; i++) {
if (subvol == conf->subvolumes[i]) {
cnt = i;
diff --git a/xlators/cluster/dht/src/dht-common.h b/xlators/cluster/dht/src/dht-common.h
index 9c39d0d63b8..67cc16e4304 100644
--- a/xlators/cluster/dht/src/dht-common.h
+++ b/xlators/cluster/dht/src/dht-common.h
@@ -165,6 +165,7 @@ struct dht_conf {
dht */
gf_boolean_t use_readdirp;
char vol_uuid[UUID_SIZE + 1];
+ gf_boolean_t assert_no_child_down;
};
typedef struct dht_conf dht_conf_t;
diff --git a/xlators/cluster/dht/src/dht.c b/xlators/cluster/dht/src/dht.c
index c9b77d64428..ad83d8d4f03 100644
--- a/xlators/cluster/dht/src/dht.c
+++ b/xlators/cluster/dht/src/dht.c
@@ -419,6 +419,19 @@ init (xlator_t *this)
}
}
+ conf->assert_no_child_down = 0;
+
+ if (!dict_get_str (this->options, "assert-no-child-down", &temp_str)) {
+ if (!strncmp (temp_str, "on", strlen (temp_str))) {
+ conf->assert_no_child_down = 1;
+ gf_log (this->name, GF_LOG_INFO,
+ "assert-no-child-down set to on");
+ } else {
+ conf->assert_no_child_down = 0;
+ gf_log (this->name, GF_LOG_INFO,
+ "assert-no-child-down set to off");
+ }
+ }
ret = dht_init_subvolumes (this, conf);
if (ret == -1) {
@@ -543,5 +556,9 @@ struct volume_options options[] = {
{ .key = {"use-readdirp"},
.type = GF_OPTION_TYPE_BOOL
},
+ { .key = {"assert-no-child-down"},
+ .value = {"on", "off"},
+ .type = GF_OPTION_TYPE_STR
+ },
{ .key = {NULL} },
};