You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hama.apache.org by "Edward J. Yoon (Assigned) (JIRA)" <ji...@apache.org> on 2011/12/02 06:36:40 UTC

[jira] [Assigned] (HAMA-469) The statusUpdate() method should be called finally.

     [ https://issues.apache.org/jira/browse/HAMA-469?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Edward J. Yoon reassigned HAMA-469:
-----------------------------------

    Assignee: Edward J. Yoon
    
> The statusUpdate() method should be called finally.
> ---------------------------------------------------
>
>                 Key: HAMA-469
>                 URL: https://issues.apache.org/jira/browse/HAMA-469
>             Project: Hama
>          Issue Type: Bug
>          Components: bsp
>    Affects Versions: 0.3.0
>            Reporter: Edward J. Yoon
>            Assignee: Edward J. Yoon
>            Priority: Minor
>              Labels: newbie
>             Fix For: 0.4.0
>
>
> {code}
>   public void sync() throws InterruptedException {
>     try {
>       enterBarrier();
>       Iterator<Entry<InetSocketAddress, LinkedList<BSPMessage>>> it = messenger
>           .getMessageIterator();
>       while (it.hasNext()) {
>         Entry<InetSocketAddress, LinkedList<BSPMessage>> entry = it.next();
>         final InetSocketAddress addr = entry.getKey();
>         final Iterable<BSPMessage> messages = entry.getValue();
>         final BSPMessageBundle bundle = combineMessages(messages);
>         if (conf.getBoolean("bsp.checkpoint.enabled", false)) {
>           checkpoint(checkpointedPath(), bundle);
>         }
>         // remove this message during runtime to save a bit of memory
>         it.remove();
>         messenger.transfer(addr, bundle);
>       }
>       leaveBarrier();
>       currentTaskStatus.incrementSuperstepCount();
>       umbilical.statusUpdate(taskId, currentTaskStatus);
>       // Clear outgoing queues.
>       messenger.clearOutgoingQueues();
>     } catch (Exception e) {
>       LOG.fatal(
>           "Caught exception during superstep "
>               + currentTaskStatus.getSuperstepCount() + "!", e);
>     }
>   }
> {code}
> I think, the task status should be set to "Failed" when exception occurs in the sync() method. And the statusUpdate() method should be called finally.
> So instead of logging a fatal exception, we should mutate the currentTaskStatus object and set the task status to FAILED. 
> We should update the umbilical via 
> bq. umbilical.statusUpdate(taskId, currentTaskStatus);
> Now that the barrier is broken, we should make the task fail as well -> throw a RuntimeException.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira