From b1e30937bbb2e6974c74d9de735ed848ab3d1786 Mon Sep 17 00:00:00 2001 From: Vasiliy Date: Tue, 5 Mar 2019 14:50:54 +0300 Subject: [PATCH] issue 520.1.1: decrease link commit interval to 1 second, add workaround for MMFiles not recovering document insertions via WAL (#8313) --- .../patch_api_view_properties_iresearch.md | 2 +- .../Rest/Views/post_api_view_iresearch.md | 2 +- .../put_api_view_properties_iresearch.md | 2 +- arangod/IResearch/IResearchLink.cpp | 99 ++++++++++--------- arangod/IResearch/IResearchLink.h | 18 +++- arangod/IResearch/IResearchViewMeta.cpp | 2 +- arangod/RestServer/FlushFeature.cpp | 11 ++- arangod/RestServer/FlushFeature.h | 1 + .../system/_admin/aardvark/APP/api-docs.json | 18 ++-- tests/IResearch/IResearchLink-test.cpp | 16 +-- tests/IResearch/IResearchViewMeta-test.cpp | 8 +- tests/RestServer/FlushFeature-test.cpp | 14 +-- .../aql/aql-view-arangosearch-ddl-cluster.js | 9 +- .../aql-view-arangosearch-ddl-noncluster.js | 6 +- 14 files changed, 113 insertions(+), 95 deletions(-) diff --git a/Documentation/DocuBlocks/Rest/Views/patch_api_view_properties_iresearch.md b/Documentation/DocuBlocks/Rest/Views/patch_api_view_properties_iresearch.md index 847e010872..be31483d00 100644 --- a/Documentation/DocuBlocks/Rest/Views/patch_api_view_properties_iresearch.md +++ b/Documentation/DocuBlocks/Rest/Views/patch_api_view_properties_iresearch.md @@ -31,7 +31,7 @@ Background: @RESTSTRUCT{commitIntervalMsec,post_api_view_props,integer,optional,uint64} Wait at least this many milliseconds between committing view data store -changes and making documents visible to queries (default: 60000, to disable +changes and making documents visible to queries (default: 1000, to disable use: 0). For the case where there are a lot of inserts/updates, a lower value, until commit, will cause the index not to account for them and memory usage would diff --git a/Documentation/DocuBlocks/Rest/Views/post_api_view_iresearch.md b/Documentation/DocuBlocks/Rest/Views/post_api_view_iresearch.md index 099aa3c7d1..c4ecaf2973 100644 --- a/Documentation/DocuBlocks/Rest/Views/post_api_view_iresearch.md +++ b/Documentation/DocuBlocks/Rest/Views/post_api_view_iresearch.md @@ -32,7 +32,7 @@ Background: @RESTSTRUCT{commitIntervalMsec,post_api_view_props,integer,optional,uint64} Wait at least this many milliseconds between committing view data store -changes and making documents visible to queries (default: 60000, to disable +changes and making documents visible to queries (default: 1000, to disable use: 0). For the case where there are a lot of inserts/updates, a lower value, until commit, will cause the index not to account for them and memory usage would diff --git a/Documentation/DocuBlocks/Rest/Views/put_api_view_properties_iresearch.md b/Documentation/DocuBlocks/Rest/Views/put_api_view_properties_iresearch.md index ad416fc679..70c872db13 100644 --- a/Documentation/DocuBlocks/Rest/Views/put_api_view_properties_iresearch.md +++ b/Documentation/DocuBlocks/Rest/Views/put_api_view_properties_iresearch.md @@ -31,7 +31,7 @@ Background: @RESTSTRUCT{commitIntervalMsec,post_api_view_props,integer,optional,uint64} Wait at least this many milliseconds between committing view data store -changes and making documents visible to queries (default: 60000, to disable +changes and making documents visible to queries (default: 1000, to disable use: 0). For the case where there are a lot of inserts/updates, a lower value, until commit, will cause the index not to account for them and memory usage would diff --git a/arangod/IResearch/IResearchLink.cpp b/arangod/IResearch/IResearchLink.cpp index 64ce0aae89..c804a5b418 100644 --- a/arangod/IResearch/IResearchLink.cpp +++ b/arangod/IResearch/IResearchLink.cpp @@ -24,16 +24,17 @@ #include "store/mmap_directory.hpp" #include "store/store_utils.hpp" -#include "Aql/QueryCache.h" -#include "Basics/LocalTaskQueue.h" -#include "Basics/StaticStrings.h" -#include "Cluster/ClusterInfo.h" #include "IResearchCommon.h" #include "IResearchFeature.h" #include "IResearchLinkHelper.h" #include "IResearchPrimaryKeyFilter.h" #include "IResearchView.h" #include "IResearchViewCoordinator.h" +#include "Aql/QueryCache.h" +#include "Basics/LocalTaskQueue.h" +#include "Basics/StaticStrings.h" +#include "Cluster/ClusterInfo.h" +#include "MMFiles/MMFilesCollection.h" #include "RestServer/DatabaseFeature.h" #include "RestServer/DatabasePathFeature.h" #include "StorageEngine/EngineSelectorFeature.h" @@ -376,6 +377,14 @@ void IResearchLink::batchInsert( // insert documents switch (_dataStore._recovery) { case RecoveryState::BEFORE_CHECKPOINT: return; // ignore all insertions before 'checkpoint' + case RecoveryState::AFTER_CHECKPOINT: + // FIXME TODO find a better way to force MMFiles WAL recovery + // workaround MMFilesWalRecoverState not replaying document insertion + // markers, but instead reinserting all documents into the index just before + // the end of recovery + if (!dynamic_cast(collection().getPhysical())) { + break; // skip for non-MMFiles (fallthough for MMFiles) + } case RecoveryState::DURING_CHECKPOINT: for (auto const& doc: batch) { ctx->remove(doc.first); @@ -425,18 +434,13 @@ bool IResearchLink::canBeDropped() const { return true; // valid for a link to be dropped from an iResearch view } -arangodb::Result IResearchLink::cleanup() { +//////////////////////////////////////////////////////////////////////////////// +/// @note assumes that '_asyncSelf' is read-locked (for use with async tasks) +//////////////////////////////////////////////////////////////////////////////// +arangodb::Result IResearchLink::cleanupUnsafe() { char runId = 0; // value not used - SCOPED_LOCK(_asyncSelf->mutex()); // '_dataStore' can be asynchronously modified - - if (!*_asyncSelf) { - return arangodb::Result( // result - TRI_ERROR_ARANGO_INDEX_HANDLE_BAD, // the current link is no longer valid (checked after ReadLock aquisition) - std::string("failed to lock arangosearch link while cleaning up arangosearch link '") + std::to_string(id()) + "' run id '" + std::to_string(size_t(&runId)) + "'" - ); - } - + // NOTE: assumes that '_asyncSelf' is read-locked (for use with async tasks) TRI_ASSERT(_dataStore); // must be valid if _asyncSelf->get() is valid try { @@ -461,32 +465,37 @@ arangodb::LogicalCollection& IResearchLink::collection() const noexcept { } arangodb::Result IResearchLink::commit() { - SCOPED_LOCK(_asyncSelf->mutex()); // '_dataStore' can be asynchronously modified + SCOPED_LOCK(_asyncSelf->mutex()); // '_dataStore' can be asynchronously modified if (!*_asyncSelf) { return arangodb::Result( - TRI_ERROR_ARANGO_INDEX_HANDLE_BAD, // the current link is no longer - // valid (checked after ReadLock - // aquisition) - std::string("failed to lock arangosearch link while commiting " - "arangosearch link '") + - std::to_string(id()) + "'"); + TRI_ERROR_ARANGO_INDEX_HANDLE_BAD, // the current link is no longer valid (checked after ReadLock aquisition) + std::string("failed to lock arangosearch link while commiting arangosearch link '") + std::to_string(id()) + "'" + ); } - TRI_ASSERT(_dataStore); // must be valid if _asyncSelf->get() is valid + return commitUnsafe(); +} + +//////////////////////////////////////////////////////////////////////////////// +/// @note assumes that '_asyncSelf' is read-locked (for use with async tasks) +//////////////////////////////////////////////////////////////////////////////// +arangodb::Result IResearchLink::commitUnsafe() { + char runId = 0; // value not used + + // NOTE: assumes that '_asyncSelf' is read-locked (for use with async tasks) + TRI_ASSERT(_dataStore); // must be valid if _asyncSelf->get() is valid try { _dataStore._writer->commit(); SCOPED_LOCK(_readerMutex); - auto reader = _dataStore._reader.reopen(); // update reader + auto reader = _dataStore._reader.reopen(); // update reader if (!reader) { // nothing more to do LOG_TOPIC(WARN, arangodb::iresearch::TOPIC) - << "failed to update snapshot after commit, reuse the existing " - "snapshot for arangosearch link '" - << id() << "'"; + << "failed to update snapshot after commit, run id '" << size_t(&runId) << "', reuse the existing snapshot for arangosearch link '" << id() << "'"; return arangodb::Result(); } @@ -522,7 +531,7 @@ arangodb::Result IResearchLink::commit() { if (!out) { // create checkpoint return arangodb::Result( // result TRI_ERROR_CANNOT_WRITE_FILE, // code - std::string("failed to write checkpoint file for arangosearch link '") + std::to_string(id()) + "', ignoring commit success, path: " + checkpointFile + std::string("failed to write checkpoint file for arangosearch link '") + std::to_string(id()) + "', run id '" + std::to_string(size_t(&runId)) + "', ignoring commit success, path: " + checkpointFile ); } @@ -532,14 +541,14 @@ arangodb::Result IResearchLink::commit() { return arangodb::Result( // result TRI_ERROR_ARANGO_IO_ERROR, // code - std::string("caught exception while writing checkpoint file for arangosearch link '") + std::to_string(id()) + "': " + e.what() + std::string("caught exception while writing checkpoint file for arangosearch link '") + std::to_string(id()) + "' run id '" + std::to_string(size_t(&runId)) + "': " + e.what() ); } catch (...) { _dataStore._directory->remove(checkpointFile); // try to remove failed file return arangodb::Result( // result TRI_ERROR_ARANGO_IO_ERROR, // code - std::string("caught exception while writing checkpoint file for arangosearch link '") + std::to_string(id()) + "'" + std::string("caught exception while writing checkpoint file for arangosearch link '") + std::to_string(id()) + "' run id '" + std::to_string(size_t(&runId)) + "'" ); } @@ -555,24 +564,27 @@ arangodb::Result IResearchLink::commit() { } catch (arangodb::basics::Exception const& e) { return arangodb::Result( // result e.code(), // code - std::string("caught exception while committing arangosearch link '") + std::to_string(id()) + "': " + e.what() + std::string("caught exception while committing arangosearch link '") + std::to_string(id()) + "' run id '" + std::to_string(size_t(&runId)) + "': " + e.what() ); } catch (std::exception const& e) { return arangodb::Result( // result TRI_ERROR_INTERNAL, // code - std::string("caught exception while committing arangosearch link '") + std::to_string(id()) + "': " + e.what() + std::string("caught exception while committing arangosearch link '") + std::to_string(id()) + "' run id '" + std::to_string(size_t(&runId)) + "': " + e.what() ); } catch (...) { return arangodb::Result( // result TRI_ERROR_INTERNAL, // code - std::string("caught exception while committing arangosearch link '") + std::to_string(id()) + "'" + std::string("caught exception while committing arangosearch link '") + std::to_string(id()) + "' run id '" + std::to_string(size_t(&runId)) + "'" ); } return arangodb::Result(); } -arangodb::Result IResearchLink::consolidate( // consolidate segments +//////////////////////////////////////////////////////////////////////////////// +/// @note assumes that '_asyncSelf' is read-locked (for use with async tasks) +//////////////////////////////////////////////////////////////////////////////// +arangodb::Result IResearchLink::consolidateUnsafe( // consolidate segments IResearchViewMeta::ConsolidationPolicy const& policy, // policy to apply irs::merge_writer::flush_progress_t const& progress // policy progress to use ) { @@ -585,15 +597,7 @@ arangodb::Result IResearchLink::consolidate( // consolidate segments ); } - SCOPED_LOCK(_asyncSelf->mutex()); // '_dataStore' can be asynchronously modified - - if (!*_asyncSelf) { - return arangodb::Result( // result - TRI_ERROR_ARANGO_INDEX_HANDLE_BAD, // the current link is no longer valid (checked after ReadLock aquisition) - std::string("failed to lock arangosearch link while executing consolidation policy '") + policy.properties().toString() + "' on arangosearch link '" + std::to_string(id()) + "' run id '" + std::to_string(size_t(&runId)) + "'" - ); - } - + // NOTE: assumes that '_asyncSelf' is read-locked (for use with async tasks) TRI_ASSERT(_dataStore); // must be valid if _asyncSelf->get() is valid try { @@ -1173,7 +1177,7 @@ arangodb::Result IResearchLink::initDataStore(InitCallback const& initCallback) state._last = std::chrono::system_clock::now(); // remember last task start time timeoutMsec = state._commitIntervalMsec; - auto res = commit(); // run commit + auto res = commitUnsafe(); // run commit ('_asyncSelf' locked by async task) if (!res.ok()) { LOG_TOPIC(WARN, arangodb::iresearch::TOPIC) @@ -1181,7 +1185,7 @@ arangodb::Result IResearchLink::initDataStore(InitCallback const& initCallback) } else if (state._cleanupIntervalStep // if enabled && state._cleanupIntervalCount++ > state._cleanupIntervalStep) { state._cleanupIntervalCount = 0; // reset counter - res = cleanup(); // run cleanup + res = cleanupUnsafe(); // run cleanup ('_asyncSelf' locked by async task) if (!res.ok()) { LOG_TOPIC(WARN, arangodb::iresearch::TOPIC) @@ -1240,7 +1244,8 @@ arangodb::Result IResearchLink::initDataStore(InitCallback const& initCallback) state._last = std::chrono::system_clock::now(); // remember last task start time timeoutMsec = state._consolidationIntervalMsec; - auto res = consolidate(state._consolidationPolicy, state._progress); // run consolidation + auto res = // consolidate + consolidateUnsafe(state._consolidationPolicy, state._progress); // run consolidation ('_asyncSelf' locked by async task) if (!res.ok()) { LOG_TOPIC(WARN, arangodb::iresearch::TOPIC) @@ -1248,7 +1253,7 @@ arangodb::Result IResearchLink::initDataStore(InitCallback const& initCallback) } else if (state._cleanupIntervalStep // if enabled && state._cleanupIntervalCount++ > state._cleanupIntervalStep) { state._cleanupIntervalCount = 0; // reset counter - res = cleanup(); // run cleanup + res = cleanupUnsafe(); // run cleanup ('_asyncSelf' locked by async task) if (!res.ok()) { LOG_TOPIC(WARN, arangodb::iresearch::TOPIC) @@ -1741,4 +1746,4 @@ arangodb::Result IResearchLink::unload() { // ----------------------------------------------------------------------------- // --SECTION-- END-OF-FILE -// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- \ No newline at end of file diff --git a/arangod/IResearch/IResearchLink.h b/arangod/IResearch/IResearchLink.h index 46e4e12887..b01d798ae9 100644 --- a/arangod/IResearch/IResearchLink.h +++ b/arangod/IResearch/IResearchLink.h @@ -103,10 +103,10 @@ class IResearchLink { ////////////////////////////////////////////////////////////////////////////// /// @return the associated collection ////////////////////////////////////////////////////////////////////////////// - arangodb::LogicalCollection& collection() const noexcept; // arangodb::Index override + arangodb::LogicalCollection& collection() const noexcept; // arangodb::Index override ////////////////////////////////////////////////////////////////////////////// - /// @brief mark the current data store state as te latest valid state + /// @brief mark the current data store state as the latest valid state ////////////////////////////////////////////////////////////////////////////// arangodb::Result commit(); @@ -270,13 +270,21 @@ class IResearchLink { ////////////////////////////////////////////////////////////////////////////// /// @brief run filesystem cleanup on the data store + /// @note assumes that '_asyncSelf' is read-locked (for use with async tasks) ////////////////////////////////////////////////////////////////////////////// - arangodb::Result cleanup(); + arangodb::Result cleanupUnsafe(); + + ////////////////////////////////////////////////////////////////////////////// + /// @brief mark the current data store state as the latest valid state + /// @note assumes that '_asyncSelf' is read-locked (for use with async tasks) + ////////////////////////////////////////////////////////////////////////////// + arangodb::Result commitUnsafe(); ////////////////////////////////////////////////////////////////////////////// /// @brief run segment consolidation on the data store + /// @note assumes that '_asyncSelf' is read-locked (for use with async tasks) ////////////////////////////////////////////////////////////////////////////// - arangodb::Result consolidate( // consolidate segments + arangodb::Result consolidateUnsafe( // consolidate segments IResearchViewMeta::ConsolidationPolicy const& policy, // policy to apply irs::merge_writer::flush_progress_t const& progress // policy progress to use ); @@ -290,4 +298,4 @@ class IResearchLink { } // namespace iresearch } // namespace arangodb -#endif +#endif \ No newline at end of file diff --git a/arangod/IResearch/IResearchViewMeta.cpp b/arangod/IResearch/IResearchViewMeta.cpp index 9421a88cb5..02e82156b0 100644 --- a/arangod/IResearch/IResearchViewMeta.cpp +++ b/arangod/IResearch/IResearchViewMeta.cpp @@ -190,7 +190,7 @@ IResearchViewMeta::Mask::Mask(bool mask /*=false*/) noexcept IResearchViewMeta::IResearchViewMeta() : _cleanupIntervalStep(10), - _commitIntervalMsec(60 * 1000), + _commitIntervalMsec(1000), _consolidationIntervalMsec(60 * 1000), _locale(std::locale::classic()), _version(LATEST_VERSION), diff --git a/arangod/RestServer/FlushFeature.cpp b/arangod/RestServer/FlushFeature.cpp index 90c49beae0..7b095c4dd1 100644 --- a/arangod/RestServer/FlushFeature.cpp +++ b/arangod/RestServer/FlushFeature.cpp @@ -197,7 +197,7 @@ class MMFilesFlushMarker final: public arangodb::MMFilesWalMarker { auto* data = reinterpret_cast(&marker); auto* ptr = data + sizeof(MMFilesMarker); - auto* end = ptr + marker.getSize(); + auto* end = ptr + marker.getSize() - sizeof(MMFilesMarker); if (sizeof(TRI_voc_tick_t) > size_t(end - ptr)) { THROW_ARANGO_EXCEPTION(arangodb::Result( // exception @@ -550,7 +550,9 @@ namespace arangodb { std::atomic FlushFeature::_isRunning(false); FlushFeature::FlushFeature(application_features::ApplicationServer& server) - : ApplicationFeature(server, "Flush"), _flushInterval(1000000) { + : ApplicationFeature(server, "Flush"), + _flushInterval(1000000), + _stopped(false) { setOptional(true); startsAfter("BasicsPhase"); @@ -604,7 +606,7 @@ std::shared_ptr FlushFeature::registerFlushSubs ); std::lock_guard lock(_flushSubscriptionsMutex); - if (!_isRunning.load()) { + if (_stopped) { LOG_TOPIC(ERR, Logger::FLUSH) << "FlushFeature not running"; @@ -642,7 +644,7 @@ std::shared_ptr FlushFeature::registerFlushSubs ); std::lock_guard lock(_flushSubscriptionsMutex); - if (!_isRunning.load()) { + if (_stopped) { LOG_TOPIC(ERR, Logger::FLUSH) << "FlushFeature not running"; @@ -806,6 +808,7 @@ void FlushFeature::stop() { // release any remaining flush subscriptions so that they may get deallocated ASAP // subscriptions could survive after FlushFeature::stop(), e.g. DatabaseFeature::unprepare() _flushSubscriptions.clear(); + _stopped = true; } } } diff --git a/arangod/RestServer/FlushFeature.h b/arangod/RestServer/FlushFeature.h index 8cfebb1d82..aa882748e9 100644 --- a/arangod/RestServer/FlushFeature.h +++ b/arangod/RestServer/FlushFeature.h @@ -112,6 +112,7 @@ class FlushFeature final : public application_features::ApplicationFeature { basics::ReadWriteLock _threadLock; std::unordered_set> _flushSubscriptions; std::mutex _flushSubscriptionsMutex; + bool _stopped; }; } // namespace arangodb diff --git a/js/apps/system/_admin/aardvark/APP/api-docs.json b/js/apps/system/_admin/aardvark/APP/api-docs.json index 3a91c465c3..09d1851d44 100644 --- a/js/apps/system/_admin/aardvark/APP/api-docs.json +++ b/js/apps/system/_admin/aardvark/APP/api-docs.json @@ -5290,7 +5290,7 @@ "type": "integer" }, "commitIntervalMsec": { - "description": "Wait at least this many milliseconds between committing view data store\nchanges and making documents visible to queries (default: 60000, to disable\nuse: 0).\nFor the case where there are a lot of inserts/updates, a lower value, until\ncommit, will cause the index not to account for them and memory usage would\ncontinue to grow.\nFor the case where there are a few inserts/updates, a higher value will impact\nperformance and waste disk space for each commit call without any added\nbenefits.\nBackground:\n For data retrieval ArangoSearch views follow the concept of\n \"eventually-consistent\", i.e. eventually all the data in ArangoDB will be\n matched by corresponding query expressions.\n The concept of ArangoSearch view \"commit\" operation is introduced to\n control the upper-bound on the time until document addition/removals are\n actually reflected by corresponding query expressions.\n Once a \"commit\" operation is complete all documents added/removed prior to\n the start of the \"commit\" operation will be reflected by queries invoked in\n subsequent ArangoDB transactions, in-progress ArangoDB transactions will\n still continue to return a repeatable-read state.\n\n\n", + "description": "Wait at least this many milliseconds between committing view data store\nchanges and making documents visible to queries (default: 1000, to disable\nuse: 0).\nFor the case where there are a lot of inserts/updates, a lower value, until\ncommit, will cause the index not to account for them and memory usage would\ncontinue to grow.\nFor the case where there are a few inserts/updates, a higher value will impact\nperformance and waste disk space for each commit call without any added\nbenefits.\nBackground:\n For data retrieval ArangoSearch views follow the concept of\n \"eventually-consistent\", i.e. eventually all the data in ArangoDB will be\n matched by corresponding query expressions.\n The concept of ArangoSearch view \"commit\" operation is introduced to\n control the upper-bound on the time until document addition/removals are\n actually reflected by corresponding query expressions.\n Once a \"commit\" operation is complete all documents added/removed prior to\n the start of the \"commit\" operation will be reflected by queries invoked in\n subsequent ArangoDB transactions, in-progress ArangoDB transactions will\n still continue to return a repeatable-read state.\n\n\n", "format": "uint64", "type": "integer" }, @@ -12907,7 +12907,7 @@ }, "/_api/replication/inventory": { "get": { - "description": "\n\nReturns the array of collections and indexes available on the server. This\narray can be used by replication clients to initiate an initial sync with the\nserver.\n\nThe response will contain a JSON object with the *collection* and *state* and\n*tick* attributes.\n\n*collections* is an array of collections with the following sub-attributes:\n\n- *parameters*: the collection properties\n\n- *indexes*: an array of the indexes of a the collection. Primary indexes and edge indexes\n are not included in this array.\n\nThe *state* attribute contains the current state of the replication logger. It\ncontains the following sub-attributes:\n\n- *running*: whether or not the replication logger is currently active. Note:\n since ArangoDB 2.2, the value will always be *true*\n\n- *lastLogTick*: the value of the last tick the replication logger has written\n\n- *time*: the current time on the server\n\nReplication clients should note the *lastLogTick* value returned. They can then\nfetch collections' data using the dump method up to the value of lastLogTick, and\nquery the continuous replication log for log events after this tick value.\n\nTo create a full copy of the collections on the server, a replication client\ncan execute these steps:\n\n- call the */inventory* API method. This returns the *lastLogTick* value and the\n array of collections and indexes from the server.\n\n- for each collection returned by */inventory*, create the collection locally and\n call */dump* to stream the collection data to the client, up to the value of\n *lastLogTick*.\n After that, the client can create the indexes on the collections as they were\n reported by */inventory*.\n\nIf the clients wants to continuously stream replication log events from the logger\nserver, the following additional steps need to be carried out:\n\n- the client should call */logger-follow* initially to fetch the first batch of\n replication events that were logged after the client's call to */inventory*.\n\n The call to */logger-follow* should use a *from* parameter with the value of the\n *lastLogTick* as reported by */inventory*. The call to */logger-follow* will return the\n *x-arango-replication-lastincluded* which will contain the last tick value included\n in the response.\n\n- the client can then continuously call */logger-follow* to incrementally fetch new\n replication events that occurred after the last transfer.\n\n Calls should use a *from* parameter with the value of the *x-arango-replication-lastincluded*\n header of the previous response. If there are no more replication events, the\n response will be empty and clients can go to sleep for a while and try again\n later.\n\n**Note**: on a coordinator, this request must have the query parameter\n*DBserver* which must be an ID of a DBserver.\nThe very same request is forwarded synchronously to that DBserver.\nIt is an error if this attribute is not bound in the coordinator case.\n\n**Note:**: Using the `global` parameter the top-level object contains a key `databases`\nunder which each key represents a datbase name, and the value conforms to the above describtion.\n\n\n\n\n**Example:**\n \n\n
shell> curl --header 'accept: application/json' --dump - http://localhost:8529/_api/replication/inventory\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"collections\" : [ \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"32\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_appbundles\", \n        \"id\" : \"32\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_appbundles\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"32\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ \n        { \n          \"id\" : \"30\", \n          \"type\" : \"hash\", \n          \"fields\" : [ \n            \"mount\" \n          ], \n          \"unique\" : true, \n          \"sparse\" : true, \n          \"deduplicate\" : true \n        } \n      ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"27\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_apps\", \n        \"id\" : \"27\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 41 \n        }, \n        \"name\" : \"_apps\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"27\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"13\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_aqlfunctions\", \n        \"id\" : \"13\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_aqlfunctions\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"13\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"6\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_graphs\", \n        \"id\" : \"6\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_graphs\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"6\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"2\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_iresearch_analyzers\", \n        \"id\" : \"2\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_iresearch_analyzers\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"2\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ \n        { \n          \"id\" : \"11\", \n          \"type\" : \"hash\", \n          \"fields\" : [ \n            \"user\" \n          ], \n          \"unique\" : true, \n          \"sparse\" : true, \n          \"deduplicate\" : true \n        } \n      ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"8\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_users\", \n        \"id\" : \"8\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 104933 \n        }, \n        \"name\" : \"_users\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"8\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"96\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"h8B2B671BCFD0/96\", \n        \"id\" : \"96\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : false, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"animals\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"96\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"87\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"h8B2B671BCFD0/87\", \n        \"id\" : \"87\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : false, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"demo\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"87\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    } \n  ], \n  \"views\" : [ \n    { \n      \"globallyUniqueId\" : \"h8B2B671BCFD0/102\", \n      \"id\" : \"102\", \n      \"name\" : \"demoView\", \n      \"type\" : \"arangosearch\", \n      \"cleanupIntervalStep\" : 10, \n      \"commitIntervalMsec\" : 60000, \n      \"consolidationIntervalMsec\" : 60000, \n      \"consolidationPolicy\" : { \n        \"type\" : \"bytes_accum\", \n        \"threshold\" : 0.10000000149011612 \n      }, \n      \"writebufferActive\" : 0, \n      \"writebufferIdle\" : 64, \n      \"writebufferSizeMax\" : 33554432, \n      \"links\" : { \n      } \n    } \n  ], \n  \"state\" : { \n    \"running\" : true, \n    \"lastLogTick\" : \"104983\", \n    \"lastUncommittedLogTick\" : \"104989\", \n    \"totalEvents\" : 35260, \n    \"time\" : \"2019-02-20T10:33:06Z\" \n  }, \n  \"tick\" : \"104990\" \n}\n
\n\n\n\n\n**Example:**\n With some additional indexes:\n\n
shell> curl --header 'accept: application/json' --dump - http://localhost:8529/_api/replication/inventory\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"collections\" : [ \n    { \n      \"indexes\" : [ \n        { \n          \"id\" : \"105000\", \n          \"type\" : \"hash\", \n          \"fields\" : [ \n            \"name\" \n          ], \n          \"unique\" : false, \n          \"sparse\" : false, \n          \"deduplicate\" : true \n        }, \n        { \n          \"id\" : \"105003\", \n          \"type\" : \"skiplist\", \n          \"fields\" : [ \n            \"a\", \n            \"b\" \n          ], \n          \"unique\" : true, \n          \"sparse\" : false, \n          \"deduplicate\" : true \n        } \n      ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"104993\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"h8B2B671BCFD0/104993\", \n        \"id\" : \"104993\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : false, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"IndexedCollection1\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"104993\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ \n        { \n          \"id\" : \"105012\", \n          \"type\" : \"fulltext\", \n          \"fields\" : [ \n            \"text\" \n          ], \n          \"unique\" : false, \n          \"sparse\" : true, \n          \"minLength\" : 10 \n        }, \n        { \n          \"id\" : \"105015\", \n          \"type\" : \"skiplist\", \n          \"fields\" : [ \n            \"a\" \n          ], \n          \"unique\" : false, \n          \"sparse\" : false, \n          \"deduplicate\" : true \n        } \n      ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"105005\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"h8B2B671BCFD0/105005\", \n        \"id\" : \"105005\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : false, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"IndexedCollection2\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"105005\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"32\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_appbundles\", \n        \"id\" : \"32\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_appbundles\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"32\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ \n        { \n          \"id\" : \"30\", \n          \"type\" : \"hash\", \n          \"fields\" : [ \n            \"mount\" \n          ], \n          \"unique\" : true, \n          \"sparse\" : true, \n          \"deduplicate\" : true \n        } \n      ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"27\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_apps\", \n        \"id\" : \"27\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 41 \n        }, \n        \"name\" : \"_apps\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"27\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"13\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_aqlfunctions\", \n        \"id\" : \"13\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_aqlfunctions\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"13\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"6\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_graphs\", \n        \"id\" : \"6\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_graphs\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"6\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"2\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_iresearch_analyzers\", \n        \"id\" : \"2\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_iresearch_analyzers\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"2\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ \n        { \n          \"id\" : \"11\", \n          \"type\" : \"hash\", \n          \"fields\" : [ \n            \"user\" \n          ], \n          \"unique\" : true, \n          \"sparse\" : true, \n          \"deduplicate\" : true \n        } \n      ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"8\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_users\", \n        \"id\" : \"8\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 104933 \n        }, \n        \"name\" : \"_users\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"8\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"96\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"h8B2B671BCFD0/96\", \n        \"id\" : \"96\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : false, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"animals\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"96\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"87\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"h8B2B671BCFD0/87\", \n        \"id\" : \"87\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : false, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"demo\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"87\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    } \n  ], \n  \"views\" : [ \n    { \n      \"globallyUniqueId\" : \"h8B2B671BCFD0/102\", \n      \"id\" : \"102\", \n      \"name\" : \"demoView\", \n      \"type\" : \"arangosearch\", \n      \"cleanupIntervalStep\" : 10, \n      \"commitIntervalMsec\" : 60000, \n      \"consolidationIntervalMsec\" : 60000, \n      \"consolidationPolicy\" : { \n        \"type\" : \"bytes_accum\", \n        \"threshold\" : 0.10000000149011612 \n      }, \n      \"writebufferActive\" : 0, \n      \"writebufferIdle\" : 64, \n      \"writebufferSizeMax\" : 33554432, \n      \"links\" : { \n      } \n    } \n  ], \n  \"state\" : { \n    \"running\" : true, \n    \"lastLogTick\" : \"104983\", \n    \"lastUncommittedLogTick\" : \"105016\", \n    \"totalEvents\" : 35268, \n    \"time\" : \"2019-02-20T10:33:06Z\" \n  }, \n  \"tick\" : \"105016\" \n}\n
\n\n\n\n\n", + "description": "\n\nReturns the array of collections and indexes available on the server. This\narray can be used by replication clients to initiate an initial sync with the\nserver.\n\nThe response will contain a JSON object with the *collection* and *state* and\n*tick* attributes.\n\n*collections* is an array of collections with the following sub-attributes:\n\n- *parameters*: the collection properties\n\n- *indexes*: an array of the indexes of a the collection. Primary indexes and edge indexes\n are not included in this array.\n\nThe *state* attribute contains the current state of the replication logger. It\ncontains the following sub-attributes:\n\n- *running*: whether or not the replication logger is currently active. Note:\n since ArangoDB 2.2, the value will always be *true*\n\n- *lastLogTick*: the value of the last tick the replication logger has written\n\n- *time*: the current time on the server\n\nReplication clients should note the *lastLogTick* value returned. They can then\nfetch collections' data using the dump method up to the value of lastLogTick, and\nquery the continuous replication log for log events after this tick value.\n\nTo create a full copy of the collections on the server, a replication client\ncan execute these steps:\n\n- call the */inventory* API method. This returns the *lastLogTick* value and the\n array of collections and indexes from the server.\n\n- for each collection returned by */inventory*, create the collection locally and\n call */dump* to stream the collection data to the client, up to the value of\n *lastLogTick*.\n After that, the client can create the indexes on the collections as they were\n reported by */inventory*.\n\nIf the clients wants to continuously stream replication log events from the logger\nserver, the following additional steps need to be carried out:\n\n- the client should call */logger-follow* initially to fetch the first batch of\n replication events that were logged after the client's call to */inventory*.\n\n The call to */logger-follow* should use a *from* parameter with the value of the\n *lastLogTick* as reported by */inventory*. The call to */logger-follow* will return the\n *x-arango-replication-lastincluded* which will contain the last tick value included\n in the response.\n\n- the client can then continuously call */logger-follow* to incrementally fetch new\n replication events that occurred after the last transfer.\n\n Calls should use a *from* parameter with the value of the *x-arango-replication-lastincluded*\n header of the previous response. If there are no more replication events, the\n response will be empty and clients can go to sleep for a while and try again\n later.\n\n**Note**: on a coordinator, this request must have the query parameter\n*DBserver* which must be an ID of a DBserver.\nThe very same request is forwarded synchronously to that DBserver.\nIt is an error if this attribute is not bound in the coordinator case.\n\n**Note:**: Using the `global` parameter the top-level object contains a key `databases`\nunder which each key represents a datbase name, and the value conforms to the above describtion.\n\n\n\n\n**Example:**\n \n\n
shell> curl --header 'accept: application/json' --dump - http://localhost:8529/_api/replication/inventory\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"collections\" : [ \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"32\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_appbundles\", \n        \"id\" : \"32\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_appbundles\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"32\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ \n        { \n          \"id\" : \"30\", \n          \"type\" : \"hash\", \n          \"fields\" : [ \n            \"mount\" \n          ], \n          \"unique\" : true, \n          \"sparse\" : true, \n          \"deduplicate\" : true \n        } \n      ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"27\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_apps\", \n        \"id\" : \"27\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 41 \n        }, \n        \"name\" : \"_apps\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"27\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"13\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_aqlfunctions\", \n        \"id\" : \"13\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_aqlfunctions\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"13\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"6\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_graphs\", \n        \"id\" : \"6\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_graphs\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"6\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"2\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_iresearch_analyzers\", \n        \"id\" : \"2\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_iresearch_analyzers\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"2\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ \n        { \n          \"id\" : \"11\", \n          \"type\" : \"hash\", \n          \"fields\" : [ \n            \"user\" \n          ], \n          \"unique\" : true, \n          \"sparse\" : true, \n          \"deduplicate\" : true \n        } \n      ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"8\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_users\", \n        \"id\" : \"8\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 104933 \n        }, \n        \"name\" : \"_users\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"8\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"96\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"h8B2B671BCFD0/96\", \n        \"id\" : \"96\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : false, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"animals\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"96\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"87\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"h8B2B671BCFD0/87\", \n        \"id\" : \"87\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : false, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"demo\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"87\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    } \n  ], \n  \"views\" : [ \n    { \n      \"globallyUniqueId\" : \"h8B2B671BCFD0/102\", \n      \"id\" : \"102\", \n      \"name\" : \"demoView\", \n      \"type\" : \"arangosearch\", \n      \"cleanupIntervalStep\" : 10, \n      \"commitIntervalMsec\" : 1000, \n      \"consolidationIntervalMsec\" : 60000, \n      \"consolidationPolicy\" : { \n        \"type\" : \"bytes_accum\", \n        \"threshold\" : 0.10000000149011612 \n      }, \n      \"writebufferActive\" : 0, \n      \"writebufferIdle\" : 64, \n      \"writebufferSizeMax\" : 33554432, \n      \"links\" : { \n      } \n    } \n  ], \n  \"state\" : { \n    \"running\" : true, \n    \"lastLogTick\" : \"104983\", \n    \"lastUncommittedLogTick\" : \"104989\", \n    \"totalEvents\" : 35260, \n    \"time\" : \"2019-02-20T10:33:06Z\" \n  }, \n  \"tick\" : \"104990\" \n}\n
\n\n\n\n\n**Example:**\n With some additional indexes:\n\n
shell> curl --header 'accept: application/json' --dump - http://localhost:8529/_api/replication/inventory\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"collections\" : [ \n    { \n      \"indexes\" : [ \n        { \n          \"id\" : \"105000\", \n          \"type\" : \"hash\", \n          \"fields\" : [ \n            \"name\" \n          ], \n          \"unique\" : false, \n          \"sparse\" : false, \n          \"deduplicate\" : true \n        }, \n        { \n          \"id\" : \"105003\", \n          \"type\" : \"skiplist\", \n          \"fields\" : [ \n            \"a\", \n            \"b\" \n          ], \n          \"unique\" : true, \n          \"sparse\" : false, \n          \"deduplicate\" : true \n        } \n      ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"104993\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"h8B2B671BCFD0/104993\", \n        \"id\" : \"104993\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : false, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"IndexedCollection1\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"104993\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ \n        { \n          \"id\" : \"105012\", \n          \"type\" : \"fulltext\", \n          \"fields\" : [ \n            \"text\" \n          ], \n          \"unique\" : false, \n          \"sparse\" : true, \n          \"minLength\" : 10 \n        }, \n        { \n          \"id\" : \"105015\", \n          \"type\" : \"skiplist\", \n          \"fields\" : [ \n            \"a\" \n          ], \n          \"unique\" : false, \n          \"sparse\" : false, \n          \"deduplicate\" : true \n        } \n      ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"105005\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"h8B2B671BCFD0/105005\", \n        \"id\" : \"105005\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : false, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"IndexedCollection2\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"105005\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"32\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_appbundles\", \n        \"id\" : \"32\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_appbundles\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"32\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ \n        { \n          \"id\" : \"30\", \n          \"type\" : \"hash\", \n          \"fields\" : [ \n            \"mount\" \n          ], \n          \"unique\" : true, \n          \"sparse\" : true, \n          \"deduplicate\" : true \n        } \n      ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"27\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_apps\", \n        \"id\" : \"27\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 41 \n        }, \n        \"name\" : \"_apps\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"27\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"13\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_aqlfunctions\", \n        \"id\" : \"13\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_aqlfunctions\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"13\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"6\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_graphs\", \n        \"id\" : \"6\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_graphs\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"6\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"2\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_iresearch_analyzers\", \n        \"id\" : \"2\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"_iresearch_analyzers\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"2\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ \n        { \n          \"id\" : \"11\", \n          \"type\" : \"hash\", \n          \"fields\" : [ \n            \"user\" \n          ], \n          \"unique\" : true, \n          \"sparse\" : true, \n          \"deduplicate\" : true \n        } \n      ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"8\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"_users\", \n        \"id\" : \"8\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : true, \n        \"isVolatile\" : false, \n        \"journalSize\" : 1048576, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 104933 \n        }, \n        \"name\" : \"_users\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"8\", \n        \"replicationFactor\" : 2, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"96\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"h8B2B671BCFD0/96\", \n        \"id\" : \"96\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : false, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"animals\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"96\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    }, \n    { \n      \"indexes\" : [ ], \n      \"parameters\" : { \n        \"allowUserKeys\" : true, \n        \"cid\" : \"87\", \n        \"count\" : 0, \n        \"deleted\" : false, \n        \"doCompact\" : true, \n        \"globallyUniqueId\" : \"h8B2B671BCFD0/87\", \n        \"id\" : \"87\", \n        \"indexBuckets\" : 8, \n        \"isSmart\" : false, \n        \"isSystem\" : false, \n        \"isVolatile\" : false, \n        \"journalSize\" : 33554432, \n        \"keyOptions\" : { \n          \"allowUserKeys\" : true, \n          \"type\" : \"traditional\", \n          \"lastValue\" : 0 \n        }, \n        \"name\" : \"demo\", \n        \"numberOfShards\" : 1, \n        \"planId\" : \"87\", \n        \"replicationFactor\" : 1, \n        \"shardKeys\" : [ \n          \"_key\" \n        ], \n        \"shards\" : { \n        }, \n        \"status\" : 3, \n        \"type\" : 2, \n        \"version\" : 7, \n        \"waitForSync\" : false \n      } \n    } \n  ], \n  \"views\" : [ \n    { \n      \"globallyUniqueId\" : \"h8B2B671BCFD0/102\", \n      \"id\" : \"102\", \n      \"name\" : \"demoView\", \n      \"type\" : \"arangosearch\", \n      \"cleanupIntervalStep\" : 10, \n      \"commitIntervalMsec\" : 1000, \n      \"consolidationIntervalMsec\" : 60000, \n      \"consolidationPolicy\" : { \n        \"type\" : \"bytes_accum\", \n        \"threshold\" : 0.10000000149011612 \n      }, \n      \"writebufferActive\" : 0, \n      \"writebufferIdle\" : 64, \n      \"writebufferSizeMax\" : 33554432, \n      \"links\" : { \n      } \n    } \n  ], \n  \"state\" : { \n    \"running\" : true, \n    \"lastLogTick\" : \"104983\", \n    \"lastUncommittedLogTick\" : \"105016\", \n    \"totalEvents\" : 35268, \n    \"time\" : \"2019-02-20T10:33:06Z\" \n  }, \n  \"tick\" : \"105016\" \n}\n
\n\n\n\n\n", "parameters": [ { "description": "Include system collections in the result. The default value is *true*.\n\n", @@ -14567,7 +14567,7 @@ }, "/_api/view#ArangoSearch": { "post": { - "description": "\n**A JSON object with these properties is required:**\n\n - **type**: The type of the view. must be equal to *\"arangosearch\"*\n - **name**: The name of the view.\n - **properties**:\n - **commitIntervalMsec**: Wait at least this many milliseconds between committing view data store\n changes and making documents visible to queries (default: 60000, to disable\n use: 0).\n For the case where there are a lot of inserts/updates, a lower value, until\n commit, will cause the index not to account for them and memory usage would\n continue to grow.\n For the case where there are a few inserts/updates, a higher value will impact\n performance and waste disk space for each commit call without any added\n benefits.\n Background:\n For data retrieval ArangoSearch views follow the concept of\n \"eventually-consistent\", i.e. eventually all the data in ArangoDB will be\n matched by corresponding query expressions.\n The concept of ArangoSearch view \"commit\" operation is introduced to\n control the upper-bound on the time until document addition/removals are\n actually reflected by corresponding query expressions.\n Once a \"commit\" operation is complete all documents added/removed prior to\n the start of the \"commit\" operation will be reflected by queries invoked in\n subsequent ArangoDB transactions, in-progress ArangoDB transactions will\n still continue to return a repeatable-read state.\n - **links**:\n - **[collection-name]**:\n - **analyzers** (string): The list of analyzers to be used for indexing of string values\n (default: [\"identity\"]).\n - **fields**:\n - **field-name** (object): This is a recursive structure for the specific attribute path, potentially\n containing any of the following attributes:\n *analyzers*, *includeAllFields*, *trackListPositions*, *storeValues*\n Any attributes not specified are inherited from the parent.\n - **includeAllFields**: The flag determines whether or not to index all fields on a particular level of\n depth (default: false).\n - **trackListPositions**: The flag determines whether or not values in a lists should be treated separate\n (default: false).\n - **storeValues**: How should the view track the attribute values, this setting allows for\n additional value retrieval optimizations, one of:\n - *none*: Do not store values by the view\n - *id*: Store only information about value presence, to allow use of the EXISTS() function\n (default \"none\").\n - **consolidationIntervalMsec**: Wait at least this many milliseconds between applying 'consolidationPolicy' to\n consolidate view data store and possibly release space on the filesystem\n (default: 60000, to disable use: 0).\n For the case where there are a lot of data modification operations, a higher\n value could potentially have the data store consume more space and file handles.\n For the case where there are a few data modification operations, a lower value\n will impact performance due to no segment candidates available for\n consolidation.\n Background:\n For data modification ArangoSearch views follow the concept of a\n \"versioned data store\". Thus old versions of data may be removed once there\n are no longer any users of the old data. The frequency of the cleanup and\n compaction operations are governed by 'consolidationIntervalMsec' and the\n candidates for compaction are selected via 'consolidationPolicy'.\n - **cleanupIntervalStep**: Wait at least this many commits between removing unused files in the\n ArangoSearch data directory (default: 10, to disable use: 0).\n For the case where the consolidation policies merge segments often (i.e. a lot\n of commit+consolidate), a lower value will cause a lot of disk space to be\n wasted.\n For the case where the consolidation policies rarely merge segments (i.e. few\n inserts/deletes), a higher value will impact performance without any added\n benefits.\n Background:\n With every \"commit\" or \"consolidate\" operation a new state of the view\n internal data-structures is created on disk.\n Old states/snapshots are released once there are no longer any users\n remaining.\n However, the files for the released states/snapshots are left on disk, and\n only removed by \"cleanup\" operation.\n - **consolidationPolicy**:\n\n\n\n\nCreates a new view with a given name and properties if it does not\nalready exist.\n\n**Note**: view can't be created with the links. Please use PUT/PATCH for links\nmanagement.\n\n\n\n\n**Example:**\n \n\n
shell> curl -X POST --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/view <<EOF\n{ \n  \"name\" : \"testViewBasics\", \n  \"type\" : \"arangosearch\" \n}\nEOF\n\nHTTP/1.1 Created\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/107331\", \n  \"id\" : \"107331\", \n  \"name\" : \"testViewBasics\", \n  \"type\" : \"arangosearch\", \n  \"cleanupIntervalStep\" : 10, \n  \"commitIntervalMsec\" : 60000, \n  \"consolidationIntervalMsec\" : 60000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"writebufferActive\" : 0, \n  \"writebufferIdle\" : 64, \n  \"writebufferSizeMax\" : 33554432, \n  \"links\" : { \n  } \n}\n
\n\n\n\n", + "description": "\n**A JSON object with these properties is required:**\n\n - **type**: The type of the view. must be equal to *\"arangosearch\"*\n - **name**: The name of the view.\n - **properties**:\n - **commitIntervalMsec**: Wait at least this many milliseconds between committing view data store\n changes and making documents visible to queries (default: 1000, to disable\n use: 0).\n For the case where there are a lot of inserts/updates, a lower value, until\n commit, will cause the index not to account for them and memory usage would\n continue to grow.\n For the case where there are a few inserts/updates, a higher value will impact\n performance and waste disk space for each commit call without any added\n benefits.\n Background:\n For data retrieval ArangoSearch views follow the concept of\n \"eventually-consistent\", i.e. eventually all the data in ArangoDB will be\n matched by corresponding query expressions.\n The concept of ArangoSearch view \"commit\" operation is introduced to\n control the upper-bound on the time until document addition/removals are\n actually reflected by corresponding query expressions.\n Once a \"commit\" operation is complete all documents added/removed prior to\n the start of the \"commit\" operation will be reflected by queries invoked in\n subsequent ArangoDB transactions, in-progress ArangoDB transactions will\n still continue to return a repeatable-read state.\n - **links**:\n - **[collection-name]**:\n - **analyzers** (string): The list of analyzers to be used for indexing of string values\n (default: [\"identity\"]).\n - **fields**:\n - **field-name** (object): This is a recursive structure for the specific attribute path, potentially\n containing any of the following attributes:\n *analyzers*, *includeAllFields*, *trackListPositions*, *storeValues*\n Any attributes not specified are inherited from the parent.\n - **includeAllFields**: The flag determines whether or not to index all fields on a particular level of\n depth (default: false).\n - **trackListPositions**: The flag determines whether or not values in a lists should be treated separate\n (default: false).\n - **storeValues**: How should the view track the attribute values, this setting allows for\n additional value retrieval optimizations, one of:\n - *none*: Do not store values by the view\n - *id*: Store only information about value presence, to allow use of the EXISTS() function\n (default \"none\").\n - **consolidationIntervalMsec**: Wait at least this many milliseconds between applying 'consolidationPolicy' to\n consolidate view data store and possibly release space on the filesystem\n (default: 60000, to disable use: 0).\n For the case where there are a lot of data modification operations, a higher\n value could potentially have the data store consume more space and file handles.\n For the case where there are a few data modification operations, a lower value\n will impact performance due to no segment candidates available for\n consolidation.\n Background:\n For data modification ArangoSearch views follow the concept of a\n \"versioned data store\". Thus old versions of data may be removed once there\n are no longer any users of the old data. The frequency of the cleanup and\n compaction operations are governed by 'consolidationIntervalMsec' and the\n candidates for compaction are selected via 'consolidationPolicy'.\n - **cleanupIntervalStep**: Wait at least this many commits between removing unused files in the\n ArangoSearch data directory (default: 10, to disable use: 0).\n For the case where the consolidation policies merge segments often (i.e. a lot\n of commit+consolidate), a lower value will cause a lot of disk space to be\n wasted.\n For the case where the consolidation policies rarely merge segments (i.e. few\n inserts/deletes), a higher value will impact performance without any added\n benefits.\n Background:\n With every \"commit\" or \"consolidate\" operation a new state of the view\n internal data-structures is created on disk.\n Old states/snapshots are released once there are no longer any users\n remaining.\n However, the files for the released states/snapshots are left on disk, and\n only removed by \"cleanup\" operation.\n - **consolidationPolicy**:\n\n\n\n\nCreates a new view with a given name and properties if it does not\nalready exist.\n\n**Note**: view can't be created with the links. Please use PUT/PATCH for links\nmanagement.\n\n\n\n\n**Example:**\n \n\n
shell> curl -X POST --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/view <<EOF\n{ \n  \"name\" : \"testViewBasics\", \n  \"type\" : \"arangosearch\" \n}\nEOF\n\nHTTP/1.1 Created\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/107331\", \n  \"id\" : \"107331\", \n  \"name\" : \"testViewBasics\", \n  \"type\" : \"arangosearch\", \n  \"cleanupIntervalStep\" : 10, \n  \"commitIntervalMsec\" : 1000, \n  \"consolidationIntervalMsec\" : 60000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"writebufferActive\" : 0, \n  \"writebufferIdle\" : 64, \n  \"writebufferSizeMax\" : 33554432, \n  \"links\" : { \n  } \n}\n
\n\n\n\n", "parameters": [ { "in": "body", @@ -14598,7 +14598,7 @@ }, "/_api/view#arangosearch": { "post": { - "description": "\n**A JSON object with these properties is required:**\n\n - **type**: The type of the view. must be equal to one of the supported ArangoDB view\n types.\n - **name**: The name of the view.\n - **properties**:\n - **commitIntervalMsec**: Wait at least this many milliseconds between committing view data store\n changes and making documents visible to queries (default: 60000, to disable\n use: 0).\n For the case where there are a lot of inserts/updates, a lower value, until\n commit, will cause the index not to account for them and memory usage would\n continue to grow.\n For the case where there are a few inserts/updates, a higher value will impact\n performance and waste disk space for each commit call without any added\n benefits.\n Background:\n For data retrieval ArangoSearch views follow the concept of\n \"eventually-consistent\", i.e. eventually all the data in ArangoDB will be\n matched by corresponding query expressions.\n The concept of ArangoSearch view \"commit\" operation is introduced to\n control the upper-bound on the time until document addition/removals are\n actually reflected by corresponding query expressions.\n Once a \"commit\" operation is complete all documents added/removed prior to\n the start of the \"commit\" operation will be reflected by queries invoked in\n subsequent ArangoDB transactions, in-progress ArangoDB transactions will\n still continue to return a repeatable-read state.\n - **links**:\n - **[collection-name]**:\n - **analyzers** (string): The list of analyzers to be used for indexing of string values\n (default: [\"identity\"]).\n - **fields**:\n - **field-name** (object): This is a recursive structure for the specific attribute path, potentially\n containing any of the following attributes:\n *analyzers*, *includeAllFields*, *trackListPositions*, *storeValues*\n Any attributes not specified are inherited from the parent.\n - **includeAllFields**: The flag determines whether or not to index all fields on a particular level of\n depth (default: false).\n - **trackListPositions**: The flag determines whether or not values in a lists should be treated separate\n (default: false).\n - **storeValues**: How should the view track the attribute values, this setting allows for\n additional value retrieval optimizations, one of:\n - *none*: Do not store values by the view\n - *id*: Store only information about value presence, to allow use of the EXISTS() function\n (default \"none\").\n - **consolidationIntervalMsec**: Wait at least this many milliseconds between applying 'consolidationPolicy' to\n consolidate view data store and possibly release space on the filesystem\n (default: 60000, to disable use: 0).\n For the case where there are a lot of data modification operations, a higher\n value could potentially have the data store consume more space and file handles.\n For the case where there are a few data modification operations, a lower value\n will impact performance due to no segment candidates available for\n consolidation.\n Background:\n For data modification ArangoSearch views follow the concept of a\n \"versioned data store\". Thus old versions of data may be removed once there\n are no longer any users of the old data. The frequency of the cleanup and\n compaction operations are governed by 'consolidationIntervalMsec' and the\n candidates for compaction are selected via 'consolidationPolicy'.\n - **cleanupIntervalStep**: Wait at least this many commits between removing unused files in the\n ArangoSearch data directory (default: 10, to disable use: 0).\n For the case where the consolidation policies merge segments often (i.e. a lot\n of commit+consolidate), a lower value will cause a lot of disk space to be\n wasted.\n For the case where the consolidation policies rarely merge segments (i.e. few\n inserts/deletes), a higher value will impact performance without any added\n benefits.\n Background:\n With every \"commit\" or \"consolidate\" operation a new state of the view\n internal data-structures is created on disk.\n Old states/snapshots are released once there are no longer any users\n remaining.\n However, the files for the released states/snapshots are left on disk, and\n only removed by \"cleanup\" operation.\n - **consolidationPolicy**:\n\n\n\n\nCreates a new view with a given name and properties if it does not already\nexist.\n\n**Note**: view can't be created with the links. Please use PUT/PATCH\nfor links management.\n\n\n\n\n**Example:**\n \n\n
shell> curl -X POST --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/view <<EOF\n{ \n  \"name\" : \"testViewBasics\", \n  \"type\" : \"arangosearch\" \n}\nEOF\n\nHTTP/1.1 Created\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/104460\", \n  \"id\" : \"104460\", \n  \"name\" : \"testViewBasics\", \n  \"type\" : \"arangosearch\", \n  \"cleanupIntervalStep\" : 10, \n  \"commitIntervalMsec\" : 60000, \n  \"consolidationIntervalMsec\" : 60000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"writebufferActive\" : 0, \n  \"writebufferIdle\" : 64, \n  \"writebufferSizeMax\" : 33554432, \n  \"links\" : { \n  } \n}\n
\n\n\n\n", + "description": "\n**A JSON object with these properties is required:**\n\n - **type**: The type of the view. must be equal to one of the supported ArangoDB view\n types.\n - **name**: The name of the view.\n - **properties**:\n - **commitIntervalMsec**: Wait at least this many milliseconds between committing view data store\n changes and making documents visible to queries (default: 1000, to disable\n use: 0).\n For the case where there are a lot of inserts/updates, a lower value, until\n commit, will cause the index not to account for them and memory usage would\n continue to grow.\n For the case where there are a few inserts/updates, a higher value will impact\n performance and waste disk space for each commit call without any added\n benefits.\n Background:\n For data retrieval ArangoSearch views follow the concept of\n \"eventually-consistent\", i.e. eventually all the data in ArangoDB will be\n matched by corresponding query expressions.\n The concept of ArangoSearch view \"commit\" operation is introduced to\n control the upper-bound on the time until document addition/removals are\n actually reflected by corresponding query expressions.\n Once a \"commit\" operation is complete all documents added/removed prior to\n the start of the \"commit\" operation will be reflected by queries invoked in\n subsequent ArangoDB transactions, in-progress ArangoDB transactions will\n still continue to return a repeatable-read state.\n - **links**:\n - **[collection-name]**:\n - **analyzers** (string): The list of analyzers to be used for indexing of string values\n (default: [\"identity\"]).\n - **fields**:\n - **field-name** (object): This is a recursive structure for the specific attribute path, potentially\n containing any of the following attributes:\n *analyzers*, *includeAllFields*, *trackListPositions*, *storeValues*\n Any attributes not specified are inherited from the parent.\n - **includeAllFields**: The flag determines whether or not to index all fields on a particular level of\n depth (default: false).\n - **trackListPositions**: The flag determines whether or not values in a lists should be treated separate\n (default: false).\n - **storeValues**: How should the view track the attribute values, this setting allows for\n additional value retrieval optimizations, one of:\n - *none*: Do not store values by the view\n - *id*: Store only information about value presence, to allow use of the EXISTS() function\n (default \"none\").\n - **consolidationIntervalMsec**: Wait at least this many milliseconds between applying 'consolidationPolicy' to\n consolidate view data store and possibly release space on the filesystem\n (default: 60000, to disable use: 0).\n For the case where there are a lot of data modification operations, a higher\n value could potentially have the data store consume more space and file handles.\n For the case where there are a few data modification operations, a lower value\n will impact performance due to no segment candidates available for\n consolidation.\n Background:\n For data modification ArangoSearch views follow the concept of a\n \"versioned data store\". Thus old versions of data may be removed once there\n are no longer any users of the old data. The frequency of the cleanup and\n compaction operations are governed by 'consolidationIntervalMsec' and the\n candidates for compaction are selected via 'consolidationPolicy'.\n - **cleanupIntervalStep**: Wait at least this many commits between removing unused files in the\n ArangoSearch data directory (default: 10, to disable use: 0).\n For the case where the consolidation policies merge segments often (i.e. a lot\n of commit+consolidate), a lower value will cause a lot of disk space to be\n wasted.\n For the case where the consolidation policies rarely merge segments (i.e. few\n inserts/deletes), a higher value will impact performance without any added\n benefits.\n Background:\n With every \"commit\" or \"consolidate\" operation a new state of the view\n internal data-structures is created on disk.\n Old states/snapshots are released once there are no longer any users\n remaining.\n However, the files for the released states/snapshots are left on disk, and\n only removed by \"cleanup\" operation.\n - **consolidationPolicy**:\n\n\n\n\nCreates a new view with a given name and properties if it does not already\nexist.\n\n**Note**: view can't be created with the links. Please use PUT/PATCH\nfor links management.\n\n\n\n\n**Example:**\n \n\n
shell> curl -X POST --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/view <<EOF\n{ \n  \"name\" : \"testViewBasics\", \n  \"type\" : \"arangosearch\" \n}\nEOF\n\nHTTP/1.1 Created\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/104460\", \n  \"id\" : \"104460\", \n  \"name\" : \"testViewBasics\", \n  \"type\" : \"arangosearch\", \n  \"cleanupIntervalStep\" : 10, \n  \"commitIntervalMsec\" : 1000, \n  \"consolidationIntervalMsec\" : 60000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"writebufferActive\" : 0, \n  \"writebufferIdle\" : 64, \n  \"writebufferSizeMax\" : 33554432, \n  \"links\" : { \n  } \n}\n
\n\n\n\n", "parameters": [ { "in": "body", @@ -14684,7 +14684,7 @@ }, "/_api/view/{view-name}/properties": { "get": { - "description": "\n\nReturns an object containing the definition of the view identified by *view-name*.\n\n\n\nThe result is an object describing the view with the following attributes:\n- *id*: The identifier of the view\n- *name*: The name of the view\n- *type*: The type of the view as string\n- any additional view implementation specific properties\n\n\n\n\n**Example:**\n Using an identifier:\n\n
shell> curl --header 'accept: application/json' --dump - http://localhost:8529/_api/view/107309/properties\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"error\" : false, \n  \"code\" : 200, \n  \"writebufferIdle\" : 64, \n  \"writebufferActive\" : 0, \n  \"type\" : \"arangosearch\", \n  \"writebufferSizeMax\" : 33554432, \n  \"name\" : \"products\", \n  \"commitIntervalMsec\" : 60000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/107309\", \n  \"cleanupIntervalStep\" : 10, \n  \"id\" : \"107309\", \n  \"links\" : { \n  }, \n  \"consolidationIntervalMsec\" : 60000 \n}\n
\n\n\n\n\n**Example:**\n Using a name:\n\n
shell> curl --header 'accept: application/json' --dump - http://localhost:8529/_api/view/products/properties\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"error\" : false, \n  \"code\" : 200, \n  \"writebufferIdle\" : 64, \n  \"writebufferActive\" : 0, \n  \"type\" : \"arangosearch\", \n  \"writebufferSizeMax\" : 33554432, \n  \"name\" : \"products\", \n  \"commitIntervalMsec\" : 60000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/107316\", \n  \"cleanupIntervalStep\" : 10, \n  \"id\" : \"107316\", \n  \"links\" : { \n  }, \n  \"consolidationIntervalMsec\" : 60000 \n}\n
\n\n\n\n", + "description": "\n\nReturns an object containing the definition of the view identified by *view-name*.\n\n\n\nThe result is an object describing the view with the following attributes:\n- *id*: The identifier of the view\n- *name*: The name of the view\n- *type*: The type of the view as string\n- any additional view implementation specific properties\n\n\n\n\n**Example:**\n Using an identifier:\n\n
shell> curl --header 'accept: application/json' --dump - http://localhost:8529/_api/view/107309/properties\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"error\" : false, \n  \"code\" : 200, \n  \"writebufferIdle\" : 64, \n  \"writebufferActive\" : 0, \n  \"type\" : \"arangosearch\", \n  \"writebufferSizeMax\" : 33554432, \n  \"name\" : \"products\", \n  \"commitIntervalMsec\" : 1000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/107309\", \n  \"cleanupIntervalStep\" : 10, \n  \"id\" : \"107309\", \n  \"links\" : { \n  }, \n  \"consolidationIntervalMsec\" : 60000 \n}\n
\n\n\n\n\n**Example:**\n Using a name:\n\n
shell> curl --header 'accept: application/json' --dump - http://localhost:8529/_api/view/products/properties\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"error\" : false, \n  \"code\" : 200, \n  \"writebufferIdle\" : 64, \n  \"writebufferActive\" : 0, \n  \"type\" : \"arangosearch\", \n  \"writebufferSizeMax\" : 33554432, \n  \"name\" : \"products\", \n  \"commitIntervalMsec\" : 1000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/107316\", \n  \"cleanupIntervalStep\" : 10, \n  \"id\" : \"107316\", \n  \"links\" : { \n  }, \n  \"consolidationIntervalMsec\" : 60000 \n}\n
\n\n\n\n", "parameters": [ { "description": "The name of the view.\n\n", @@ -14714,7 +14714,7 @@ }, "/_api/view/{view-name}/properties#ArangoSearch": { "patch": { - "description": "\n**A JSON object with these properties is required:**\n\n - **properties**:\n - **commitIntervalMsec**: Wait at least this many milliseconds between committing view data store\n changes and making documents visible to queries (default: 60000, to disable\n use: 0).\n For the case where there are a lot of inserts/updates, a lower value, until\n commit, will cause the index not to account for them and memory usage would\n continue to grow.\n For the case where there are a few inserts/updates, a higher value will impact\n performance and waste disk space for each commit call without any added\n benefits.\n Background:\n For data retrieval ArangoSearch views follow the concept of\n \"eventually-consistent\", i.e. eventually all the data in ArangoDB will be\n matched by corresponding query expressions.\n The concept of ArangoSearch view \"commit\" operation is introduced to\n control the upper-bound on the time until document addition/removals are\n actually reflected by corresponding query expressions.\n Once a \"commit\" operation is complete all documents added/removed prior to\n the start of the \"commit\" operation will be reflected by queries invoked in\n subsequent ArangoDB transactions, in-progress ArangoDB transactions will\n still continue to return a repeatable-read state.\n - **links**:\n - **[collection-name]**:\n - **analyzers** (string): The list of analyzers to be used for indexing of string values\n (default: [\"identity\"]).\n - **fields**:\n - **field-name** (object): This is a recursive structure for the specific attribute path, potentially\n containing any of the following attributes:\n *analyzers*, *includeAllFields*, *trackListPositions*, *storeValues*\n Any attributes not specified are inherited from the parent.\n - **includeAllFields**: The flag determines whether or not to index all fields on a particular level of\n depth (default: false).\n - **trackListPositions**: The flag determines whether or not values in a lists should be treated separate\n (default: false).\n - **storeValues**: How should the view track the attribute values, this setting allows for\n additional value retrieval optimizations, one of:\n - *none*: Do not store values by the view\n - *id*: Store only information about value presence, to allow use of the EXISTS() function\n (default \"none\").\n - **consolidationIntervalMsec**: Wait at least this many milliseconds between applying 'consolidationPolicy' to\n consolidate view data store and possibly release space on the filesystem\n (default: 60000, to disable use: 0).\n For the case where there are a lot of data modification operations, a higher\n value could potentially have the data store consume more space and file handles.\n For the case where there are a few data modification operations, a lower value\n will impact performance due to no segment candidates available for\n consolidation.\n Background:\n For data modification ArangoSearch views follow the concept of a\n \"versioned data store\". Thus old versions of data may be removed once there\n are no longer any users of the old data. The frequency of the cleanup and\n compaction operations are governed by 'consolidationIntervalMsec' and the\n candidates for compaction are selected via 'consolidationPolicy'.\n - **cleanupIntervalStep**: Wait at least this many commits between removing unused files in the\n ArangoSearch data directory (default: 10, to disable use: 0).\n For the case where the consolidation policies merge segments often (i.e. a lot\n of commit+consolidate), a lower value will cause a lot of disk space to be\n wasted.\n For the case where the consolidation policies rarely merge segments (i.e. few\n inserts/deletes), a higher value will impact performance without any added\n benefits.\n Background:\n With every \"commit\" or \"consolidate\" operation a new state of the view\n internal data-structures is created on disk.\n Old states/snapshots are released once there are no longer any users\n remaining.\n However, the files for the released states/snapshots are left on disk, and\n only removed by \"cleanup\" operation.\n - **consolidationPolicy**:\n\n\n\n\nChanges the properties of a view.\n\nOn success an object with the following attributes is returned:\n- *id*: The identifier of the view\n- *name*: The name of the view\n- *type*: The view type\n- all additional arangosearch view implementation specific properties\n\n\n\n\n**Example:**\n \n\n
shell> curl -X PATCH --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/view/products/properties <<EOF\n{ \n  \"locale\" : \"en\" \n}\nEOF\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/104452\", \n  \"id\" : \"104452\", \n  \"name\" : \"products\", \n  \"type\" : \"arangosearch\", \n  \"cleanupIntervalStep\" : 10, \n  \"commitIntervalMsec\" : 60000, \n  \"consolidationIntervalMsec\" : 60000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"writebufferActive\" : 0, \n  \"writebufferIdle\" : 64, \n  \"writebufferSizeMax\" : 33554432, \n  \"links\" : { \n  } \n}\n
\n\n\n\n", + "description": "\n**A JSON object with these properties is required:**\n\n - **properties**:\n - **commitIntervalMsec**: Wait at least this many milliseconds between committing view data store\n changes and making documents visible to queries (default: 1000, to disable\n use: 0).\n For the case where there are a lot of inserts/updates, a lower value, until\n commit, will cause the index not to account for them and memory usage would\n continue to grow.\n For the case where there are a few inserts/updates, a higher value will impact\n performance and waste disk space for each commit call without any added\n benefits.\n Background:\n For data retrieval ArangoSearch views follow the concept of\n \"eventually-consistent\", i.e. eventually all the data in ArangoDB will be\n matched by corresponding query expressions.\n The concept of ArangoSearch view \"commit\" operation is introduced to\n control the upper-bound on the time until document addition/removals are\n actually reflected by corresponding query expressions.\n Once a \"commit\" operation is complete all documents added/removed prior to\n the start of the \"commit\" operation will be reflected by queries invoked in\n subsequent ArangoDB transactions, in-progress ArangoDB transactions will\n still continue to return a repeatable-read state.\n - **links**:\n - **[collection-name]**:\n - **analyzers** (string): The list of analyzers to be used for indexing of string values\n (default: [\"identity\"]).\n - **fields**:\n - **field-name** (object): This is a recursive structure for the specific attribute path, potentially\n containing any of the following attributes:\n *analyzers*, *includeAllFields*, *trackListPositions*, *storeValues*\n Any attributes not specified are inherited from the parent.\n - **includeAllFields**: The flag determines whether or not to index all fields on a particular level of\n depth (default: false).\n - **trackListPositions**: The flag determines whether or not values in a lists should be treated separate\n (default: false).\n - **storeValues**: How should the view track the attribute values, this setting allows for\n additional value retrieval optimizations, one of:\n - *none*: Do not store values by the view\n - *id*: Store only information about value presence, to allow use of the EXISTS() function\n (default \"none\").\n - **consolidationIntervalMsec**: Wait at least this many milliseconds between applying 'consolidationPolicy' to\n consolidate view data store and possibly release space on the filesystem\n (default: 60000, to disable use: 0).\n For the case where there are a lot of data modification operations, a higher\n value could potentially have the data store consume more space and file handles.\n For the case where there are a few data modification operations, a lower value\n will impact performance due to no segment candidates available for\n consolidation.\n Background:\n For data modification ArangoSearch views follow the concept of a\n \"versioned data store\". Thus old versions of data may be removed once there\n are no longer any users of the old data. The frequency of the cleanup and\n compaction operations are governed by 'consolidationIntervalMsec' and the\n candidates for compaction are selected via 'consolidationPolicy'.\n - **cleanupIntervalStep**: Wait at least this many commits between removing unused files in the\n ArangoSearch data directory (default: 10, to disable use: 0).\n For the case where the consolidation policies merge segments often (i.e. a lot\n of commit+consolidate), a lower value will cause a lot of disk space to be\n wasted.\n For the case where the consolidation policies rarely merge segments (i.e. few\n inserts/deletes), a higher value will impact performance without any added\n benefits.\n Background:\n With every \"commit\" or \"consolidate\" operation a new state of the view\n internal data-structures is created on disk.\n Old states/snapshots are released once there are no longer any users\n remaining.\n However, the files for the released states/snapshots are left on disk, and\n only removed by \"cleanup\" operation.\n - **consolidationPolicy**:\n\n\n\n\nChanges the properties of a view.\n\nOn success an object with the following attributes is returned:\n- *id*: The identifier of the view\n- *name*: The name of the view\n- *type*: The view type\n- all additional arangosearch view implementation specific properties\n\n\n\n\n**Example:**\n \n\n
shell> curl -X PATCH --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/view/products/properties <<EOF\n{ \n  \"locale\" : \"en\" \n}\nEOF\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/104452\", \n  \"id\" : \"104452\", \n  \"name\" : \"products\", \n  \"type\" : \"arangosearch\", \n  \"cleanupIntervalStep\" : 10, \n  \"commitIntervalMsec\" : 1000, \n  \"consolidationIntervalMsec\" : 60000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"writebufferActive\" : 0, \n  \"writebufferIdle\" : 64, \n  \"writebufferSizeMax\" : 33554432, \n  \"links\" : { \n  } \n}\n
\n\n\n\n", "parameters": [ { "description": "The name of the view.\n\n", @@ -14751,7 +14751,7 @@ "x-hints": "" }, "put": { - "description": "\n**A JSON object with these properties is required:**\n\n - **properties**:\n - **commitIntervalMsec**: Wait at least this many milliseconds between committing view data store\n changes and making documents visible to queries (default: 60000, to disable\n use: 0).\n For the case where there are a lot of inserts/updates, a lower value, until\n commit, will cause the index not to account for them and memory usage would\n continue to grow.\n For the case where there are a few inserts/updates, a higher value will impact\n performance and waste disk space for each commit call without any added\n benefits.\n Background:\n For data retrieval ArangoSearch views follow the concept of\n \"eventually-consistent\", i.e. eventually all the data in ArangoDB will be\n matched by corresponding query expressions.\n The concept of ArangoSearch view \"commit\" operation is introduced to\n control the upper-bound on the time until document addition/removals are\n actually reflected by corresponding query expressions.\n Once a \"commit\" operation is complete all documents added/removed prior to\n the start of the \"commit\" operation will be reflected by queries invoked in\n subsequent ArangoDB transactions, in-progress ArangoDB transactions will\n still continue to return a repeatable-read state.\n - **links**:\n - **[collection-name]**:\n - **analyzers** (string): The list of analyzers to be used for indexing of string values\n (default: [\"identity\"]).\n - **fields**:\n - **field-name** (object): This is a recursive structure for the specific attribute path, potentially\n containing any of the following attributes:\n *analyzers*, *includeAllFields*, *trackListPositions*, *storeValues*\n Any attributes not specified are inherited from the parent.\n - **includeAllFields**: The flag determines whether or not to index all fields on a particular level of\n depth (default: false).\n - **trackListPositions**: The flag determines whether or not values in a lists should be treated separate\n (default: false).\n - **storeValues**: How should the view track the attribute values, this setting allows for\n additional value retrieval optimizations, one of:\n - *none*: Do not store values by the view\n - *id*: Store only information about value presence, to allow use of the EXISTS() function\n (default \"none\").\n - **consolidationIntervalMsec**: Wait at least this many milliseconds between applying 'consolidationPolicy' to\n consolidate view data store and possibly release space on the filesystem\n (default: 60000, to disable use: 0).\n For the case where there are a lot of data modification operations, a higher\n value could potentially have the data store consume more space and file handles.\n For the case where there are a few data modification operations, a lower value\n will impact performance due to no segment candidates available for\n consolidation.\n Background:\n For data modification ArangoSearch views follow the concept of a\n \"versioned data store\". Thus old versions of data may be removed once there\n are no longer any users of the old data. The frequency of the cleanup and\n compaction operations are governed by 'consolidationIntervalMsec' and the\n candidates for compaction are selected via 'consolidationPolicy'.\n - **cleanupIntervalStep**: Wait at least this many commits between removing unused files in the\n ArangoSearch data directory (default: 10, to disable use: 0).\n For the case where the consolidation policies merge segments often (i.e. a lot\n of commit+consolidate), a lower value will cause a lot of disk space to be\n wasted.\n For the case where the consolidation policies rarely merge segments (i.e. few\n inserts/deletes), a higher value will impact performance without any added\n benefits.\n Background:\n With every \"commit\" or \"consolidate\" operation a new state of the view\n internal data-structures is created on disk.\n Old states/snapshots are released once there are no longer any users\n remaining.\n However, the files for the released states/snapshots are left on disk, and\n only removed by \"cleanup\" operation.\n - **consolidationPolicy**:\n\n\n\n\nChanges the properties of a view.\n\nOn success an object with the following attributes is returned:\n- *id*: The identifier of the view\n- *name*: The name of the view\n- *type*: The view type\n- all additional arangosearch view implementation specific properties\n\n\n\n\n**Example:**\n \n\n
shell> curl -X PUT --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/view/products/properties <<EOF\n{ \n  \"locale\" : \"en\" \n}\nEOF\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/104466\", \n  \"id\" : \"104466\", \n  \"name\" : \"products\", \n  \"type\" : \"arangosearch\", \n  \"cleanupIntervalStep\" : 10, \n  \"commitIntervalMsec\" : 60000, \n  \"consolidationIntervalMsec\" : 60000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"writebufferActive\" : 0, \n  \"writebufferIdle\" : 64, \n  \"writebufferSizeMax\" : 33554432, \n  \"links\" : { \n  } \n}\n
\n\n\n\n", + "description": "\n**A JSON object with these properties is required:**\n\n - **properties**:\n - **commitIntervalMsec**: Wait at least this many milliseconds between committing view data store\n changes and making documents visible to queries (default: 1000, to disable\n use: 0).\n For the case where there are a lot of inserts/updates, a lower value, until\n commit, will cause the index not to account for them and memory usage would\n continue to grow.\n For the case where there are a few inserts/updates, a higher value will impact\n performance and waste disk space for each commit call without any added\n benefits.\n Background:\n For data retrieval ArangoSearch views follow the concept of\n \"eventually-consistent\", i.e. eventually all the data in ArangoDB will be\n matched by corresponding query expressions.\n The concept of ArangoSearch view \"commit\" operation is introduced to\n control the upper-bound on the time until document addition/removals are\n actually reflected by corresponding query expressions.\n Once a \"commit\" operation is complete all documents added/removed prior to\n the start of the \"commit\" operation will be reflected by queries invoked in\n subsequent ArangoDB transactions, in-progress ArangoDB transactions will\n still continue to return a repeatable-read state.\n - **links**:\n - **[collection-name]**:\n - **analyzers** (string): The list of analyzers to be used for indexing of string values\n (default: [\"identity\"]).\n - **fields**:\n - **field-name** (object): This is a recursive structure for the specific attribute path, potentially\n containing any of the following attributes:\n *analyzers*, *includeAllFields*, *trackListPositions*, *storeValues*\n Any attributes not specified are inherited from the parent.\n - **includeAllFields**: The flag determines whether or not to index all fields on a particular level of\n depth (default: false).\n - **trackListPositions**: The flag determines whether or not values in a lists should be treated separate\n (default: false).\n - **storeValues**: How should the view track the attribute values, this setting allows for\n additional value retrieval optimizations, one of:\n - *none*: Do not store values by the view\n - *id*: Store only information about value presence, to allow use of the EXISTS() function\n (default \"none\").\n - **consolidationIntervalMsec**: Wait at least this many milliseconds between applying 'consolidationPolicy' to\n consolidate view data store and possibly release space on the filesystem\n (default: 60000, to disable use: 0).\n For the case where there are a lot of data modification operations, a higher\n value could potentially have the data store consume more space and file handles.\n For the case where there are a few data modification operations, a lower value\n will impact performance due to no segment candidates available for\n consolidation.\n Background:\n For data modification ArangoSearch views follow the concept of a\n \"versioned data store\". Thus old versions of data may be removed once there\n are no longer any users of the old data. The frequency of the cleanup and\n compaction operations are governed by 'consolidationIntervalMsec' and the\n candidates for compaction are selected via 'consolidationPolicy'.\n - **cleanupIntervalStep**: Wait at least this many commits between removing unused files in the\n ArangoSearch data directory (default: 10, to disable use: 0).\n For the case where the consolidation policies merge segments often (i.e. a lot\n of commit+consolidate), a lower value will cause a lot of disk space to be\n wasted.\n For the case where the consolidation policies rarely merge segments (i.e. few\n inserts/deletes), a higher value will impact performance without any added\n benefits.\n Background:\n With every \"commit\" or \"consolidate\" operation a new state of the view\n internal data-structures is created on disk.\n Old states/snapshots are released once there are no longer any users\n remaining.\n However, the files for the released states/snapshots are left on disk, and\n only removed by \"cleanup\" operation.\n - **consolidationPolicy**:\n\n\n\n\nChanges the properties of a view.\n\nOn success an object with the following attributes is returned:\n- *id*: The identifier of the view\n- *name*: The name of the view\n- *type*: The view type\n- all additional arangosearch view implementation specific properties\n\n\n\n\n**Example:**\n \n\n
shell> curl -X PUT --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/view/products/properties <<EOF\n{ \n  \"locale\" : \"en\" \n}\nEOF\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/104466\", \n  \"id\" : \"104466\", \n  \"name\" : \"products\", \n  \"type\" : \"arangosearch\", \n  \"cleanupIntervalStep\" : 10, \n  \"commitIntervalMsec\" : 1000, \n  \"consolidationIntervalMsec\" : 60000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"writebufferActive\" : 0, \n  \"writebufferIdle\" : 64, \n  \"writebufferSizeMax\" : 33554432, \n  \"links\" : { \n  } \n}\n
\n\n\n\n", "parameters": [ { "description": "The name of the view.\n\n", @@ -14790,7 +14790,7 @@ }, "/_api/view/{view-name}/properties#arangosearch": { "patch": { - "description": "\n\nChanges the properties of a view.\n\nOn success an object with the following attributes is returned:\n- *id*: The identifier of the view\n- *name*: The name of the view\n- *type*: The view type\n- any additional view implementation specific properties\n\n\n\n\n**Example:**\n \n\n
shell> curl -X PATCH --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/view/products/properties <<EOF\n{ \n}\nEOF\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/107323\", \n  \"id\" : \"107323\", \n  \"name\" : \"products\", \n  \"type\" : \"arangosearch\", \n  \"cleanupIntervalStep\" : 10, \n  \"commitIntervalMsec\" : 60000, \n  \"consolidationIntervalMsec\" : 60000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"writebufferActive\" : 0, \n  \"writebufferIdle\" : 64, \n  \"writebufferSizeMax\" : 33554432, \n  \"links\" : { \n  } \n}\n
\n\n\n\n\n", + "description": "\n\nChanges the properties of a view.\n\nOn success an object with the following attributes is returned:\n- *id*: The identifier of the view\n- *name*: The name of the view\n- *type*: The view type\n- any additional view implementation specific properties\n\n\n\n\n**Example:**\n \n\n
shell> curl -X PATCH --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/view/products/properties <<EOF\n{ \n}\nEOF\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/107323\", \n  \"id\" : \"107323\", \n  \"name\" : \"products\", \n  \"type\" : \"arangosearch\", \n  \"cleanupIntervalStep\" : 10, \n  \"commitIntervalMsec\" : 1000, \n  \"consolidationIntervalMsec\" : 60000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"writebufferActive\" : 0, \n  \"writebufferIdle\" : 64, \n  \"writebufferSizeMax\" : 33554432, \n  \"links\" : { \n  } \n}\n
\n\n\n\n\n", "parameters": [ { "description": "The name of the view.\n\n", @@ -14818,7 +14818,7 @@ "x-hints": "" }, "put": { - "description": "\n\nChanges the properties of a view.\n\nOn success an object with the following attributes is returned:\n- *id*: The identifier of the view\n- *name*: The name of the view\n- *type*: The view type\n- any additional view implementation specific properties\n\n\n\n\n**Example:**\n \n\n
shell> curl -X PUT --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/view/products/properties <<EOF\n{ \n}\nEOF\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/107337\", \n  \"id\" : \"107337\", \n  \"name\" : \"products\", \n  \"type\" : \"arangosearch\", \n  \"cleanupIntervalStep\" : 10, \n  \"commitIntervalMsec\" : 60000, \n  \"consolidationIntervalMsec\" : 60000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"writebufferActive\" : 0, \n  \"writebufferIdle\" : 64, \n  \"writebufferSizeMax\" : 33554432, \n  \"links\" : { \n  } \n}\n
\n\n\n\n", + "description": "\n\nChanges the properties of a view.\n\nOn success an object with the following attributes is returned:\n- *id*: The identifier of the view\n- *name*: The name of the view\n- *type*: The view type\n- any additional view implementation specific properties\n\n\n\n\n**Example:**\n \n\n
shell> curl -X PUT --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/view/products/properties <<EOF\n{ \n}\nEOF\n\nHTTP/1.1 OK\ncontent-type: application/json; charset=utf-8\nx-content-type-options: nosniff\n\n{ \n  \"globallyUniqueId\" : \"h8B2B671BCFD0/107337\", \n  \"id\" : \"107337\", \n  \"name\" : \"products\", \n  \"type\" : \"arangosearch\", \n  \"cleanupIntervalStep\" : 10, \n  \"commitIntervalMsec\" : 1000, \n  \"consolidationIntervalMsec\" : 60000, \n  \"consolidationPolicy\" : { \n    \"type\" : \"bytes_accum\", \n    \"threshold\" : 0.10000000149011612 \n  }, \n  \"writebufferActive\" : 0, \n  \"writebufferIdle\" : 64, \n  \"writebufferSizeMax\" : 33554432, \n  \"links\" : { \n  } \n}\n
\n\n\n\n", "parameters": [ { "description": "The name of the view.\n\n", diff --git a/tests/IResearch/IResearchLink-test.cpp b/tests/IResearch/IResearchLink-test.cpp index 4f3a35df3d..d5810254b3 100644 --- a/tests/IResearch/IResearchLink-test.cpp +++ b/tests/IResearch/IResearchLink-test.cpp @@ -358,7 +358,7 @@ SECTION("test_flush_marker") { arangodb::encoding::storeNumber(&buf[sizeof(::MMFilesMarker)], TRI_voc_tick_t(1), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); @@ -374,7 +374,7 @@ SECTION("test_flush_marker") { arangodb::encoding::storeNumber(&buf[sizeof(::MMFilesMarker)], TRI_voc_tick_t(1), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); @@ -390,7 +390,7 @@ SECTION("test_flush_marker") { arangodb::encoding::storeNumber(&buf[sizeof(::MMFilesMarker)], TRI_voc_tick_t(1), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); @@ -406,7 +406,7 @@ SECTION("test_flush_marker") { arangodb::encoding::storeNumber(&buf[sizeof(::MMFilesMarker)], TRI_voc_tick_t(1), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); @@ -422,7 +422,7 @@ SECTION("test_flush_marker") { arangodb::encoding::storeNumber(&buf[sizeof(::MMFilesMarker)], TRI_voc_tick_t(1), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); @@ -438,7 +438,7 @@ SECTION("test_flush_marker") { arangodb::encoding::storeNumber(&buf[sizeof(::MMFilesMarker)], TRI_voc_tick_t(1), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); @@ -464,7 +464,7 @@ SECTION("test_flush_marker") { arangodb::encoding::storeNumber(&buf[sizeof(::MMFilesMarker)], TRI_voc_tick_t(1), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); @@ -480,7 +480,7 @@ SECTION("test_flush_marker") { arangodb::encoding::storeNumber(&buf[sizeof(::MMFilesMarker)], TRI_voc_tick_t(1), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); diff --git a/tests/IResearch/IResearchViewMeta-test.cpp b/tests/IResearch/IResearchViewMeta-test.cpp index bff7567be6..8118a5ebc5 100644 --- a/tests/IResearch/IResearchViewMeta-test.cpp +++ b/tests/IResearch/IResearchViewMeta-test.cpp @@ -69,7 +69,7 @@ SECTION("test_defaults") { CHECK((true == metaState._collections.empty())); CHECK(true == (10 == meta._cleanupIntervalStep)); - CHECK((true == (60 * 1000 == meta._commitIntervalMsec))); + CHECK((true == (1000 == meta._commitIntervalMsec))); CHECK(true == (60 * 1000 == meta._consolidationIntervalMsec)); CHECK((std::string("bytes_accum") == meta._consolidationPolicy.properties().get("type").copyString())); CHECK((false == !meta._consolidationPolicy.policy())); @@ -132,7 +132,7 @@ SECTION("test_readDefaults") { CHECK((true == metaState.init(json->slice(), tmpString))); CHECK((true == metaState._collections.empty())); CHECK(10 == meta._cleanupIntervalStep); - CHECK((60 * 1000 == meta._commitIntervalMsec)); + CHECK((1000 == meta._commitIntervalMsec)); CHECK(60 * 1000 == meta._consolidationIntervalMsec); CHECK((std::string("bytes_accum") == meta._consolidationPolicy.properties().get("type").copyString())); CHECK((false == !meta._consolidationPolicy.policy())); @@ -301,7 +301,7 @@ SECTION("test_writeDefaults") { tmpSlice = slice.get("cleanupIntervalStep"); CHECK((true == tmpSlice.isNumber() && 10 == tmpSlice.getNumber())); tmpSlice = slice.get("commitIntervalMsec"); - CHECK((true == tmpSlice.isNumber() && 60000 == tmpSlice.getNumber())); + CHECK((true == tmpSlice.isNumber() && 1000 == tmpSlice.getNumber())); tmpSlice = slice.get("consolidationIntervalMsec"); CHECK((true == tmpSlice.isNumber() && 60000 == tmpSlice.getNumber())); tmpSlice = slice.get("consolidationPolicy"); @@ -522,4 +522,4 @@ SECTION("test_writeMaskNone") { // ----------------------------------------------------------------------------- // --SECTION-- END-OF-FILE -// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- \ No newline at end of file diff --git a/tests/RestServer/FlushFeature-test.cpp b/tests/RestServer/FlushFeature-test.cpp index a40548d745..00dfd2a20b 100644 --- a/tests/RestServer/FlushFeature-test.cpp +++ b/tests/RestServer/FlushFeature-test.cpp @@ -166,7 +166,7 @@ TEST_CASE("FlushFeature", "[serverfeature][serverfeature-flush]") { TRI_voc_tick_t(1), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); @@ -206,7 +206,7 @@ TEST_CASE("FlushFeature", "[serverfeature][serverfeature-flush]") { TRI_voc_tick_t(1), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); @@ -246,7 +246,7 @@ TEST_CASE("FlushFeature", "[serverfeature][serverfeature-flush]") { TRI_voc_tick_t(1), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); @@ -287,7 +287,7 @@ TEST_CASE("FlushFeature", "[serverfeature][serverfeature-flush]") { TRI_voc_tick_t(1), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); @@ -329,7 +329,7 @@ TEST_CASE("FlushFeature", "[serverfeature][serverfeature-flush]") { TRI_voc_tick_t(42), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); @@ -371,7 +371,7 @@ TEST_CASE("FlushFeature", "[serverfeature][serverfeature-flush]") { TRI_voc_tick_t(1), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); @@ -413,7 +413,7 @@ TEST_CASE("FlushFeature", "[serverfeature][serverfeature-flush]") { TRI_voc_tick_t(1), sizeof(TRI_voc_tick_t)); buf.append(json->slice().begin(), json->slice().byteSize()); auto* marker = reinterpret_cast(&buf[0]); - marker->setSize(buf.size() - sizeof(::MMFilesMarker)); + marker->setSize(buf.size()); marker->setType(::MMFilesMarkerType::TRI_DF_MARKER_VPACK_FLUSH_SYNC); arangodb::MMFilesWalRecoverState state(false); CHECK((0 == state.errorCount)); diff --git a/tests/js/common/aql/aql-view-arangosearch-ddl-cluster.js b/tests/js/common/aql/aql-view-arangosearch-ddl-cluster.js index 75f1cf376c..c6cda7034b 100644 --- a/tests/js/common/aql/aql-view-arangosearch-ddl-cluster.js +++ b/tests/js/common/aql/aql-view-arangosearch-ddl-cluster.js @@ -209,7 +209,7 @@ function IResearchFeatureDDLTestSuite () { properties = view.properties(); assertTrue(Object === properties.constructor); assertEqual(10, properties.cleanupIntervalStep); - assertEqual(60000, properties.commitIntervalMsec); + assertEqual(1000, properties.commitIntervalMsec); assertEqual(60000, properties.consolidationIntervalMsec); assertTrue(Object === properties.consolidationPolicy.constructor); assertEqual(2, Object.keys(properties.consolidationPolicy).length); @@ -240,7 +240,7 @@ function IResearchFeatureDDLTestSuite () { properties = view.properties(); assertTrue(Object === properties.constructor); assertEqual(20, properties.cleanupIntervalStep); - assertEqual(60000, properties.commitIntervalMsec); + assertEqual(1000, properties.commitIntervalMsec); assertEqual(60000, properties.consolidationIntervalMsec); assertTrue(Object === properties.consolidationPolicy.constructor); assertEqual(2, Object.keys(properties.consolidationPolicy).length); @@ -679,7 +679,7 @@ function IResearchFeatureDDLTestSuite () { properties = view.properties(); assertTrue(Object === properties.constructor); assertEqual(10, properties.cleanupIntervalStep); - assertEqual(60000, properties.commitIntervalMsec); + assertEqual(1000, properties.commitIntervalMsec); assertEqual(60000, properties.consolidationIntervalMsec); assertTrue(Object === properties.consolidationPolicy.constructor); assertEqual(2, Object.keys(properties.consolidationPolicy).length); @@ -811,7 +811,8 @@ function IResearchFeatureDDLTestSuite () { assertEqual(db._views().length, 0); assertEqual(db[viewName], undefined); - } + }, + }; } diff --git a/tests/js/common/aql/aql-view-arangosearch-ddl-noncluster.js b/tests/js/common/aql/aql-view-arangosearch-ddl-noncluster.js index 28865210ed..c3e3852c58 100644 --- a/tests/js/common/aql/aql-view-arangosearch-ddl-noncluster.js +++ b/tests/js/common/aql/aql-view-arangosearch-ddl-noncluster.js @@ -209,7 +209,7 @@ function IResearchFeatureDDLTestSuite () { properties = view.properties(); assertTrue(Object === properties.constructor); assertEqual(10, properties.cleanupIntervalStep); - assertEqual(60000, properties.commitIntervalMsec); + assertEqual(1000, properties.commitIntervalMsec); assertEqual(60000, properties.consolidationIntervalMsec); assertTrue(Object === properties.consolidationPolicy.constructor); assertEqual(2, Object.keys(properties.consolidationPolicy).length); @@ -240,7 +240,7 @@ function IResearchFeatureDDLTestSuite () { properties = view.properties(); assertTrue(Object === properties.constructor); assertEqual(20, properties.cleanupIntervalStep); - assertEqual(60000, properties.commitIntervalMsec); + assertEqual(1000, properties.commitIntervalMsec); assertEqual(60000, properties.consolidationIntervalMsec); assertTrue(Object === properties.consolidationPolicy.constructor); assertEqual(2, Object.keys(properties.consolidationPolicy).length); @@ -679,7 +679,7 @@ function IResearchFeatureDDLTestSuite () { properties = view.properties(); assertTrue(Object === properties.constructor); assertEqual(10, properties.cleanupIntervalStep); - assertEqual(60000, properties.commitIntervalMsec); + assertEqual(1000, properties.commitIntervalMsec); assertEqual(60000, properties.consolidationIntervalMsec); assertTrue(Object === properties.consolidationPolicy.constructor); assertEqual(2, Object.keys(properties.consolidationPolicy).length);