Ding Yuan created CLOUDSTACK-6242: ------------------------------------- Summary: Potential bugs and improvements for exception handlers Key: CLOUDSTACK-6242 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-6242 Project: CloudStack Issue Type: Bug Security Level: Public (Anyone can view this level - this is the default.) Components: Projects, Storage Controller Affects Versions: 4.2.0 Reporter: Ding Yuan
Hi Cloudstack developers, I'm reporting a few cases where the exception handling logic could be improved. In particular, there are a few cases where the caught exception is too general (over-catch), and/or missing log messages. Attaching a patch for review. There are a few cases where it looks suspicious but I do not know how to fix right now (all filenames and line numbers are based on version 4.2.1): ========================= Case 1: Line: 375, File: "com/cloud/network/ovs/OvsTunnelManagerImpl.java" {noformat} 326: try { 327: String myIp = getGreEndpointIP(dest.getHost(), nw); .. .. .. 373: } catch (Exception e) { 374: // I really thing we should do a better handling of these exceptions 375: s_logger.warn("Ovs Tunnel network created tunnel failed", e); 376: } {noformat} Comment seems to suggest for a better handling. ========================= ========================= Case 2: Line: 2295, File: "com/cloud/resource/ResourceManagerImpl.java" {noformat} 2284: try { 2285: /* 2286: * FIXME: this is a buggy logic, check with alex. Shouldn't 2287: * return if propagation return non null 2288: */ 2289: Boolean result = _clusterMgr.propagateResourceEvent(h.getId(), ResourceState.Event.UpdatePassword); 2290: if (result != null) { 2291: return result; 2292: } 2293: 2294: doUpdateHostPassword(h.getId()); 2295: } catch (AgentUnavailableException e) { 2296: } {noformat} Seem from the comment the logic should be fixed. A similar code snipeet is at: Line: 2276, File: "com/cloud/resource/ResourceManagerImpl.java" ========================= ========================= Case 3: Line: 184, File: "org/apache/cloudstack/api/command/user/autoscale/CreateAutoScaleVmGroupCmd.java" {noformat} 174: try 175: { 176: success = _autoScaleService.configureAutoScaleVmGroup(this); 177: if (success) { 178: vmGroup = _entityMgr.findById(AutoScaleVmGroup.class, getEntityId()); 179: AutoScaleVmGroupResponse responseObject = _responseGenerator.createAutoScaleVmGroupResponse(vmGroup); 180: setResponseObject(responseObject); 181: responseObject.setResponseName(getCommandName()); 182: } 183: } catch (Exception ex) { 184: // TODO what will happen if Resource Layer fails in a step inbetween 185: s_logger.warn("Failed to create autoscale vm group", ex); 186: } {noformat} The comment, "TODO", seems to suggest for better handling. ========================= ========================= Case 4: Line: 222, File: "com/cloud/api/ApiDispatcher.java" This snippet is moved to ParamProcessWorker.java in the trunk. {noformat} 203: try { 204: setFieldValue(field, cmd, paramObj, parameterAnnotation); .. .. 220: } catch (CloudRuntimeException cloudEx) { 221: s_logger.error("CloudRuntimeException", cloudEx); 222: // FIXME: Better error message? This only happens if the API command is not executable, which typically 223: //means 224: // there was 225: // and IllegalAccessException setting one of the parameters. 226: throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Internal error executing API command " + cmd.getCommandName().substring(0, cmd.getCommandName().length() - 8)); 227: } {noformat} The "FIXME" comment seems to suggest for getter error message. ========================= -- This message was sent by Atlassian JIRA (v6.2#6252)