Repository: incubator-reef Updated Branches: refs/heads/master 29c56c8e6 -> 02c0ad592
[REEF-80] ID mismatch bug in YarnContainerManager#appendByDeleteAndCreate This synchronizes writing to evaluator log and re-throws an exception if the write fails, instead of swallowing it. JIRA: [REEF-80] https://issues.apache.org/jira/browse/REEF-80 Pull Request: Closes #44 Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/02c0ad59 Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/02c0ad59 Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/02c0ad59 Branch: refs/heads/master Commit: 02c0ad592f4f4a5f603c2689880f4859c1794b88 Parents: 29c56c8 Author: yingdachen <[email protected]> Authored: Sun Jan 4 17:05:11 2015 -0800 Committer: John Yang <[email protected]> Committed: Tue Feb 10 17:49:09 2015 +0900 ---------------------------------------------------------------------- .../yarn/driver/YarnContainerManager.java | 23 ++++++++++---------- 1 file changed, 12 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/02c0ad59/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/driver/YarnContainerManager.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/driver/YarnContainerManager.java b/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/driver/YarnContainerManager.java index fc1696e..bd8128b 100644 --- a/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/driver/YarnContainerManager.java +++ b/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/driver/YarnContainerManager.java @@ -599,7 +599,7 @@ final class YarnContainerManager .build()); } - private void writeToEvaluatorLog(final String entry) throws IOException { + private synchronized void writeToEvaluatorLog(final String entry) throws IOException { final org.apache.hadoop.conf.Configuration config = new org.apache.hadoop.conf.Configuration(); config.setBoolean("dfs.support.append", true); config.setBoolean("dfs.support.broken.append", true); @@ -612,7 +612,7 @@ final class YarnContainerManager new BufferedWriter(new OutputStreamWriter(fs.append(path))) : new BufferedWriter(new OutputStreamWriter(fs.create(path))); ) { - bw.write(entry); + bw.write(entry); } catch (final IOException e) { if (appendToLog) { LOG.log(Level.FINE, "Unable to add an entry to the Evaluator log. Attempting append by delete and recreate", e); @@ -659,22 +659,23 @@ final class YarnContainerManager private void logContainerAddition(final String containerId) { final String entry = ADD_FLAG + containerId + System.lineSeparator(); - try { - writeToEvaluatorLog(entry); - } catch (final IOException e) { - LOG.log(Level.WARNING, "Unable to log the addition of container [" + containerId + - "] to the container log. Driver restart won't work properly.", e); - } + logContainerChange(entry); } private void logContainerRemoval(final String containerId) { final String entry = REMOVE_FLAG + containerId + System.lineSeparator(); + logContainerChange(entry); + } + + private void logContainerChange(final String entry) + { try { writeToEvaluatorLog(entry); } catch (final IOException e) { - LOG.log(Level.WARNING, "Unable to log the removal of container [" + containerId + - "] to the container log. Driver restart won't work properly.", e); + final String errorMsg = "Unable to log the change of container [" + entry + + "] to the container log. Driver restart won't work properly."; + LOG.log(Level.WARNING, errorMsg, e); + throw new RuntimeException(errorMsg); } } - }
