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)

Reply via email to