1
0
Fork 0

Merge branch 'devel' of github.com:arangodb/arangodb into devel

This commit is contained in:
hkernbach 2016-09-27 15:00:30 +02:00
commit 0ea2ca2520
4 changed files with 53 additions and 81 deletions

View File

@ -677,7 +677,7 @@ LogicalCollection* CreateCollectionCoordinator(LogicalCollection* parameters) {
std::unordered_map<std::string, std::vector<std::string>>>(
arangodb::distributeShards(parameters->numberOfShards(),
parameters->replicationFactor(), dbServers));
if (shards->empty()) {
if (shards->empty() && !parameters->isSmart()) {
THROW_ARANGO_EXCEPTION_MESSAGE(TRI_ERROR_INTERNAL,
"no database servers found in cluster");
}

View File

@ -994,10 +994,31 @@ void LogicalCollection::setStatus(TRI_vocbase_col_status_e status) {
}
}
// TODO Make this pretty. Copy of other with only one swith. Ambigous
void LogicalCollection::toVelocyPackForAgency(VPackBuilder& result) {
_status = TRI_VOC_COL_STATUS_LOADED;
result.openObject();
toVelocyPackInObject(result);
result.close(); // Base Object
}
void LogicalCollection::toVelocyPack(VPackBuilder& result, bool withPath) const {
result.openObject();
toVelocyPackInObject(result);
result.add("cid", VPackValue(std::to_string(_cid))); // export cid for compatibility, too
result.add("planId", VPackValue(std::to_string(_planId))); // export planId for cluster
result.add("version", VPackValue(_version));
if (withPath) {
result.add("path", VPackValue(_path));
}
result.add("allowUserKeys", VPackValue(_allowUserKeys));
result.close();
}
// Internal helper that inserts VPack info into an existing object and leaves the object open
void LogicalCollection::toVelocyPackInObject(VPackBuilder& result) const {
result.add("id", VPackValue(std::to_string(_cid)));
result.add("name", VPackValue(_name));
result.add("type", VPackValue(static_cast<int>(_type)));
@ -1041,63 +1062,8 @@ void LogicalCollection::toVelocyPackForAgency(VPackBuilder& result) {
}
result.close(); // shards
result.add(VPackValue("indexes"));
getIndexesVPack(result, false);
result.close(); // Base Object
}
void LogicalCollection::toVelocyPack(VPackBuilder& result, bool withPath) const {
result.openObject();
result.add("id", VPackValue(std::to_string(_cid)));
result.add("cid", VPackValue(std::to_string(_cid))); // export cid for compatibility, too
result.add("planId", VPackValue(std::to_string(_planId))); // export planId for cluster
result.add("name", VPackValue(_name));
result.add("status", VPackValue(_status));
result.add("deleted", VPackValue(_isDeleted));
result.add("type", VPackValue(static_cast<int>(_type)));
result.add("doCompact", VPackValue(_doCompact));
result.add("isSystem", VPackValue(_isSystem));
result.add("isVolatile", VPackValue(_isVolatile));
result.add("waitForSync", VPackValue(_waitForSync));
result.add("journalSize", VPackValue(_journalSize));
result.add("version", VPackValue(_version));
if (_keyGenerator != nullptr) {
result.add(VPackValue("keyOptions"));
result.openObject();
_keyGenerator->toVelocyPack(result);
result.close();
}
if (withPath) {
result.add("path", VPackValue(_path));
}
result.add("indexBuckets", VPackValue(_indexBuckets));
result.add(VPackValue("indexes"));
getIndexesVPack(result, false);
result.add("replicationFactor", VPackValue(_replicationFactor));
result.add(VPackValue("shards"));
result.openObject();
for (auto const& shards : *_shardIds) {
result.add(VPackValue(shards.first));
result.openArray();
for (auto const& servers : shards.second) {
result.add(VPackValue(servers));
}
result.close(); // server array
}
result.close(); // shards
result.add("allowUserKeys", VPackValue(_allowUserKeys));
result.add(VPackValue("shardKeys"));
result.openArray();
for (auto const& key : _shardKeys) {
result.add(VPackValue(key));
}
result.close(); // shardKeys
result.close(); // Base Object
}
void LogicalCollection::toVelocyPack(VPackBuilder& builder, bool includeIndexes,

View File

@ -223,7 +223,7 @@ class LogicalCollection {
// SECTION: Serialisation
void toVelocyPack(arangodb::velocypack::Builder&, bool withPath) const;
void toVelocyPackForAgency(arangodb::velocypack::Builder&);
virtual void toVelocyPackForAgency(arangodb::velocypack::Builder&);
/// @brief transform the information for this collection to velocypack
/// The builder has to be an opened Type::Object
@ -356,7 +356,7 @@ class LogicalCollection {
int endRead(bool useDeadlockDetector);
int endWrite(bool useDeadlockDetector);
private:
protected:
// SECTION: Private functions
PhysicalCollection* createPhysical();
@ -402,7 +402,7 @@ class LogicalCollection {
public:
// FIXME needs to be private
int deletePrimaryIndex(arangodb::Transaction*, TRI_doc_mptr_t const*);
private:
protected:
int insertSecondaryIndexes(arangodb::Transaction*, TRI_doc_mptr_t const*,
bool);
@ -453,7 +453,9 @@ class LogicalCollection {
void increaseInternalVersion();
private:
void toVelocyPackInObject(VPackBuilder& result) const;
protected:
// SECTION: Private variables
// SECTION: Meta Information
@ -509,7 +511,7 @@ class LogicalCollection {
int const _replicationFactor;
// SECTION: Sharding
size_t const _numberOfShards;
size_t _numberOfShards;
bool const _allowUserKeys;
std::vector<std::string> _shardKeys;
// This is shared_ptr because it is thread-safe

View File

@ -1,11 +1,11 @@
include(${CMAKE_SOURCE_DIR}/cmake/GNUInstallDirs.cmake)
set(ARANGODB_SOURCE_DIR ${CMAKE_SOURCE_DIR})
set(CMAKE_INSTALL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_SYSCONFDIR}/arangodb3")
set(CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_FULL_SYSCONFDIR}/arangodb3")
set(CMAKE_INSTALL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_SYSCONFDIR}/${CMAKE_PROJECT_NAME}")
set(CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_FULL_SYSCONFDIR}/${CMAKE_PROJECT_NAME}")
set(CMAKE_INSTALL_DATAROOTDIR_ARANGO "${CMAKE_INSTALL_DATAROOTDIR}/arangodb3")
set(CMAKE_INSTALL_FULL_DATAROOTDIR_ARANGO "${CMAKE_INSTALL_FULL_DATAROOTDIR}/arangodb3")
set(CMAKE_INSTALL_DATAROOTDIR_ARANGO "${CMAKE_INSTALL_DATAROOTDIR}/${CMAKE_PROJECT_NAME}")
set(CMAKE_INSTALL_FULL_DATAROOTDIR_ARANGO "${CMAKE_INSTALL_FULL_DATAROOTDIR}/${CMAKE_PROJECT_NAME}")
if (MSVC OR DARWIN)
set(ENABLE_UID_CFG false)
@ -13,17 +13,19 @@ else ()
set(ENABLE_UID_CFG true)
endif ()
set(CMAKE_INSTALL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_SYSCONFDIR}/arangodb3")
set(CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_FULL_SYSCONFDIR}/arangodb3")
set(CMAKE_INSTALL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_SYSCONFDIR}/${CMAKE_PROJECT_NAME}")
set(CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_FULL_SYSCONFDIR}/${CMAKE_PROJECT_NAME}")
# database directory
FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/lib/arangodb3")
# database directory
set(ARANGODB_DB_DIRECTORY "${PROJECT_BINARY_DIR}/var/lib/${CMAKE_PROJECT_NAME}")
FILE(MAKE_DIRECTORY ${ARANGODB_DB_DIRECTORY})
# apps
FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/lib/arangodb3-apps")
set(ARANGODB_APPS_DIRECTORY "${PROJECT_BINARY_DIR}/var/lib/${CMAKE_PROJECT_NAME}-apps")
FILE(MAKE_DIRECTORY "${ARANGODB_APPS_DIRECTORY}")
# logs
FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/log/arangodb3")
FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/log/${CMAKE_PROJECT_NAME}")
include(InstallMacros)
@ -69,7 +71,7 @@ install(
################################################################################
install(
DIRECTORY ${PROJECT_BINARY_DIR}/var/lib/arangodb3
DIRECTORY ${ARANGODB_DB_DIRECTORY}
DESTINATION ${CMAKE_INSTALL_LOCALSTATEDIR}/lib)
################################################################################
@ -77,22 +79,24 @@ install(
################################################################################
install(
DIRECTORY ${PROJECT_BINARY_DIR}/var/lib/arangodb3-apps
DIRECTORY ${ARANGODB_APPS_DIRECTORY}
DESTINATION ${CMAKE_INSTALL_LOCALSTATEDIR}/lib)
################################################################################
### @brief install systemd service file
### @brief detect if we're on a systemd enabled system; if install unit file.
################################################################################
if (${USE_ENTERPRISE})
configure_file (
FILES ${ARANGODB_SOURCE_DIR}/Installation/systemd/arangodb3.service.in
DESTINATION ${PROJECT_BINARY_DIR}/usr/lib/systemd/system/arangodb3e.service
NEWLINE_STYLE UNIX)
else()
if (IS_DIRECTORY /usr/lib/systemd/system)
configure_file (
${ARANGODB_SOURCE_DIR}/Installation/systemd/arangodb3.service.in
${PROJECT_BINARY_DIR}/usr/lib/systemd/system/arangodb3.service
NEWLINE_STYLE UNIX)
if (${USE_ENTERPRISE})
install(FILES ${PROJECT_BINARY_DIR}/usr/lib/systemd/system/arangodb3.service
DESTINATION /usr/lib/systemd/system/arangodb3e.service)
else()
install(FILES ${PROJECT_BINARY_DIR}/usr/lib/systemd/system/arangodb3.service
DESTINATION /usr/lib/systemd/system/arangodb3.service)
endif()
endif()