summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohammed Rafi KC <rkavunga@redhat.com>2017-05-04 20:56:43 +0530
committerShyamsundar Ranganathan <srangana@redhat.com>2017-07-03 12:52:45 +0000
commit78242268318ad85b8016cb012ed3de605d6e4b8c (patch)
tree481a315e0b1463253ec695bbb70947b130163d67
parenta8d7d4dac391c74ef3e34512c387565ab30c0a90 (diff)
snapview-server : Refresh the snapshot list during each reconnect
Currently we are refreshing the snapshot list either when there is a request from glusterd or the very first initialization. But if anything changed after when glusterd is down then there is no mechanism to refresh the snashot dentries. This patch will refresh snapshot list during each reconnect backport of> >Change-Id: I3ed655572d777f60d57dd479d190f75553591267 >BUG: 1448150 >Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com> >Reviewed-on: https://review.gluster.org/17178 >Smoke: Gluster Build System <jenkins@build.gluster.org> >NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> >Reviewed-by: Amar Tumballi <amarts@redhat.com> >CentOS-regression: Gluster Build System <jenkins@build.gluster.org> >Reviewed-by: Atin Mukherjee <amukherj@redhat.com> >Reviewed-by: Raghavendra Bhat <raghavendra@redhat.com> Change-Id: I3ed655572d777f60d57dd479d190f75553591267 BUG: 1463512 Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com> Reviewed-on: https://review.gluster.org/17585 Smoke: Gluster Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Shyamsundar Ranganathan <srangana@redhat.com>
-rw-r--r--xlators/features/snapview-server/src/snapview-server-mgmt.c32
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c1
2 files changed, 33 insertions, 0 deletions
diff --git a/xlators/features/snapview-server/src/snapview-server-mgmt.c b/xlators/features/snapview-server/src/snapview-server-mgmt.c
index fc2ff2a..18c902d 100644
--- a/xlators/features/snapview-server/src/snapview-server-mgmt.c
+++ b/xlators/features/snapview-server/src/snapview-server-mgmt.c
@@ -49,6 +49,31 @@ rpc_clnt_prog_t svs_clnt_handshake_prog = {
.procnames = clnt_handshake_procs,
};
+static int
+svs_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event,
+ void *data)
+{
+ xlator_t *this = NULL;
+ int ret = 0;
+
+ this = mydata;
+
+ switch (event) {
+ case RPC_CLNT_CONNECT:
+ ret = svs_get_snapshot_list (this);
+ if (ret) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "Error in refreshing the snaplist "
+ "infrastructure");
+ ret = -1;
+ }
+ break;
+ default:
+ break;
+ }
+ return ret;
+}
+
int
svs_mgmt_init (xlator_t *this)
{
@@ -86,6 +111,13 @@ svs_mgmt_init (xlator_t *this)
goto out;
}
+ ret = rpc_clnt_register_notify (priv->rpc, svs_rpc_notify, this);
+ if (ret) {
+ gf_log (this->name, GF_LOG_WARNING,
+ "failed to register notify function");
+ goto out;
+ }
+
ret = rpcclnt_cbk_program_register (priv->rpc, &svs_cbk_prog,
this);
if (ret) {
diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c b/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c
index 724dcb7..9e2a75f 100644
--- a/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c
@@ -1704,6 +1704,7 @@ glusterd_import_friend_snap (dict_t *peer_data, int32_t snap_count,
"object %s", peer_snap_name);
goto out;
}
+ glusterd_fetchsnap_notify (this);
out:
if (ret)