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 (Resolved) (JIRA)" <ji...@apache.org> on 2011/12/06 06:11:40 UTC
[jira] [Resolved] (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 resolved HAMA-469.
---------------------------------
Resolution: Fixed
Fixed.
> 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
>
> Attachments: HAMA-469_v01.patch, HAMA-469_v02.patch
>
>
> {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