* forward-port AQL optimizations from 3.3
* fix restrict-to-single-shard rule
* added tests for specific cases
* ModificationNodes now can know if they are restricted or not
* OptimizerRule now updates the ModificationNode instead of setting ownName on remote node.
* The DBServerEngine container now only sends a subset of snippets (those which are relevant) It is able to restrict any part of the query to a certain shard or even a list of shards
* ExecutionEngine CreateBlocks in ClusterMode now returns Result instead of throwing.
* Adapted Coordinator side to a bitter mapping of RemoteNode => QuerySnippets. This is still ongoing work.
* Fixed Coordinator enginecontainer test and finisehd implementation of EngineInfoContainerDBServer. Seems to work so far, need to adapt test to prove it.
* Adapted test for modification nodes and restrict to shard.
* restrictTo can now be de-/serialized on Modification Nodes
* Fixed Community Compile Error
* Added a test for Indexes/EnumerateCollection nodes
* EnumerateCollection and IndexNode now have options to be restricted to a single shard, opt rule not yet updated
* DBServer part of planning now checks Enumerate and IndexNodes for single shard optimization
* Added tests for simple single shard optimization on IndexNodes
* Adapted optimzierrule for SingleShard optimierung on IndexNodes
* Fixed an issue with externally restricted shard ids in combination with shard_id based optimization
* Added a test for multiple single shard optimizations on the same collection
* Removed collection/Shard duplicate check of optimize to single shard rules
* Updated Explainer to handle optimize to single shard
* Let more tests pass an optimized AQL variant
* Temporarily disabled a tests that can only be solved after some work in transaction
* fix infinite loop by setting _lastSyncTime within runBackgroundJob(). add code to make agency callback ignore _lastSyncTime limit.
* create change notes for this PR and previous PR 5114
* Fixing subqueries in aql profiler
* Adding additional testsuite
* Fix AQL profiling example name, add API example
Also use different query for explain and profiling with SLEEP() for
non-zero runtimes.
* New/updated examples for query explain/profiling
* Fix runtime calculation
* Adeded a route to aardvark to export a debug dump, it can optinally contain anonymized example data
* Added the Download Debug Button to UI
* fixed zip file download of query dump file
* removed not needed vars
* Added JWT token authentication and error display on debug dump button
* Fixed Error reporting on download debug dump.
* Anonymization does not anonymize system attributes any more.
* Anonymize in explainer debugDump will now anonymize bindVars and will not anonymize system document attributes.
* Initial low level interface for thread crash reporting (and management).
* Add a member version of isClusterRole()
* isolate heartbeat thread creation to new StartHeartbeatThread(). create heartbeat thread even if not a cluster or if an agent.
* update runDBServer() and runCoordinator() to shutdown more quickly by polling isStopping() at additional locations.
* copying updates from different branch / PR
* basic thread crash logging. Not yet tied into Agency arangod or have any specific threads posting crashes
* make Supervision thread a CriticalThread
* sandwich CriticalThread between Thread and other classes to create long term, repeating thread crash reporting.
* restore code lost upon branch update relating to new startHeartbeatThread() function
* add CriticalThread.cpp to build
* add new runAgentServer() function to loop for Agents. Make Heartbeat thread derive from CriticalThread.
* remove debug line
* issue 383.2: backport from iresearch upstream: address issue with _T(...) macro not working when _MBCS is defined on MSVC, backport from iresearch upstream: address issue with _T(...) macro not working when _MBCS is defined on MSVC
* backport: add more tests for IResearchViewDBServer
* shutdown quicker on db server and coordinator heartbeat threads
* Adjust the new condition variable usage to follow normal coding patterns. Probably was ok. But why take the chance. And simplify future maintenance.
* Supervision goes to Maintenance mode, when /arango/Supervision/Maintenance exists
* coordinator route stands
* stop updates in transient, when supervision off