summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/release-notes/3.4.0.md13
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-handshake.c24
2 files changed, 9 insertions, 28 deletions
diff --git a/doc/release-notes/3.4.0.md b/doc/release-notes/3.4.0.md
index 15aff92fadb..b906e6a94c0 100644
--- a/doc/release-notes/3.4.0.md
+++ b/doc/release-notes/3.4.0.md
@@ -165,16 +165,3 @@ More details can be found [here]
- For Block Device translator based volumes open-behind translator at the
client side needs to be disabled.
-
-- More information on this can be found in this mailing list
- [post](http://www.gluster.org/pipermail/gluster-users/2013-July/036750.html)
- A freshly installed peer cannot be probed into a freshly upgraded cluster.
- This is a limitation brought about by the introduction of op-versions.
- There are two ways to workaround this issue,
- * enable any new feature (for eg. open-behind) on a volume in the cluster,
- and then perform the probe.
- Or, if you don't want to enable any new features
- * delete the 'operating-version' line from /var/lib/glusterd/glusterd.info
- on the newly installed peer and restart glusterd on the peer.
- If the file doesn't exist (because of lazy uuid generation), try to probe
- the peer from the cluster (which will fail) to get the file created.
diff --git a/xlators/mgmt/glusterd/src/glusterd-handshake.c b/xlators/mgmt/glusterd/src/glusterd-handshake.c
index 9124c46ee21..faf05b4e272 100644
--- a/xlators/mgmt/glusterd/src/glusterd-handshake.c
+++ b/xlators/mgmt/glusterd/src/glusterd-handshake.c
@@ -408,12 +408,16 @@ gd_validate_cluster_op_version (xlator_t *this, int cluster_op_version,
goto out;
}
- if (cluster_op_version < conf->op_version) {
+ /* The peer can only reduce its op-version when it doesn't have any
+ * volumes. Reducing op-version when it already contains volumes can
+ * lead to inconsistencies in the cluster
+ */
+ if ((cluster_op_version < conf->op_version) &&
+ !list_empty (&conf->volumes)) {
gf_log (this->name, GF_LOG_ERROR,
- "operating version %d is less than the currently "
- "running version (%d) on the machine (as per peer "
- "request from %s)", cluster_op_version,
- conf->op_version, peerid);
+ "cannot reduce operating version to %d from current "
+ "version %d as volumes exist (as per peer request from "
+ "%s)", cluster_op_version, conf->op_version, peerid);
goto out;
}
@@ -734,16 +738,6 @@ gd_validate_peer_op_version (xlator_t *this, glusterd_peerinfo_t *peerinfo,
goto out;
}
- /* If peer is already operating at a higher op_version reject it.
- * Cluster cannot be moved to higher op_version to accomodate a peer.
- */
- if (peer_op_version > conf->op_version) {
- ret = gf_asprintf (errstr, "Peer %s is already at a higher "
- "op-version", peerinfo->hostname);
- ret = -1;
- goto out;
- }
-
ret = 0;
out:
gf_log (this->name , GF_LOG_DEBUG, "Peer %s %s", peerinfo->hostname,