From d63f86e5066d4a1dc9fb45757dc6ad7bc88779ce Mon Sep 17 00:00:00 2001 From: Zhen Li Date: Fri, 12 Jun 2020 16:19:56 -0700 Subject: [PATCH] fix build with 'USE_HDFS' on windows (#6950) Summary: Build with "USE_HDFS" failed with below errors on Windows. This PR is trying to fix them Severity Code Description Project File Line Suppression State Error (active) E0020 identifier "ssize_t" is undefined rocksdb D:\Git\rocksdb\rocksdb\env\env_hdfs.cc 127 Error (active) E1696 cannot open source file "sys/time.h" rocksdb D:\Git\rocksdb\rocksdb\env\env_hdfs.cc 15 Error C2065 'pthread_t': undeclared identifier rocksdb d:\git\rocksdb\rocksdb\hdfs\env_hdfs.h 166 Error C3861 'pthread_self': identifier not found rocksdb d:\git\rocksdb\rocksdb\hdfs\env_hdfs.h 167 Error C1083 Cannot open include file: 'sys/time.h': No such file or directory rocksdb d:\git\rocksdb\rocksdb\env\env_hdfs.cc 15 Error C2065 'pthread_t': undeclared identifier db_bench d:\git\rocksdb\rocksdb\hdfs\env_hdfs.h 166 Error C3861 'pthread_self': identifier not found db_bench d:\git\rocksdb\rocksdb\hdfs\env_hdfs.h 167 Pull Request resolved: https://github.com/facebook/rocksdb/pull/6950 Test Plan: 1. manually test build with "USE_HDFS" on Windows, verified HDFS Env related function by db_bench.exe. D:\Git\rocksdb\build\Debug>db_bench.exe --hdfs="abfs://test@rdbtest2.dfs.core.windows.net" --num=100 --benchmarks="fillseq,readseq,fillseekseq" --db="abfs://test@rdbtest2.dfs.core.windows.net/test" 2020-06-05 20:42:21,102 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 2020-06-05 20:42:22,646 WARN utils.SSLSocketFactoryEx: Failed to load OpenSSL. Falling back to the JSSE default. Initializing RocksDB Options from the specified file Initializing RocksDB Options from command-line flags RocksDB: version 6.10 Keys: 16 bytes each Values: 100 bytes each (50 bytes after compression) Entries: 100 Prefix: 0 bytes Keys per prefix: 0 RawSize: 0.0 MB (estimated) FileSize: 0.0 MB (estimated) Write rate: 0 bytes/second Read rate: 0 ops/second Compression: Snappy Compression sampling rate: 0 Memtablerep: skip_list Perf Level: 1 WARNING: Assertions are enabled; benchmarks unnecessarily slow ------------------------------------------------ Initializing RocksDB Options from the specified file Initializing RocksDB Options from command-line flags DB path: [abfs://test@rdbtest2.dfs.core.windows.net/test] fillseq : 1138.350 micros/op 877 ops/sec; 0.1 MB/s DB path: [abfs://test@rdbtest2.dfs.core.windows.net/test] readseq : 63.580 micros/op 15627 ops/sec; 1.7 MB/s DB path: [abfs://test@rdbtest2.dfs.core.windows.net/test] fillseekseq : 45.615 micros/op 21762 ops/sec; Reviewed By: cheng-chang Differential Revision: D21964806 Pulled By: riversand963 fbshipit-source-id: 9d7413178ece0113d11bc4398583f7d0590d5dbd --- env/env_hdfs.cc | 6 +++--- hdfs/env_hdfs.h | 8 ++------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/env/env_hdfs.cc b/env/env_hdfs.cc index 5561f8ced..3323eeb8a 100644 --- a/env/env_hdfs.cc +++ b/env/env_hdfs.cc @@ -12,7 +12,6 @@ #define ROCKSDB_HDFS_FILE_C #include -#include #include #include #include @@ -124,8 +123,9 @@ class HdfsReadableFile : virtual public SequentialFile, Status s; ROCKS_LOG_DEBUG(mylog, "[hdfs] HdfsReadableFile preading %s\n", filename_.c_str()); - ssize_t bytes_read = hdfsPread(fileSys_, hfile_, offset, - (void*)scratch, (tSize)n); + tSize bytes_read = + hdfsPread(fileSys_, hfile_, offset, static_cast(scratch), + static_cast(n)); ROCKS_LOG_DEBUG(mylog, "[hdfs] HdfsReadableFile pread %s\n", filename_.c_str()); *result = Slice(scratch, (bytes_read < 0) ? 0 : bytes_read); diff --git a/hdfs/env_hdfs.h b/hdfs/env_hdfs.h index 07c00e41b..c56f8fe48 100644 --- a/hdfs/env_hdfs.h +++ b/hdfs/env_hdfs.h @@ -162,10 +162,7 @@ class HdfsEnv : public Env { return posixEnv->TimeToString(number); } - static uint64_t gettid() { - assert(sizeof(pthread_t) <= sizeof(uint64_t)); - return (uint64_t)pthread_self(); - } + static uint64_t gettid() { return Env::Default()->GetThreadID(); } uint64_t GetThreadID() const override { return HdfsEnv::gettid(); } @@ -209,8 +206,7 @@ class HdfsEnv : public Env { std::string portStr = (rem == 0 ? remaining : remaining.substr(0, rem)); - tPort port; - port = atoi(portStr.c_str()); + tPort port = static_cast(atoi(portStr.c_str())); if (port == 0) { throw HdfsFatalException("Bad host-port for hdfs " + uri); }