Updated Branches: refs/heads/master f4a96d4c8 -> 5ae12f31b
rbd: Set client timeout to 30 seconds. By default the client_mount_timeout setting in librados is 300 seconds, but that causes the connect to the Ceph cluster to block for 5 minutes if the Ceph cluster is not available. This patch is not ideal, but it mitigates the problem for now. At a later point all this librados/librbd code should go back to libvirt again, but the current versions of libvirt in the distributions are to old for all the features we require. For now this should prevent the CloudStack agent blocking for 5 minutes when the Ceph cluster isn't available. This is also tracked at the Ceph tracker: http://tracker.ceph.com/issues/6507 Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/5ae12f31 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/5ae12f31 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/5ae12f31 Branch: refs/heads/master Commit: 5ae12f31b7ab87c28759bc37a0b1df4ffd0db0b0 Parents: f4a96d4 Author: Wido den Hollander <w...@widodh.nl> Authored: Mon Feb 3 12:11:27 2014 +0100 Committer: Wido den Hollander <w...@widodh.nl> Committed: Mon Feb 3 16:07:00 2014 +0100 ---------------------------------------------------------------------- .../hypervisor/kvm/resource/LibvirtComputingResource.java | 3 +++ .../com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java | 2 ++ .../cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java | 6 ++++++ 3 files changed, 11 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5ae12f31/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index fd0078c..19a75d2 100755 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -1785,6 +1785,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv Rados r = new Rados(pool.getAuthUserName()); r.confSet("mon_host", pool.getSourceHost() + ":" + pool.getSourcePort()); r.confSet("key", pool.getAuthSecret()); + r.confSet("client_mount_timeout", "30"); r.connect(); s_logger.debug("Succesfully connected to Ceph cluster at " + r.confGet("mon_host")); @@ -2234,6 +2235,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv Rados r = new Rados(primaryPool.getAuthUserName()); r.confSet("mon_host", primaryPool.getSourceHost() + ":" + primaryPool.getSourcePort()); r.confSet("key", primaryPool.getAuthSecret()); + r.confSet("client_mount_timeout", "30"); r.connect(); s_logger.debug("Succesfully connected to Ceph cluster at " + r.confGet("mon_host")); @@ -2316,6 +2318,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv Rados r = new Rados(primaryPool.getAuthUserName()); r.confSet("mon_host", primaryPool.getSourceHost() + ":" + primaryPool.getSourcePort()); r.confSet("key", primaryPool.getAuthSecret()); + r.confSet("client_mount_timeout", "30"); r.connect(); s_logger.debug("Succesfully connected to Ceph cluster at " + r.confGet("mon_host")); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5ae12f31/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java index 7d5d335..8c3713f 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java @@ -675,6 +675,7 @@ public class KVMStorageProcessor implements StorageProcessor { Rados r = new Rados(primaryPool.getAuthUserName()); r.confSet("mon_host", primaryPool.getSourceHost() + ":" + primaryPool.getSourcePort()); r.confSet("key", primaryPool.getAuthSecret()); + r.confSet("client_mount_timeout", "30"); r.connect(); s_logger.debug("Succesfully connected to Ceph cluster at " + r.confGet("mon_host")); @@ -1095,6 +1096,7 @@ public class KVMStorageProcessor implements StorageProcessor { Rados r = new Rados(primaryPool.getAuthUserName()); r.confSet("mon_host", primaryPool.getSourceHost() + ":" + primaryPool.getSourcePort()); r.confSet("key", primaryPool.getAuthSecret()); + r.confSet("client_mount_timeout", "30"); r.connect(); s_logger.debug("Succesfully connected to Ceph cluster at " + r.confGet("mon_host")); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5ae12f31/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java index bbd1c24..c66c51a 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java @@ -619,6 +619,7 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { Rados r = new Rados(pool.getAuthUserName()); r.confSet("mon_host", pool.getSourceHost() + ":" + pool.getSourcePort()); r.confSet("key", pool.getAuthSecret()); + r.confSet("client_mount_timeout", "30"); r.connect(); s_logger.debug("Succesfully connected to Ceph cluster at " + r.confGet("mon_host")); @@ -730,6 +731,7 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { Rados r = new Rados(pool.getAuthUserName()); r.confSet("mon_host", pool.getSourceHost() + ":" + pool.getSourcePort()); r.confSet("key", pool.getAuthSecret()); + r.confSet("client_mount_timeout", "30"); r.connect(); s_logger.debug("Succesfully connected to Ceph cluster at " + r.confGet("mon_host")); @@ -840,6 +842,7 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { Rados r = new Rados(srcPool.getAuthUserName()); r.confSet("mon_host", srcPool.getSourceHost() + ":" + srcPool.getSourcePort()); r.confSet("key", srcPool.getAuthSecret()); + r.confSet("client_mount_timeout", "30"); r.connect(); s_logger.debug("Succesfully connected to Ceph cluster at " + r.confGet("mon_host")); @@ -877,12 +880,14 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { Rados rSrc = new Rados(srcPool.getAuthUserName()); rSrc.confSet("mon_host", srcPool.getSourceHost() + ":" + srcPool.getSourcePort()); rSrc.confSet("key", srcPool.getAuthSecret()); + rSrc.confSet("client_mount_timeout", "30"); rSrc.connect(); s_logger.debug("Succesfully connected to source Ceph cluster at " + rSrc.confGet("mon_host")); Rados rDest = new Rados(destPool.getAuthUserName()); rDest.confSet("mon_host", destPool.getSourceHost() + ":" + destPool.getSourcePort()); rDest.confSet("key", destPool.getAuthSecret()); + rDest.confSet("client_mount_timeout", "30"); rDest.connect(); s_logger.debug("Succesfully connected to source Ceph cluster at " + rDest.confGet("mon_host")); @@ -1062,6 +1067,7 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { Rados r = new Rados(destPool.getAuthUserName()); r.confSet("mon_host", destPool.getSourceHost() + ":" + destPool.getSourcePort()); r.confSet("key", destPool.getAuthSecret()); + r.confSet("client_mount_timeout", "30"); r.connect(); s_logger.debug("Succesfully connected to Ceph cluster at " + r.confGet("mon_host"));