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"));
 

Reply via email to