mirror of https://gitee.com/bigwinds/arangodb
Merge branch 'devel' of github.com:arangodb/arangodb into devel
This commit is contained in:
commit
0ea2ca2520
|
@ -677,7 +677,7 @@ LogicalCollection* CreateCollectionCoordinator(LogicalCollection* parameters) {
|
||||||
std::unordered_map<std::string, std::vector<std::string>>>(
|
std::unordered_map<std::string, std::vector<std::string>>>(
|
||||||
arangodb::distributeShards(parameters->numberOfShards(),
|
arangodb::distributeShards(parameters->numberOfShards(),
|
||||||
parameters->replicationFactor(), dbServers));
|
parameters->replicationFactor(), dbServers));
|
||||||
if (shards->empty()) {
|
if (shards->empty() && !parameters->isSmart()) {
|
||||||
THROW_ARANGO_EXCEPTION_MESSAGE(TRI_ERROR_INTERNAL,
|
THROW_ARANGO_EXCEPTION_MESSAGE(TRI_ERROR_INTERNAL,
|
||||||
"no database servers found in cluster");
|
"no database servers found in cluster");
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
void LogicalCollection::toVelocyPackForAgency(VPackBuilder& result) {
|
||||||
_status = TRI_VOC_COL_STATUS_LOADED;
|
_status = TRI_VOC_COL_STATUS_LOADED;
|
||||||
result.openObject();
|
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("id", VPackValue(std::to_string(_cid)));
|
||||||
result.add("name", VPackValue(_name));
|
result.add("name", VPackValue(_name));
|
||||||
result.add("type", VPackValue(static_cast<int>(_type)));
|
result.add("type", VPackValue(static_cast<int>(_type)));
|
||||||
|
@ -1041,63 +1062,8 @@ void LogicalCollection::toVelocyPackForAgency(VPackBuilder& result) {
|
||||||
}
|
}
|
||||||
result.close(); // shards
|
result.close(); // shards
|
||||||
|
|
||||||
|
|
||||||
result.add(VPackValue("indexes"));
|
result.add(VPackValue("indexes"));
|
||||||
getIndexesVPack(result, false);
|
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,
|
void LogicalCollection::toVelocyPack(VPackBuilder& builder, bool includeIndexes,
|
||||||
|
|
|
@ -223,7 +223,7 @@ class LogicalCollection {
|
||||||
|
|
||||||
// SECTION: Serialisation
|
// SECTION: Serialisation
|
||||||
void toVelocyPack(arangodb::velocypack::Builder&, bool withPath) const;
|
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
|
/// @brief transform the information for this collection to velocypack
|
||||||
/// The builder has to be an opened Type::Object
|
/// The builder has to be an opened Type::Object
|
||||||
|
@ -356,7 +356,7 @@ class LogicalCollection {
|
||||||
int endRead(bool useDeadlockDetector);
|
int endRead(bool useDeadlockDetector);
|
||||||
int endWrite(bool useDeadlockDetector);
|
int endWrite(bool useDeadlockDetector);
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
// SECTION: Private functions
|
// SECTION: Private functions
|
||||||
|
|
||||||
PhysicalCollection* createPhysical();
|
PhysicalCollection* createPhysical();
|
||||||
|
@ -402,7 +402,7 @@ class LogicalCollection {
|
||||||
public:
|
public:
|
||||||
// FIXME needs to be private
|
// FIXME needs to be private
|
||||||
int deletePrimaryIndex(arangodb::Transaction*, TRI_doc_mptr_t const*);
|
int deletePrimaryIndex(arangodb::Transaction*, TRI_doc_mptr_t const*);
|
||||||
private:
|
protected:
|
||||||
|
|
||||||
int insertSecondaryIndexes(arangodb::Transaction*, TRI_doc_mptr_t const*,
|
int insertSecondaryIndexes(arangodb::Transaction*, TRI_doc_mptr_t const*,
|
||||||
bool);
|
bool);
|
||||||
|
@ -453,7 +453,9 @@ class LogicalCollection {
|
||||||
|
|
||||||
void increaseInternalVersion();
|
void increaseInternalVersion();
|
||||||
|
|
||||||
private:
|
void toVelocyPackInObject(VPackBuilder& result) const;
|
||||||
|
|
||||||
|
protected:
|
||||||
// SECTION: Private variables
|
// SECTION: Private variables
|
||||||
|
|
||||||
// SECTION: Meta Information
|
// SECTION: Meta Information
|
||||||
|
@ -509,7 +511,7 @@ class LogicalCollection {
|
||||||
int const _replicationFactor;
|
int const _replicationFactor;
|
||||||
|
|
||||||
// SECTION: Sharding
|
// SECTION: Sharding
|
||||||
size_t const _numberOfShards;
|
size_t _numberOfShards;
|
||||||
bool const _allowUserKeys;
|
bool const _allowUserKeys;
|
||||||
std::vector<std::string> _shardKeys;
|
std::vector<std::string> _shardKeys;
|
||||||
// This is shared_ptr because it is thread-safe
|
// This is shared_ptr because it is thread-safe
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
include(${CMAKE_SOURCE_DIR}/cmake/GNUInstallDirs.cmake)
|
include(${CMAKE_SOURCE_DIR}/cmake/GNUInstallDirs.cmake)
|
||||||
|
|
||||||
set(ARANGODB_SOURCE_DIR ${CMAKE_SOURCE_DIR})
|
set(ARANGODB_SOURCE_DIR ${CMAKE_SOURCE_DIR})
|
||||||
set(CMAKE_INSTALL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_SYSCONFDIR}/arangodb3")
|
set(CMAKE_INSTALL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_SYSCONFDIR}/${CMAKE_PROJECT_NAME}")
|
||||||
set(CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_FULL_SYSCONFDIR}/arangodb3")
|
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_DATAROOTDIR_ARANGO "${CMAKE_INSTALL_DATAROOTDIR}/${CMAKE_PROJECT_NAME}")
|
||||||
set(CMAKE_INSTALL_FULL_DATAROOTDIR_ARANGO "${CMAKE_INSTALL_FULL_DATAROOTDIR}/arangodb3")
|
set(CMAKE_INSTALL_FULL_DATAROOTDIR_ARANGO "${CMAKE_INSTALL_FULL_DATAROOTDIR}/${CMAKE_PROJECT_NAME}")
|
||||||
|
|
||||||
if (MSVC OR DARWIN)
|
if (MSVC OR DARWIN)
|
||||||
set(ENABLE_UID_CFG false)
|
set(ENABLE_UID_CFG false)
|
||||||
|
@ -13,17 +13,19 @@ else ()
|
||||||
set(ENABLE_UID_CFG true)
|
set(ENABLE_UID_CFG true)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set(CMAKE_INSTALL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_SYSCONFDIR}/arangodb3")
|
set(CMAKE_INSTALL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_SYSCONFDIR}/${CMAKE_PROJECT_NAME}")
|
||||||
set(CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_FULL_SYSCONFDIR}/arangodb3")
|
set(CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_FULL_SYSCONFDIR}/${CMAKE_PROJECT_NAME}")
|
||||||
|
|
||||||
# database directory
|
# database directory
|
||||||
FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/lib/arangodb3")
|
set(ARANGODB_DB_DIRECTORY "${PROJECT_BINARY_DIR}/var/lib/${CMAKE_PROJECT_NAME}")
|
||||||
|
FILE(MAKE_DIRECTORY ${ARANGODB_DB_DIRECTORY})
|
||||||
|
|
||||||
# apps
|
# 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
|
# logs
|
||||||
FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/log/arangodb3")
|
FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/log/${CMAKE_PROJECT_NAME}")
|
||||||
|
|
||||||
include(InstallMacros)
|
include(InstallMacros)
|
||||||
|
|
||||||
|
@ -69,7 +71,7 @@ install(
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
install(
|
install(
|
||||||
DIRECTORY ${PROJECT_BINARY_DIR}/var/lib/arangodb3
|
DIRECTORY ${ARANGODB_DB_DIRECTORY}
|
||||||
DESTINATION ${CMAKE_INSTALL_LOCALSTATEDIR}/lib)
|
DESTINATION ${CMAKE_INSTALL_LOCALSTATEDIR}/lib)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -77,22 +79,24 @@ install(
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
install(
|
install(
|
||||||
DIRECTORY ${PROJECT_BINARY_DIR}/var/lib/arangodb3-apps
|
DIRECTORY ${ARANGODB_APPS_DIRECTORY}
|
||||||
DESTINATION ${CMAKE_INSTALL_LOCALSTATEDIR}/lib)
|
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})
|
if (IS_DIRECTORY /usr/lib/systemd/system)
|
||||||
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()
|
|
||||||
configure_file (
|
configure_file (
|
||||||
${ARANGODB_SOURCE_DIR}/Installation/systemd/arangodb3.service.in
|
${ARANGODB_SOURCE_DIR}/Installation/systemd/arangodb3.service.in
|
||||||
${PROJECT_BINARY_DIR}/usr/lib/systemd/system/arangodb3.service
|
${PROJECT_BINARY_DIR}/usr/lib/systemd/system/arangodb3.service
|
||||||
NEWLINE_STYLE UNIX)
|
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()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue