HDFS-12026: libhdfs++: Fix compilation errors and warnings when compiling with Clang. Contributed by Anatoli Shein.
This commit is contained in:
parent
53e40bc718
commit
033433bce7
|
@ -38,10 +38,12 @@ ENV DEBCONF_TERSE true
|
||||||
# WARNING: DO NOT PUT JAVA APPS HERE! Otherwise they will install default
|
# WARNING: DO NOT PUT JAVA APPS HERE! Otherwise they will install default
|
||||||
# Ubuntu Java. See Java section below!
|
# Ubuntu Java. See Java section below!
|
||||||
######
|
######
|
||||||
|
<<<<<<< 5f556eacf0fedbaec3cdb819847c7c6c3bacc048
|
||||||
RUN apt-get -q update && apt-get -q install -y \
|
RUN apt-get -q update && apt-get -q install -y \
|
||||||
apt-utils \
|
apt-utils \
|
||||||
build-essential \
|
build-essential \
|
||||||
bzip2 \
|
bzip2 \
|
||||||
|
clang \
|
||||||
curl \
|
curl \
|
||||||
doxygen \
|
doxygen \
|
||||||
fuse \
|
fuse \
|
||||||
|
|
|
@ -247,5 +247,77 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</profile>
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>test-patch</id>
|
||||||
|
<activation>
|
||||||
|
<activeByDefault>false</activeByDefault>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<runningWithNative>true</runningWithNative>
|
||||||
|
</properties>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-antrun-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>make_altern</id>
|
||||||
|
<phase>compile</phase>
|
||||||
|
<goals><goal>run</goal></goals>
|
||||||
|
<configuration>
|
||||||
|
<target>
|
||||||
|
<mkdir dir="${project.build.directory}/altern"/>
|
||||||
|
<condition property="c_compiler" value="clang" else="gcc">
|
||||||
|
<contains string="${env.CC}" substring="gcc"/>
|
||||||
|
</condition>
|
||||||
|
<condition property="cxx_compiler" value="clang++" else="g++">
|
||||||
|
<contains string="${env.CXX}" substring="g++"/>
|
||||||
|
</condition>
|
||||||
|
<exec executable="cmake" dir="${project.build.directory}/altern" failonerror="true">
|
||||||
|
<arg line="${basedir}/src/ -DGENERATED_JAVAH=${project.build.directory}/altern/native/javah -DJVM_ARCH_DATA_MODEL=${sun.arch.data.model} -DHADOOP_BUILD=1 -DREQUIRE_LIBWEBHDFS=${require.libwebhdfs} -DREQUIRE_FUSE=${require.fuse} -DREQUIRE_VALGRIND=${require.valgrind} "/>
|
||||||
|
<arg line="-DCMAKE_C_COMPILER=${c_compiler} -DCMAKE_CXX_COMPILER=${cxx_compiler}"/>
|
||||||
|
<arg line="${native_cmake_args}"/>
|
||||||
|
</exec>
|
||||||
|
<exec executable="make" dir="${project.build.directory}/altern" failonerror="true">
|
||||||
|
<arg line="${native_make_args}"/>
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>native_tests_altern</id>
|
||||||
|
<phase>test</phase>
|
||||||
|
<goals><goal>run</goal></goals>
|
||||||
|
<configuration>
|
||||||
|
<skip>${skipTests}</skip>
|
||||||
|
<target>
|
||||||
|
<property name="compile_classpath" refid="maven.compile.classpath"/>
|
||||||
|
<property name="test_classpath" refid="maven.test.classpath"/>
|
||||||
|
<exec executable="ctest" failonerror="true" dir="${project.build.directory}/altern">
|
||||||
|
<arg line="--output-on-failure"/>
|
||||||
|
<arg line="${native_ctest_args}"/>
|
||||||
|
<env key="CLASSPATH" value="${test_classpath}:${compile_classpath}"/>
|
||||||
|
<!-- Make sure libhadoop.so is on LD_LIBRARY_PATH. -->
|
||||||
|
<env key="LD_LIBRARY_PATH" value="${env.LD_LIBRARY_PATH}:${project.build.directory}/altern/target/usr/local/lib:${hadoop.common.build.dir}/native/target/usr/local/lib"/>
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>clean_altern</id>
|
||||||
|
<phase>test</phase>
|
||||||
|
<goals><goal>run</goal></goals>
|
||||||
|
<configuration>
|
||||||
|
<target>
|
||||||
|
<delete dir="${project.build.directory}/altern" includeemptydirs="true"/>
|
||||||
|
</target>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
</profiles>
|
</profiles>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -42,6 +42,47 @@ find_package(CyrusSASL)
|
||||||
find_package(GSasl)
|
find_package(GSasl)
|
||||||
find_package(Threads)
|
find_package(Threads)
|
||||||
|
|
||||||
|
include(CheckCXXSourceCompiles)
|
||||||
|
|
||||||
|
# Check if thread_local is supported
|
||||||
|
unset (THREAD_LOCAL_SUPPORTED CACHE)
|
||||||
|
set (CMAKE_REQUIRED_DEFINITIONS "-std=c++11")
|
||||||
|
set (CMAKE_REQUIRED_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
|
||||||
|
check_cxx_source_compiles(
|
||||||
|
"#include <thread>
|
||||||
|
int main(void) {
|
||||||
|
thread_local int s;
|
||||||
|
return 0;
|
||||||
|
}"
|
||||||
|
THREAD_LOCAL_SUPPORTED)
|
||||||
|
if (NOT THREAD_LOCAL_SUPPORTED)
|
||||||
|
message(FATAL_ERROR
|
||||||
|
"FATAL ERROR: The required feature thread_local storage is not supported by your compiler. \
|
||||||
|
Known compilers that support this feature: GCC, Visual Studio, Clang (community version), \
|
||||||
|
Clang (version for iOS 9 and later).")
|
||||||
|
endif (NOT THREAD_LOCAL_SUPPORTED)
|
||||||
|
|
||||||
|
# Check if PROTOC library was compiled with the compatible compiler by trying
|
||||||
|
# to compile some dummy code
|
||||||
|
unset (PROTOC_IS_COMPATIBLE CACHE)
|
||||||
|
set (CMAKE_REQUIRED_LIBRARIES ${PROTOBUF_LIBRARY} ${PROTOBUF_PROTOC_LIBRARY})
|
||||||
|
check_cxx_source_compiles(
|
||||||
|
"#include <google/protobuf/io/printer.h>
|
||||||
|
#include <string>
|
||||||
|
int main(void) {
|
||||||
|
::google::protobuf::io::ZeroCopyOutputStream *out = NULL;
|
||||||
|
::google::protobuf::io::Printer printer(out, '$');
|
||||||
|
printer.PrintRaw(std::string(\"test\"));
|
||||||
|
return 0;
|
||||||
|
}"
|
||||||
|
PROTOC_IS_COMPATIBLE)
|
||||||
|
if (NOT PROTOC_IS_COMPATIBLE)
|
||||||
|
message(FATAL_ERROR
|
||||||
|
"FATAL ERROR: the Protocol Buffers Library and the Libhdfs++ Library must both be compiled \
|
||||||
|
with the same (or compatible) compiler. Normally only the same major versions of the same \
|
||||||
|
compiler are compatible with each other.")
|
||||||
|
endif (NOT PROTOC_IS_COMPATIBLE)
|
||||||
|
|
||||||
find_program(MEMORYCHECK_COMMAND valgrind HINTS ${VALGRIND_DIR} )
|
find_program(MEMORYCHECK_COMMAND valgrind HINTS ${VALGRIND_DIR} )
|
||||||
set(MEMORYCHECK_COMMAND_OPTIONS "--trace-children=yes --leak-check=full --error-exitcode=1")
|
set(MEMORYCHECK_COMMAND_OPTIONS "--trace-children=yes --leak-check=full --error-exitcode=1")
|
||||||
message(STATUS "valgrind location: ${MEMORYCHECK_COMMAND}")
|
message(STATUS "valgrind location: ${MEMORYCHECK_COMMAND}")
|
||||||
|
@ -104,6 +145,11 @@ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -std=c++11 -g -
|
||||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -fPIC -fno-strict-aliasing")
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -fPIC -fno-strict-aliasing")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||||
|
add_definitions(-DASIO_HAS_STD_ADDRESSOF -DASIO_HAS_STD_ARRAY -DASIO_HAS_STD_ATOMIC -DASIO_HAS_CSTDINT -DASIO_HAS_STD_SHARED_PTR -DASIO_HAS_STD_TYPE_TRAITS -DASIO_HAS_VARIADIC_TEMPLATES -DASIO_HAS_STD_FUNCTION -DASIO_HAS_STD_CHRONO -DASIO_HAS_STD_SYSTEM_ERROR)
|
||||||
|
endif ()
|
||||||
|
|
||||||
# Mac OS 10.7 and later deprecates most of the methods in OpenSSL.
|
# Mac OS 10.7 and later deprecates most of the methods in OpenSSL.
|
||||||
# Add -Wno-deprecated-declarations to avoid the warnings.
|
# Add -Wno-deprecated-declarations to avoid the warnings.
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
|
|
|
@ -23,152 +23,152 @@ namespace hdfs {
|
||||||
|
|
||||||
class DNInfo {
|
class DNInfo {
|
||||||
public:
|
public:
|
||||||
DNInfo() : xfer_port(-1), info_port(-1), IPC_port(-1), info_secure_port(-1) {}
|
DNInfo() : xfer_port_(-1), info_port_(-1), IPC_port_(-1), info_secure_port_(-1) {}
|
||||||
|
|
||||||
std::string getHostname() const {
|
std::string getHostname() const {
|
||||||
return hostname;
|
return hostname_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setHostname(const std::string & hostname) {
|
void setHostname(const std::string & hostname) {
|
||||||
this->hostname = hostname;
|
this->hostname_ = hostname;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string getIPAddr() const {
|
std::string getIPAddr() const {
|
||||||
return ip_addr;
|
return ip_addr_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setIPAddr(const std::string & ip_addr) {
|
void setIPAddr(const std::string & ip_addr) {
|
||||||
this->ip_addr = ip_addr;
|
this->ip_addr_ = ip_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string getNetworkLocation() const {
|
std::string getNetworkLocation() const {
|
||||||
return network_location;
|
return network_location_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setNetworkLocation(const std::string & location) {
|
void setNetworkLocation(const std::string & location) {
|
||||||
this->network_location = location;
|
this->network_location_ = location;
|
||||||
}
|
}
|
||||||
|
|
||||||
int getXferPort() const {
|
int getXferPort() const {
|
||||||
return xfer_port;
|
return xfer_port_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setXferPort(int xfer_port) {
|
void setXferPort(int xfer_port) {
|
||||||
this->xfer_port = xfer_port;
|
this->xfer_port_ = xfer_port;
|
||||||
}
|
}
|
||||||
|
|
||||||
int getInfoPort() const {
|
int getInfoPort() const {
|
||||||
return info_port;
|
return info_port_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setInfoPort(int info_port) {
|
void setInfoPort(int info_port) {
|
||||||
this->info_port = info_port;
|
this->info_port_ = info_port;
|
||||||
}
|
}
|
||||||
|
|
||||||
int getIPCPort() const {
|
int getIPCPort() const {
|
||||||
return IPC_port;
|
return IPC_port_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setIPCPort(int IPC_port) {
|
void setIPCPort(int IPC_port) {
|
||||||
this->IPC_port = IPC_port;
|
this->IPC_port_ = IPC_port;
|
||||||
}
|
}
|
||||||
|
|
||||||
int getInfoSecurePort() const {
|
int getInfoSecurePort() const {
|
||||||
return info_secure_port;
|
return info_secure_port_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setInfoSecurePort(int info_secure_port) {
|
void setInfoSecurePort(int info_secure_port) {
|
||||||
this->info_secure_port = info_secure_port;
|
this->info_secure_port_ = info_secure_port;
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
std::string hostname;
|
std::string hostname_;
|
||||||
std::string ip_addr;
|
std::string ip_addr_;
|
||||||
std::string network_location;
|
std::string network_location_;
|
||||||
int xfer_port;
|
int xfer_port_;
|
||||||
int info_port;
|
int info_port_;
|
||||||
int IPC_port;
|
int IPC_port_;
|
||||||
int info_secure_port;
|
int info_secure_port_;
|
||||||
};
|
};
|
||||||
|
|
||||||
class BlockLocation {
|
class BlockLocation {
|
||||||
public:
|
public:
|
||||||
bool isCorrupt() const {
|
bool isCorrupt() const {
|
||||||
return corrupt;
|
return corrupt_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setCorrupt(bool corrupt) {
|
void setCorrupt(bool corrupt) {
|
||||||
this->corrupt = corrupt;
|
this->corrupt_ = corrupt;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t getLength() const {
|
int64_t getLength() const {
|
||||||
return length;
|
return length_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setLength(int64_t length) {
|
void setLength(int64_t length) {
|
||||||
this->length = length;
|
this->length_ = length;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t getOffset() const {
|
int64_t getOffset() const {
|
||||||
return offset;
|
return offset_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setOffset(int64_t offset) {
|
void setOffset(int64_t offset) {
|
||||||
this->offset = offset;
|
this->offset_ = offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<DNInfo> & getDataNodes() const {
|
const std::vector<DNInfo> & getDataNodes() const {
|
||||||
return dn_info;
|
return dn_info_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setDataNodes(const std::vector<DNInfo> & dn_info) {
|
void setDataNodes(const std::vector<DNInfo> & dn_info) {
|
||||||
this->dn_info = dn_info;
|
this->dn_info_ = dn_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool corrupt;
|
bool corrupt_;
|
||||||
int64_t length;
|
int64_t length_;
|
||||||
int64_t offset; // Offset of the block in the file
|
int64_t offset_; // Offset of the block in the file
|
||||||
std::vector<DNInfo> dn_info; // Info about who stores each block
|
std::vector<DNInfo> dn_info_; // Info about who stores each block
|
||||||
};
|
};
|
||||||
|
|
||||||
class FileBlockLocation {
|
class FileBlockLocation {
|
||||||
public:
|
public:
|
||||||
uint64_t getFileLength() {
|
uint64_t getFileLength() {
|
||||||
return fileLength;
|
return fileLength_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setFileLength(uint64_t fileLength) {
|
void setFileLength(uint64_t fileLength) {
|
||||||
this->fileLength = fileLength;
|
this->fileLength_ = fileLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isLastBlockComplete() const {
|
bool isLastBlockComplete() const {
|
||||||
return this->lastBlockComplete;
|
return this->lastBlockComplete_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setLastBlockComplete(bool lastBlockComplete) {
|
void setLastBlockComplete(bool lastBlockComplete) {
|
||||||
this->lastBlockComplete = lastBlockComplete;
|
this->lastBlockComplete_ = lastBlockComplete;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isUnderConstruction() const {
|
bool isUnderConstruction() const {
|
||||||
return underConstruction;
|
return underConstruction_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setUnderConstruction(bool underConstruction) {
|
void setUnderConstruction(bool underConstruction) {
|
||||||
this->underConstruction = underConstruction;
|
this->underConstruction_ = underConstruction;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<BlockLocation> & getBlockLocations() const {
|
const std::vector<BlockLocation> & getBlockLocations() const {
|
||||||
return blockLocations;
|
return blockLocations_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setBlockLocations(const std::vector<BlockLocation> & blockLocations) {
|
void setBlockLocations(const std::vector<BlockLocation> & blockLocations) {
|
||||||
this->blockLocations = blockLocations;
|
this->blockLocations_ = blockLocations;
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
uint64_t fileLength;
|
uint64_t fileLength_;
|
||||||
bool lastBlockComplete;
|
bool lastBlockComplete_;
|
||||||
bool underConstruction;
|
bool underConstruction_;
|
||||||
std::vector<BlockLocation> blockLocations;
|
std::vector<BlockLocation> blockLocations_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace hdfs
|
} // namespace hdfs
|
||||||
|
|
|
@ -93,7 +93,7 @@ class IoService : public std::enable_shared_from_this<IoService>
|
||||||
**/
|
**/
|
||||||
class NodeExclusionRule {
|
class NodeExclusionRule {
|
||||||
public:
|
public:
|
||||||
virtual ~NodeExclusionRule(){};
|
virtual ~NodeExclusionRule();
|
||||||
virtual bool IsBadNode(const std::string &node_uuid) = 0;
|
virtual bool IsBadNode(const std::string &node_uuid) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -258,7 +258,7 @@ class FileSystem {
|
||||||
* this method call. The blocks will be populated or removed in the
|
* this method call. The blocks will be populated or removed in the
|
||||||
* background as the result of the routine block maintenance procedures.
|
* background as the result of the routine block maintenance procedures.
|
||||||
*
|
*
|
||||||
* @param src file name
|
* @param path file name
|
||||||
* @param replication new replication
|
* @param replication new replication
|
||||||
*/
|
*/
|
||||||
virtual void SetReplication(const std::string & path, int16_t replication, std::function<void(const Status &)> handler) = 0;
|
virtual void SetReplication(const std::string & path, int16_t replication, std::function<void(const Status &)> handler) = 0;
|
||||||
|
@ -266,7 +266,7 @@ class FileSystem {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the modification and access time of the file to the specified time.
|
* Sets the modification and access time of the file to the specified time.
|
||||||
* @param src The string representation of the path
|
* @param path The string representation of the path
|
||||||
* @param mtime The number of milliseconds since Jan 1, 1970.
|
* @param mtime The number of milliseconds since Jan 1, 1970.
|
||||||
* Setting mtime to -1 means that modification time should not
|
* Setting mtime to -1 means that modification time should not
|
||||||
* be set by this call.
|
* be set by this call.
|
||||||
|
@ -297,7 +297,7 @@ class FileSystem {
|
||||||
* Retrieves the file system information as a whole, such as the total raw size of all files in the filesystem
|
* Retrieves the file system information as a whole, such as the total raw size of all files in the filesystem
|
||||||
* and the raw capacity of the filesystem
|
* and the raw capacity of the filesystem
|
||||||
*
|
*
|
||||||
* @param FsInfo struct to be populated by GetFsStats
|
* FsInfo struct is populated by GetFsStats
|
||||||
**/
|
**/
|
||||||
virtual void GetFsStats(
|
virtual void GetFsStats(
|
||||||
const std::function<void(const Status &, const FsInfo &)> &handler) = 0;
|
const std::function<void(const Status &, const FsInfo &)> &handler) = 0;
|
||||||
|
@ -357,7 +357,6 @@ class FileSystem {
|
||||||
* Rename - Rename file.
|
* Rename - Rename file.
|
||||||
* @param oldPath The path of the source file. (must be non-empty)
|
* @param oldPath The path of the source file. (must be non-empty)
|
||||||
* @param newPath The path of the destination file. (must be non-empty)
|
* @param newPath The path of the destination file. (must be non-empty)
|
||||||
* @return Returns 0 on success, -1 on error.
|
|
||||||
*/
|
*/
|
||||||
virtual void Rename(const std::string &oldPath, const std::string &newPath,
|
virtual void Rename(const std::string &oldPath, const std::string &newPath,
|
||||||
const std::function<void(const Status &)> &handler) = 0;
|
const std::function<void(const Status &)> &handler) = 0;
|
||||||
|
@ -379,7 +378,6 @@ class FileSystem {
|
||||||
* @param path file path
|
* @param path file path
|
||||||
* @param username If it is empty, the original username remains unchanged.
|
* @param username If it is empty, the original username remains unchanged.
|
||||||
* @param groupname If it is empty, the original groupname remains unchanged.
|
* @param groupname If it is empty, the original groupname remains unchanged.
|
||||||
* @param recursive If true, the change will be propagated recursively.
|
|
||||||
*/
|
*/
|
||||||
virtual void SetOwner(const std::string & path, const std::string & username,
|
virtual void SetOwner(const std::string & path, const std::string & username,
|
||||||
const std::string & groupname, const std::function<void(const Status &)> &handler) = 0;
|
const std::string & groupname, const std::function<void(const Status &)> &handler) = 0;
|
||||||
|
@ -469,7 +467,7 @@ class FileSystem {
|
||||||
* Note that it is an error to destroy the filesystem from within a filesystem
|
* Note that it is an error to destroy the filesystem from within a filesystem
|
||||||
* callback. It will lead to a deadlock and the termination of the process.
|
* callback. It will lead to a deadlock and the termination of the process.
|
||||||
*/
|
*/
|
||||||
virtual ~FileSystem() {};
|
virtual ~FileSystem();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -28,9 +28,9 @@ namespace hdfs {
|
||||||
|
|
||||||
|
|
||||||
struct NamenodeInfo {
|
struct NamenodeInfo {
|
||||||
NamenodeInfo(const std::string &nameservice, const std::string &nodename, const URI &uri) :
|
NamenodeInfo(const std::string &nameservice_, const std::string &nodename_, const URI &uri_) :
|
||||||
nameservice(nameservice), name(nodename), uri(uri) {}
|
nameservice(nameservice_), name(nodename_), uri(uri_) {}
|
||||||
NamenodeInfo(){};
|
NamenodeInfo(){}
|
||||||
//nameservice this belongs to
|
//nameservice this belongs to
|
||||||
std::string nameservice;
|
std::string nameservice;
|
||||||
//node name
|
//node name
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace hdfs {
|
||||||
class Status {
|
class Status {
|
||||||
public:
|
public:
|
||||||
// Create a success status.
|
// Create a success status.
|
||||||
Status() : code_(0) {};
|
Status() : code_(0) {}
|
||||||
|
|
||||||
// Note: Avoid calling the Status constructors directly, call the factory methods instead
|
// Note: Avoid calling the Status constructors directly, call the factory methods instead
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
#ifndef LIB_FS_AUTHINFO_H
|
#ifndef LIB_FS_AUTHINFO_H
|
||||||
#define LIB_FS_AUTHINFO_H
|
#define LIB_FS_AUTHINFO_H
|
||||||
|
|
||||||
#include <optional.hpp>
|
#include "common/optional_wrapper.h"
|
||||||
|
|
||||||
namespace hdfs {
|
namespace hdfs {
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <istream>
|
#include <istream>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <optional.hpp>
|
#include "common/optional_wrapper.h"
|
||||||
|
|
||||||
namespace hdfs {
|
namespace hdfs {
|
||||||
|
|
||||||
|
@ -76,8 +76,8 @@ protected:
|
||||||
struct ConfigData {
|
struct ConfigData {
|
||||||
std::string value;
|
std::string value;
|
||||||
bool final;
|
bool final;
|
||||||
ConfigData() : final(false){};
|
ConfigData() : final(false){}
|
||||||
ConfigData(const std::string &value) : value(value), final(false) {}
|
ConfigData(const std::string &value_) : value(value_), final(false) {}
|
||||||
void operator=(const std::string &new_value) {
|
void operator=(const std::string &new_value) {
|
||||||
value = new_value;
|
value = new_value;
|
||||||
final = false;
|
final = false;
|
||||||
|
@ -85,9 +85,9 @@ protected:
|
||||||
};
|
};
|
||||||
typedef std::map<std::string, ConfigData> ConfigMap;
|
typedef std::map<std::string, ConfigData> ConfigMap;
|
||||||
|
|
||||||
Configuration() {};
|
Configuration() {}
|
||||||
Configuration(ConfigMap &src_map) : raw_values_(src_map){};
|
Configuration(ConfigMap &src_map) : raw_values_(src_map){}
|
||||||
Configuration(const ConfigMap &src_map) : raw_values_(src_map){};
|
Configuration(const ConfigMap &src_map) : raw_values_(src_map){}
|
||||||
|
|
||||||
static std::vector<std::string> GetDefaultFilenames();
|
static std::vector<std::string> GetDefaultFilenames();
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ protected:
|
||||||
|
|
||||||
static std::string fixCase(const std::string &in) {
|
static std::string fixCase(const std::string &in) {
|
||||||
std::string result(in);
|
std::string result(in);
|
||||||
for (auto & c: result) c = (char) toupper(c);
|
for (auto & c: result) c = static_cast<char>(toupper(c));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -20,9 +20,8 @@
|
||||||
#define LIBHDFSPP_COMMON_LIBHDFSEVENTS_IMPL
|
#define LIBHDFSPP_COMMON_LIBHDFSEVENTS_IMPL
|
||||||
|
|
||||||
#include "hdfspp/events.h"
|
#include "hdfspp/events.h"
|
||||||
|
#include "common/optional_wrapper.h"
|
||||||
|
|
||||||
|
|
||||||
#include <optional.hpp>
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
namespace hdfs {
|
namespace hdfs {
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
/**
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef COMMON_OPTIONAL_WRAPPER_H_
|
||||||
|
#define COMMON_OPTIONAL_WRAPPER_H_
|
||||||
|
|
||||||
|
#ifdef __clang__
|
||||||
|
#pragma clang diagnostic push
|
||||||
|
#if __has_warning("-Wweak-vtables")
|
||||||
|
#pragma clang diagnostic ignored "-Wweak-vtables"
|
||||||
|
#endif
|
||||||
|
#if __has_warning("-Wreserved-id-macro")
|
||||||
|
#pragma clang diagnostic ignored "-Wreserved-id-macro"
|
||||||
|
#endif
|
||||||
|
#if __has_warning("-Wextra-semi")
|
||||||
|
#pragma clang diagnostic ignored "-Wextra-semi"
|
||||||
|
#endif
|
||||||
|
#define TR2_OPTIONAL_DISABLE_EMULATION_OF_TYPE_TRAITS //For Clang < 3_4_2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <optional.hpp>
|
||||||
|
|
||||||
|
#ifdef __clang__
|
||||||
|
#undef TR2_OPTIONAL_DISABLE_EMULATION_OF_TYPE_TRAITS //For Clang < 3_4_2
|
||||||
|
#pragma clang diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif //COMMON_OPTIONAL_WRAPPER_H_
|
|
@ -160,7 +160,7 @@ class SwappableCallbackHolder {
|
||||||
} else if (callback_accessed_) {
|
} else if (callback_accessed_) {
|
||||||
// Common case where callback has been invoked but caller may not know
|
// Common case where callback has been invoked but caller may not know
|
||||||
LOG_DEBUG(kAsyncRuntime, << "AtomicSwapCallback called after callback has been accessed");
|
LOG_DEBUG(kAsyncRuntime, << "AtomicSwapCallback called after callback has been accessed");
|
||||||
return false;
|
return callback_;
|
||||||
}
|
}
|
||||||
|
|
||||||
CallbackType old = callback_;
|
CallbackType old = callback_;
|
||||||
|
|
|
@ -20,6 +20,8 @@
|
||||||
|
|
||||||
namespace hdfs {
|
namespace hdfs {
|
||||||
|
|
||||||
|
NodeExclusionRule::~NodeExclusionRule() {}
|
||||||
|
|
||||||
BadDataNodeTracker::BadDataNodeTracker(const Options& options)
|
BadDataNodeTracker::BadDataNodeTracker(const Options& options)
|
||||||
: timeout_duration_(options.host_exclusion_duration),
|
: timeout_duration_(options.host_exclusion_duration),
|
||||||
test_clock_shift_(0) {}
|
test_clock_shift_(0) {}
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
namespace hdfs {
|
namespace hdfs {
|
||||||
|
|
||||||
class BlockReader;
|
class BlockReader;
|
||||||
class BlockReaderOptions;
|
struct BlockReaderOptions;
|
||||||
class DataNodeConnection;
|
class DataNodeConnection;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -70,6 +70,8 @@ Status FileSystem::CheckValidReplication(uint16_t replication) {
|
||||||
return Status::OK();
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FileSystem::~FileSystem() {}
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* FILESYSTEM BASE CLASS
|
* FILESYSTEM BASE CLASS
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
#include "common/util.h"
|
#include "common/util.h"
|
||||||
#include "common/logging.h"
|
#include "common/logging.h"
|
||||||
#include "common/namenode_info.h"
|
#include "common/namenode_info.h"
|
||||||
#include "optional.hpp"
|
#include "common/optional_wrapper.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
#define LIB_RPC_SASLENGINE_H
|
#define LIB_RPC_SASLENGINE_H
|
||||||
|
|
||||||
#include "hdfspp/status.h"
|
#include "hdfspp/status.h"
|
||||||
#include "optional.hpp"
|
#include "common/optional_wrapper.h"
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "rpc_engine.h"
|
#include "rpc_engine.h"
|
||||||
#include "rpc_connection.h"
|
#include "rpc_connection.h"
|
||||||
#include "common/logging.h"
|
#include "common/logging.h"
|
||||||
|
#include "common/optional_wrapper.h"
|
||||||
|
|
||||||
#include "sasl_engine.h"
|
#include "sasl_engine.h"
|
||||||
#include "sasl_protocol.h"
|
#include "sasl_protocol.h"
|
||||||
|
@ -33,8 +34,6 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <optional.hpp>
|
|
||||||
|
|
||||||
namespace hdfs {
|
namespace hdfs {
|
||||||
|
|
||||||
using namespace hadoop::common;
|
using namespace hadoop::common;
|
||||||
|
|
|
@ -99,5 +99,7 @@ int main(int argc, char *argv[]) {
|
||||||
// The following line must be executed to initialize Google Mock
|
// The following line must be executed to initialize Google Mock
|
||||||
// (and Google Test) before running the tests.
|
// (and Google Test) before running the tests.
|
||||||
::testing::InitGoogleMock(&argc, argv);
|
::testing::InitGoogleMock(&argc, argv);
|
||||||
return RUN_ALL_TESTS();
|
int exit_code = RUN_ALL_TESTS();
|
||||||
|
google::protobuf::ShutdownProtobufLibrary();
|
||||||
|
return exit_code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,5 +80,7 @@ int main(int argc, char *argv[]) {
|
||||||
// The following line must be executed to initialize Google Mock
|
// The following line must be executed to initialize Google Mock
|
||||||
// (and Google Test) before running the tests.
|
// (and Google Test) before running the tests.
|
||||||
::testing::InitGoogleMock(&argc, argv);
|
::testing::InitGoogleMock(&argc, argv);
|
||||||
return RUN_ALL_TESTS();
|
int exit_code = RUN_ALL_TESTS();
|
||||||
|
google::protobuf::ShutdownProtobufLibrary();
|
||||||
|
return exit_code;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue