Anthony,

Are you sure it is needed to catch Exception in these cases? It seems
unnecessary and bad practice. Can you revert, please?

regards,
Daan

On Tue, Apr 22, 2014 at 8:44 PM,  <anthon...@apache.org> wrote:
> Repository: cloudstack
> Updated Branches:
>   refs/heads/master 1bb31412f -> 4cb3e553d
>
>
> enable XS event for XS 6.2 + SP1 + FOX
>
>
> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
> Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/4cb3e553
> Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/4cb3e553
> Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/4cb3e553
>
> Branch: refs/heads/master
> Commit: 4cb3e553d5b48e9ee7d6267562084ac1cdd528c8
> Parents: 1bb3141
> Author: Anthony Xu <anthony...@citrix.com>
> Authored: Tue Apr 22 11:43:01 2014 -0700
> Committer: Anthony Xu <anthony...@citrix.com>
> Committed: Tue Apr 22 11:43:43 2014 -0700
>
> ----------------------------------------------------------------------
>  .../xen/resource/CitrixResourceBase.java        | 26 +++++++++-----------
>  .../xenserver/XenServerResourceNewBase.java     | 20 +++++++++++----
>  2 files changed, 26 insertions(+), 20 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4cb3e553/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
> ----------------------------------------------------------------------
> diff --git 
> a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
>  
> b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
> index 6226b2e..ba8be91 100644
> --- 
> a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
> +++ 
> b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
> @@ -214,6 +214,7 @@ import org.w3c.dom.Node;
>  import org.w3c.dom.NodeList;
>  import org.xml.sax.InputSource;
>  import org.xml.sax.SAXException;
> +import java.util.concurrent.TimeoutException;
>
>  import javax.ejb.Local;
>  import javax.naming.ConfigurationException;
> @@ -664,16 +665,11 @@ public abstract class CitrixResourceBase implements 
> ServerResource, HypervisorRe
>                      + " with args " + getArgsString(args)
>                      + " due to HandleInvalid clazz:" + e.clazz + ", handle:"
>                      + e.handle);
> -        } catch (XenAPIException e) {
> +        } catch (Exception e) {
>              s_logger.warn(
>                      "callHostPlugin failed for cmd: " + cmd + " with args "
>                              + getArgsString(args) + " due to " + 
> e.toString(),
>                              e);
> -        } catch (XmlRpcException e) {
> -            s_logger.warn(
> -                    "callHostPlugin failed for cmd: " + cmd + " with args "
> -                            + getArgsString(args) + " due to " + 
> e.getMessage(),
> -                            e);
>          } finally {
>              if (task != null) {
>                  try {
> @@ -3310,7 +3306,7 @@ public abstract class CitrixResourceBase implements 
> ServerResource, HypervisorRe
>          return false;
>      }
>
> -    protected void waitForTask(Connection c, Task task, long pollInterval, 
> long timeout) throws XenAPIException, XmlRpcException {
> +    protected void waitForTask(Connection c, Task task, long pollInterval, 
> long timeout) throws XenAPIException, XmlRpcException, TimeoutException {
>          long beginTime = System.currentTimeMillis();
>          if (s_logger.isTraceEnabled()) {
>              s_logger.trace("Task " + task.getNameLabel(c) + " (" + 
> task.getUuid(c) + ") sent to " + c.getSessionReference() + " is pending 
> completion with a " + timeout +
> @@ -3329,7 +3325,7 @@ public abstract class CitrixResourceBase implements 
> ServerResource, HypervisorRe
>                  s_logger.warn(msg);
>                  task.cancel(c);
>                  task.destroy(c);
> -                throw new Types.BadAsyncResult(msg);
> +                throw new TimeoutException(msg);
>              }
>          }
>      }
> @@ -3349,7 +3345,7 @@ public abstract class CitrixResourceBase implements 
> ServerResource, HypervisorRe
>          }
>      }
>
> -    void rebootVM(Connection conn, VM vm, String vmName) throws 
> XmlRpcException {
> +    void rebootVM(Connection conn, VM vm, String vmName) throws Exception {
>          Task task = null;
>          try {
>              task = vm.cleanRebootAsync(conn);
> @@ -3405,7 +3401,7 @@ public abstract class CitrixResourceBase implements 
> ServerResource, HypervisorRe
>                  //poll every 1 seconds , timeout after 10 minutes
>                  waitForTask(conn, task, 1000, 10 * 60 * 1000);
>                  checkForSuccess(conn, task);
> -            } catch (Types.HandleInvalid e) {
> +            } catch (TimeoutException e) {
>                  if (vm.getPowerState(conn) == Types.VmPowerState.HALTED) {
>                      task = null;
>                      return;
> @@ -3450,7 +3446,7 @@ public abstract class CitrixResourceBase implements 
> ServerResource, HypervisorRe
>          }
>      }
>
> -    void startVM(Connection conn, Host host, VM vm, String vmName) throws 
> XmlRpcException {
> +    void startVM(Connection conn, Host host, VM vm, String vmName) throws 
> Exception {
>          Task task = null;
>          try {
>              task = vm.startOnAsync(conn, host, false, true);
> @@ -3465,7 +3461,7 @@ public abstract class CitrixResourceBase implements 
> ServerResource, HypervisorRe
>                      return;
>                  }
>                  throw new CloudRuntimeException("Start VM " + vmName + " 
> catch HandleInvalid and VM is not in RUNNING state");
> -            } catch (Types.BadAsyncResult e) {
> +            } catch (TimeoutException e) {
>                  if (vm.getPowerState(conn) == Types.VmPowerState.RUNNING) {
>                      s_logger.debug("VM " + vmName + " is in Running status");
>                      task = null;
> @@ -3488,7 +3484,7 @@ public abstract class CitrixResourceBase implements 
> ServerResource, HypervisorRe
>          }
>      }
>
> -    private void migrateVM(Connection conn, Host destHost, VM vm, String 
> vmName) throws XmlRpcException {
> +    private void migrateVM(Connection conn, Host destHost, VM vm, String 
> vmName) throws Exception {
>          Task task = null;
>          try {
>              Map<String, String> other = new HashMap<String, String>();
> @@ -3521,7 +3517,7 @@ public abstract class CitrixResourceBase implements 
> ServerResource, HypervisorRe
>          }
>      }
>
> -    protected VDI cloudVDIcopy(Connection conn, VDI vdi, SR sr, int wait) 
> throws XenAPIException, XmlRpcException {
> +    protected VDI cloudVDIcopy(Connection conn, VDI vdi, SR sr, int wait) 
> throws Exception {
>          Task task = null;
>          if (wait == 0) {
>              wait = 2 * 60 * 60;
> @@ -3570,7 +3566,7 @@ public abstract class CitrixResourceBase implements 
> ServerResource, HypervisorRe
>                      e.handle);
>          } catch (XenAPIException e) {
>              s_logger.warn("callHostPlugin failed for cmd: " + cmd + " with 
> args " + getArgsString(args) + " due to " + e.toString(), e);
> -        } catch (XmlRpcException e) {
> +        } catch (Exception e) {
>              s_logger.warn("callHostPlugin failed for cmd: " + cmd + " with 
> args " + getArgsString(args) + " due to " + e.getMessage(), e);
>          } finally {
>              if (task != null) {
>
> http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4cb3e553/plugins/hypervisors/xen/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java
> ----------------------------------------------------------------------
> diff --git 
> a/plugins/hypervisors/xen/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java
>  
> b/plugins/hypervisors/xen/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java
> index c67fb33..1883371 100644
> --- 
> a/plugins/hypervisors/xen/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java
> +++ 
> b/plugins/hypervisors/xen/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java
> @@ -99,14 +99,14 @@ public class XenServerResourceNewBase extends 
> XenServer620SP1Resource {
>          return cmds;
>      }
>
> -    protected void waitForTask2(Connection c, Task task, long pollInterval, 
> long timeout) throws XenAPIException, XmlRpcException, TimeoutException {
> +    protected void waitForTask(Connection c, Task task, long pollInterval, 
> long timeout) throws XenAPIException, XmlRpcException, TimeoutException {
>          long beginTime = System.currentTimeMillis();
>          if (s_logger.isTraceEnabled()) {
>              s_logger.trace("Task " + task.getNameLabel(c) + " (" + 
> task.getType(c) + ") sent to " + c.getSessionReference() + " is pending 
> completion with a " + timeout +
>                             "ms timeout");
>          }
>          Set<String> classes = new HashSet<String>();
> -        classes.add("Task/" + task.toString());
> +        classes.add("Task/" + task.toWireString());
>          String token = "";
>          Double t = new Double(timeout / 1000);
>          while (true) {
> @@ -115,7 +115,7 @@ public class XenServerResourceNewBase extends 
> XenServer620SP1Resource {
>              @SuppressWarnings("unchecked")
>              Set<Event.Record> events = map.events;
>              if (events.size() == 0) {
> -                String msg = "Async " + timeout / 1000 + " seconds timeout 
> for task " + task.toString();
> +                String msg = "No event for task " + task.toWireString();
>                  s_logger.warn(msg);
>                  task.cancel(c);
>                  throw new TimeoutException(msg);
> @@ -132,16 +132,26 @@ public class XenServerResourceNewBase extends 
> XenServer620SP1Resource {
>
>                  if (taskRecord.status != Types.TaskStatusType.PENDING) {
>                      if (s_logger.isDebugEnabled()) {
> -                        s_logger.debug("Task is done " + taskRecord.status);
> +                        s_logger.debug("Task, ref:" + task.toWireString() + 
> ", UUID:" + taskRecord.uuid + " is done " + taskRecord.status);
>                      }
>                      return;
>                  } else {
> -                    s_logger.debug("Task is not done " + taskRecord);
> +                    if (s_logger.isDebugEnabled()) {
> +                        s_logger.debug("Task: ref:" + task.toWireString() + 
> ", UUID:" + taskRecord.uuid +  " progress: " + taskRecord.progress);
> +                    }
> +
>                  }
>              }
> +            if (System.currentTimeMillis() - beginTime > timeout) {
> +                String msg = "Async " + timeout / 1000 + " seconds timeout 
> for task " + task.toString();
> +                s_logger.warn(msg);
> +                task.cancel(c);
> +                throw new TimeoutException(msg);
> +            }
>          }
>      }
>
> +
>      @Override
>      protected Answer execute(final ClusterSyncCommand cmd) {
>          if (!_listener.isListening()) {
>



-- 
Daan

Reply via email to