diff options
author | Yaniv Kaul <ykaul@redhat.com> | 2018-09-10 17:04:30 +0300 |
---|---|---|
committer | Atin Mukherjee <amukherj@redhat.com> | 2018-09-11 07:10:48 +0000 |
commit | 8ac8f359b24c8583eb1a15b9926929770b869db8 (patch) | |
tree | bc903225e4d77c9501f001f6f8be5181eb1cd30f | |
parent | 170e848b940615eb9f366211d7a79cc3033902cb (diff) |
mgmt xlators: store boolean fields using integer
Surprisingly, there is not set_boolean() as there is a get_boolean()
In fact, it is stored as an INT dictionary type.
In some occasions it was stored using a string, and this caused
errors such as:
key gfproxy-server, integer type asked, has string type [Invalid argument]
I've fixed what I saw in some logs, I'm sure there are more.
The CORRECT fix is to create a boolean set and use it, but this
requires a bit more work. I'll see if I can do it later on.
Only compile-tested!
updates: bz#1193929
Signed-off-by: Yaniv Kaul <ykaul@redhat.com>
Change-Id: I45fd0c7a0824b2f42b8ce510296c9dfa4f32ad66
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-op-sm.c | 4 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volgen.c | 15 |
2 files changed, 11 insertions, 8 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index f8e30d060a4..d7b1446204d 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -1555,8 +1555,8 @@ cont: * TODO: Remove this and the other places this is referred once * 3.3.x compatibility is not required */ - ret = dict_set_uint32 (dict, "check-op-version", - _gf_true); + ret = dict_set_int32n (dict, "check-op-version", + SLEN ("check-op-version"), 1); if (ret) { gf_msg (this->name, GF_LOG_ERROR, 0, GD_MSG_DICT_SET_FAILED, diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c index 3e56eb36508..166d52394f1 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.c +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c @@ -1553,7 +1553,8 @@ gfproxy_server_graph_builder (volgen_graph_t *graph, if (ret != 0) goto out; - ret = dict_set_str (set_dict, "gfproxy-server", "on"); + ret = dict_set_int32n (set_dict, "gfproxy-server", + SLEN ("gfproxy-server"), 1); if (ret != 0) goto out; @@ -1562,8 +1563,8 @@ gfproxy_server_graph_builder (volgen_graph_t *graph, /* Clear this setting so that future users of set_dict do not end up * thinking they are a gfproxy server */ - dict_del (set_dict, "gfproxy-server"); - dict_del (set_dict, "trusted-client"); + dict_deln (set_dict, "gfproxy-server", SLEN ("gfproxy-server")); + dict_deln (set_dict, "trusted-client", SLEN ("trusted-client")); /* Then add the server to it */ get_vol_transport_type (volinfo, transt); @@ -6218,7 +6219,8 @@ generate_client_volfiles (glusterd_volinfo_t *volinfo, glusterd_get_gfproxy_client_volfile (volinfo, filepath, PATH_MAX); - ret = dict_set_str (dict, "gfproxy-client", "on"); + ret = dict_set_int32n (dict, "gfproxy-client", + SLEN ("gfproxy-client"), 1); } else { ret = glusterd_get_client_filepath (filepath, volinfo, @@ -6851,7 +6853,8 @@ validate_shdopts (glusterd_volinfo_t *volinfo, ret = 0; goto out; } - ret = dict_set_str (val_dict, "graph-check", "on"); + ret = dict_set_int32n (val_dict, "graph-check", + SLEN ("graph-check"), 1); if (ret) goto out; ret = build_shd_graph (&graph, val_dict); @@ -6862,7 +6865,7 @@ validate_shdopts (glusterd_volinfo_t *volinfo, gf_msg_debug ("glusterd", 0, "Returning %d", ret); out: - dict_del (val_dict, "graph-check"); + dict_deln (val_dict, "graph-check", SLEN ("graph-check")); return ret; } |