You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by ju...@apache.org on 2013/06/04 01:51:57 UTC

git commit: kafka-903; Attempt to swap the new high watermark file with the old one failed on Windows; patched by Jun Rao; reviewed by Neha Narkhede, Jay Kreps and Sriram Subramania

Updated Branches:
  refs/heads/0.8 4f387ae43 -> 43c43b1c6


kafka-903; Attempt to swap the new high watermark file with the old one failed on Windows; patched by Jun Rao; reviewed by Neha Narkhede, Jay Kreps and Sriram Subramania


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/43c43b1c
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/43c43b1c
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/43c43b1c

Branch: refs/heads/0.8
Commit: 43c43b1c6d05fb93f4ca96a4e1a1aa8c6fd58d18
Parents: 4f387ae
Author: Jun Rao <ju...@gmail.com>
Authored: Mon Jun 3 16:51:41 2013 -0700
Committer: Jun Rao <ju...@gmail.com>
Committed: Mon Jun 3 16:51:41 2013 -0700

----------------------------------------------------------------------
 .../kafka/server/HighwaterMarkCheckpoint.scala     |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kafka/blob/43c43b1c/core/src/main/scala/kafka/server/HighwaterMarkCheckpoint.scala
----------------------------------------------------------------------
diff --git a/core/src/main/scala/kafka/server/HighwaterMarkCheckpoint.scala b/core/src/main/scala/kafka/server/HighwaterMarkCheckpoint.scala
index 30caec1..e18ecab 100644
--- a/core/src/main/scala/kafka/server/HighwaterMarkCheckpoint.scala
+++ b/core/src/main/scala/kafka/server/HighwaterMarkCheckpoint.scala
@@ -36,7 +36,7 @@ object HighwaterMarkCheckpoint {
 
 class HighwaterMarkCheckpoint(val path: String) extends Logging {
   /* create the highwatermark file handle for all partitions */
-  val name = path + "/" + HighwaterMarkCheckpoint.highWatermarkFileName
+  val name = path + File.separator + HighwaterMarkCheckpoint.highWatermarkFileName
   private val hwFile = new File(name)
   private val hwFileLock = new ReentrantLock()
   // recover from previous tmp file, if required
@@ -64,8 +64,12 @@ class HighwaterMarkCheckpoint(val path: String) extends Logging {
       hwFileWriter.close()
       // swap new high watermark file with previous one
       if(!tempHwFile.renameTo(hwFile)) {
-        fatal("Attempt to swap the new high watermark file with the old one failed")
-        System.exit(1)
+        // renameTo() fails on Windows if the destination file exists.
+        hwFile.delete()
+        if(!tempHwFile.renameTo(hwFile)) {
+          fatal("Attempt to swap the new high watermark file with the old one failed")
+          System.exit(1)
+        }
       }
     }finally {
       hwFileLock.unlock()