]> git-server-git.apps.pok.os.sepia.ceph.com Git - rocksdb.git/commitdiff
- hdfs cleanup; fix to NewDirectory to comply with definition in env.h
authorMike Orr <morr@derecho.io>
Wed, 21 May 2014 11:50:37 +0000 (07:50 -0400)
committerMike Orr <morr@derecho.io>
Wed, 21 May 2014 11:50:37 +0000 (07:50 -0400)
- fix compile error with env_test; static casts added

util/env_hdfs.cc
util/env_test.cc

index 09ee034389acb77e6f814a6782de29e1b7002607..6b6d56c00f236004af9c7b2da309dad1ac6fca82 100644 (file)
@@ -401,16 +401,9 @@ Status HdfsEnv::NewRandomRWFile(const std::string& fname,
 class HdfsDirectory : public Directory {
  public:
   explicit HdfsDirectory(int fd) : fd_(fd) {}
-  ~HdfsDirectory() {
-    //close(fd_);
-  }
+  ~HdfsDirectory() {}
 
-  virtual Status Fsync() {
-    //if (fsync(fd_) == -1) {
-    //  return IOError("directory", errno);
-   // }
-    return Status::OK();
-  }
+  virtual Status Fsync() { return Status::OK(); }
 
  private:
   int fd_;
@@ -418,20 +411,21 @@ class HdfsDirectory : public Directory {
 
 Status HdfsEnv::NewDirectory(const std::string& name,
                              unique_ptr<Directory>* result) {
-
-  int value = hdfsCreateDirectory(fileSys_, name.c_str());
-  result->reset(new HdfsDirectory(0));
+  int value = hdfsExists(fileSys_, name.c_str());
   switch (value) {
-    case HDFS_SUCCESS:  // directory created
-      return Status::OK();
-    default:
-      Log(mylog, "directory already exists "); 
+    case HDFS_EXISTS:
+      result->reset(new HdfsDirectory(0));
       return Status::OK();
+    default:  // fail if the directory doesn't exist
+      Log(mylog, "NewDirectory hdfsExists call failed");
+      throw HdfsFatalException("hdfsExists call failed with error " +
+                               std::to_string(value) + " on path " + name +
+                               ".\n");
   }
 }
 
 bool HdfsEnv::FileExists(const std::string& fname) {
-  
+
   int value = hdfsExists(fileSys_, fname.c_str());
   switch (value) {
     case HDFS_EXISTS:
@@ -440,8 +434,9 @@ bool HdfsEnv::FileExists(const std::string& fname) {
       return false;
     default:  // anything else should be an error
       Log(mylog, "FileExists hdfsExists call failed");
-      throw HdfsFatalException("1. hdfsExists call failed with error " +
-                               std::to_string(value) + " on path " + fname  + ".\n");
+      throw HdfsFatalException("hdfsExists call failed with error " +
+                               std::to_string(value) + " on path " + fname +
+                               ".\n");
   }
 }
 
@@ -477,13 +472,13 @@ Status HdfsEnv::GetChildren(const std::string& path,
   default:          // anything else should be an error
     Log(mylog, "GetChildren hdfsExists call failed");
     throw HdfsFatalException("hdfsExists call failed with error " +
-                             std::to_string(value) + " on path " + path.c_str()  + ".\n");
+                             std::to_string(value) + ".\n");
   }
   return Status::OK();
 }
 
 Status HdfsEnv::DeleteFile(const std::string& fname) {
-  if (hdfsDelete(fileSys_, fname.c_str(),1) == 0) {
+  if (hdfsDelete(fileSys_, fname.c_str(), 1) == 0) {
     return Status::OK();
   }
   return IOError(fname, errno);
index 2abce6f3a7e054cf241c57ca9aa8caa5069183e5..c0d00ce94dce0f28e8fbb08a3d489aa061a3254f 100644 (file)
@@ -285,7 +285,7 @@ TEST(EnvPosixTest, DecreaseNumBgThreads) {
   // Increase to 5 threads. Task 0 and 2 running.
   env_->SetBackgroundThreads(5, Env::Priority::HIGH);
   Env::Default()->SleepForMicroseconds(kDelayMicros);
-  ASSERT_EQ(0, env_->GetThreadPoolQueueLen(Env::Priority::HIGH));
+  ASSERT_EQ((unsigned int)0, env_->GetThreadPoolQueueLen(Env::Priority::HIGH));
   ASSERT_TRUE(tasks[0].IsSleeping());
   ASSERT_TRUE(tasks[2].IsSleeping());
 
@@ -330,7 +330,7 @@ TEST(EnvPosixTest, DecreaseNumBgThreads) {
   tasks[4].WakeUp();
 
   Env::Default()->SleepForMicroseconds(kDelayMicros);
-  ASSERT_EQ(0, env_->GetThreadPoolQueueLen(Env::Priority::HIGH));
+  ASSERT_EQ((unsigned int)0, env_->GetThreadPoolQueueLen(Env::Priority::HIGH));
   for (size_t i = 5; i < 8; i++) {
     ASSERT_TRUE(tasks[i].IsSleeping());
   }
@@ -360,13 +360,13 @@ TEST(EnvPosixTest, DecreaseNumBgThreads) {
   env_->Schedule(&SleepingBackgroundTask::DoSleepTask, &tasks[9],
                  Env::Priority::HIGH);
   Env::Default()->SleepForMicroseconds(kDelayMicros);
-  ASSERT_GT(env_->GetThreadPoolQueueLen(Env::Priority::HIGH), 0);
+  ASSERT_GT(env_->GetThreadPoolQueueLen(Env::Priority::HIGH), (unsigned int)0);
   ASSERT_TRUE(!tasks[8].IsSleeping() || !tasks[9].IsSleeping());
 
   // Increase to 4 threads. Task 5, 8, 9 running.
   env_->SetBackgroundThreads(4, Env::Priority::HIGH);
   Env::Default()->SleepForMicroseconds(kDelayMicros);
-  ASSERT_EQ(0, env_->GetThreadPoolQueueLen(Env::Priority::HIGH));
+  ASSERT_EQ((unsigned int)0, env_->GetThreadPoolQueueLen(Env::Priority::HIGH));
   ASSERT_TRUE(tasks[8].IsSleeping());
   ASSERT_TRUE(tasks[9].IsSleeping());