From d90ed0b9b7160911c3fb8515f2947579d0fd197f Mon Sep 17 00:00:00 2001 From: vmallika Date: Mon, 24 Aug 2015 08:07:14 +0530 Subject: cli: on error invoke cli_cmd_broadcast_response function in separate thread This is a backport of http://review.gluster.org/#/c/11990/ There is a problem in current CLI framework CLI holds the lock when processing command. When processing quota list command, below sequence of steps executed in the same thread and causing deadlock 1) CLI holds the lock 2) Send rpc_clnt_submit request to quotad for quota usage 3) If quotad is down, rpc_clnt_submit invokes cbk function with error 4) cbk function cli_quotad_getlimit_cbk tries to hold lock to broadcast the results and hangs, because same thread has already holding the lock This patch fixes the problem by creating seperate thread for broadcasting the result > Change-Id: I53be006eadf6aaf348083d9168535530d70a8ab3 > BUG: 1242819 > Signed-off-by: vmallika Change-Id: Ic3c651c143e4143cfb4542d99b4856e582022e36 BUG: 1257881 Signed-off-by: vmallika Reviewed-on: http://review.gluster.org/12038 Tested-by: NetBSD Build System Tested-by: Gluster Build System Reviewed-by: Kaushal M --- cli/src/cli-cmd-volume.c | 12 ------------ 1 file changed, 12 deletions(-) (limited to 'cli/src/cli-cmd-volume.c') diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c index 6dd30580004..ca181084668 100644 --- a/cli/src/cli-cmd-volume.c +++ b/cli/src/cli-cmd-volume.c @@ -1381,18 +1381,6 @@ cli_cmd_quota_handle_list_all (const char **words, dict_t *options) CLI_LOCAL_INIT (local, words, frame, xdata); proc = &cli_quotad_clnt.proctable[GF_AGGREGATOR_GETLIMIT]; - if (!(global_state->mode & GLUSTER_MODE_XML)) { - print_quota_list_header (type); - } else { - ret = cli_xml_output_vol_quota_limit_list_begin - (local, 0, 0, NULL); - if (ret) { - gf_log ("cli", GF_LOG_ERROR, "Error in printing " - "xml output"); - goto out; - } - } - gfid_str = GF_CALLOC (1, gf_common_mt_char, 64); if (!gfid_str) { ret = -1; -- cgit