* Applied review cAdded sceleton optimizer functionomments
* Added mask for rule
* Applied review cAdded sceleton optimizer functionomments
* Added mask for rule
* adding plan traversal for rule
* Rule execution block developing
* Experiment with additional block
* LIMIT node modifications
* implemented late materialization base version.
* Code cleanup
* Added check for variable usage
* Implemented serialization and cloning
* Fixed build errors
* Implemented late materialization for LimitNode
* Moved materialization to Sort Node
* Removed LimitNode modiications
* Implemented skipRows to speedup single server
* Added tests for optimizer rule
* fixed build
* Fix mac build
* Fixed mac build
* Fixed PR test run errors
* Added tmp fix for cluster test runs
* removed debug print
* Make materialization stick to last sort node. Add late materialization to explainer
* Updated optimization rule to search optimal SortNode to do materialization
* Refined optimization rules for cluster
* Added tests for SortExecutor and IResearchViewNode
* Fixed mac buid. Removed misplaced assertion.
* Fixed build
* Updated tests. Coded cleanup
* Code cleanup
* made function name for SortedExecutor match name in ConstraintSortedExecutor
* cleanup
* Fixed test run
* made scoring results stable across cluster
* Make optimize rule stop if sort node for limit node is not suitable
* Disabled constrained sort for materializing SortNode
* reverted SortNode modifications
* Implemented separate materializer node
* Fixed tests to account new materialize node
* Code cleanup
* reverted debugging change
* Fixed test jslint error and comments
* MaterializeNode renamed
* enum value renamed for materialize node
* Code cleanup
* code cleanup and optimization
* Fixed clang warning
* Applied review comments
* Out variable planning moved to materialize node
* inlined getters in ReadContex
* Added a way to execute DEATH tests in a core-free way, otherewise the Linux jenkins will produce core-files on those tests
* Update tests/Mocks/Death_Test.h
no new line at end of file
* Renamed the DeathTest macro as suggested.
* Yeah Windows Yeah, disabled death-test because i cannot get it to work.
* Replace template <bool blockPassthrough>
by template <BlockPassthrough blockPassthrough> where BlockPassthrough is an
enum class.
This is mainly for better readability and for some type safety.
* Fixup some implicit conversions to bool
* Add Start/End subquery node skeleton
* Added a test query that triggers complex interna in the future and needs to proof that our work is side-effect free.
* Added first draft of ShadowRow Interface
* Refactored RegisterPlan and pulled it out of the ExecutionNode
* AqlItemBlock now has an additional hidden register to store subquery depth infromation. Right now no shadow rows are created, however thy could now make use of this situation
* Added API and test to insert new shadow rows into an OutputRow.
* Extrated test helper function
* Add template function to statically assert size of type
* Add Start/End subquery node skeleton
* Add Start/End subquery node creation to ExecutionNode
* Cleanup SubqueryEndNode
* Add test file
* Add isEqualTo to ExecutionNode
* Subquery nodes cleanup
* Update ExecutionNode tests
* Added API and tests to consume ShadowRows. Interface is there and compiles with templates, we might need to implement further underlying functions later on as we make progress on ShadowRows, it is only implemented in the minimal way (intentionally)
* Updates to testing code
* Added a test for nested ShadowRows and adapted OutputRow accordingly.
* More updates
* Add optimizer rule
* Fix optimizer rule
* Added additional memory include, seems to be required under GCC not udner CLANG
* it actually helps to save fies before commiting them...
* Fix optimizer rule (again)
* Fixed serialization/Deserialization of AqlItemBlock to contain the hidden subquery register now
* Added a c++ test for AqlItemBlock. It just covers the basics thus far and needs to be improved.
* Fixed toVPack of AqlInputRow for subqueries. Also added serialization / deserialization tests for AqlItemRow
* Added a c++ test for inputAqlItem row serialization => AqlItemBlock deserialization
* Add a public function to get plan from query
* Fix register planning
* Add test for splicing subquery nodes
* add static asserts for sizes of SubqueryStartNode and SubqueryEndNode
* Add comment about statically asserted size
* Fix isEqualTo virtual and override dance.
* Attempt to fix :windows: compile warning
* Fix isEqualTo, remove static_assert_size
* Remove a TODO; the plan owns the ExecutionNodes
* Only add stealPlan to Query when testing
* Remove another static_assert_size
* Fixed mac compile issues
* Added a serialization format to be backwards compatible to 3.5 whenever AQL item blocks need to be send over to remote nodes.
* Handle ShadowAqlItemRow in SingleRowFetcher
* Move some code from header to cpp
* Added more tests for serialization of shadow rows, and fixed a bug revealed by this
* Apply suggestions from code review
Thank you for review!
Co-Authored-By: Tobias Gödderz <tobias@arangodb.com>
* Review comments. Thanks for spotting
* Fixed hidden merge conflicts
* Removed unused variable
* Added first test on ShadowRows in SingleRowFetcher. Found inconvenience in original code with it.
* Added a test for multi level shadow rows
* Added a test and fixed production for multiple consecutirve shadow rows.
* Added tests for pass through blocks and shadow rows
* Attempt to explain windows on how one can actually cast numbers into other number types...
* Add SubqueryEndExecutor
* Adapted RowFetcherHelper to be able to work on ShadowRows
* Fixed minor error in RowFetcherHelper that causes LIMIT tests to error
* Temporarily disabled test suites (sorry there is only one 'test case' in this suites that does all or nothing tests ...) as it tests a feature we cannot support in this intermediate state, we need to default disable our new rule first.
* IMplemented missing function to copy over SubqueryDepth between blocks
* Seperated assert, to see faster which part is violated
* Update arangod/Aql/AqlItemBlockSerializationFormat.h
Co-Authored-By: Tobias Gödderz <tobias@arangodb.com>
* Disabled subquery splice rule by default
* Forgotten merge marker
* temporarily modified test
* Some Subquery End Executor work
* Fix RowFetcherHelper to work with ShadowRows
* Add tests for SubqueryEndExecutor
* Rewrite SubqueryEndExecutor
* Update test
* Add createBlock code for SubqueryEndExecutionNode
* Some fixups adding ExecutionBlockImpl for SubqueryEndExecutor
* Fix SubqueryEndExecutor
* Update SubqueryEndExecutorTest
* Update endexecutor test
* Fix the endnode executor once more
* Fix some merge fallout
* Update test
* Add missing advanceRow to SubqueryEndExecutor
* SubqueryEndExecutor Tests
* Activate a death test
* Better handling of death test
* RowFetcherTest refactoring Part 1, still ongoing. We use this for AqlItemMatrix and SingleRowFetcher
* Update and cleanup the SubqueryEndExecutor tests
* Check that expected shadow row depths are met
* Remove commented out code in AqlItemBlock.cpp
* Remove a misplaced comment
* Sort out SubqueryEndExecutor includes
* Remove superflous include
* Consistently use NoStats{} in SubqueryEndExecutor
* Make SubqueryEndExecutor properties constexpr
* Reactivate IResearchTests
* Do not copy the accumulator in SubqueryEndNode
* Return a more sensible value for expectedNumberOfRows of SubqueryEndNodeExecutor
* Constify an argument
* Fix ownership problems with the buffer for _accumulator
* Cleanup SubqueryEndExecutor tests
Also add a test that writes to a register other than 0
* Patch RowFetcherHelper to count the number of Items returned instead of number
of calls
* Make MSVC happy
* Added TODO notes
* Pass limit of constrained sort to sorting gather
* Count output rows, and added assertions
* Extracted row-producing code in a reusable way
* Implemented SortingGatherExecutor::skipRows
* Fixed signature
* Fixed an assertion
* Added limit to (de)serialization
* Fixed an assertion
* Fixed an atMost calculation
* In the sort-limit optimization, apply limit to sorting gather as well
* Fixed optimizer rule reporting modification
* Added missing initialization
* Fix: Do not produce more rows than the limit when skipping first
* Fix: pass limit when cloning
* Updated CHANGELOG
* Fixed atMost intricacies
* Add Start/End subquery node skeleton
* Added a test query that triggers complex interna in the future and needs to proof that our work is side-effect free.
* Added first draft of ShadowRow Interface
* Refactored RegisterPlan and pulled it out of the ExecutionNode
* AqlItemBlock now has an additional hidden register to store subquery depth infromation. Right now no shadow rows are created, however thy could now make use of this situation
* Added API and test to insert new shadow rows into an OutputRow.
* Extrated test helper function
* Add template function to statically assert size of type
* Add Start/End subquery node skeleton
* Add Start/End subquery node creation to ExecutionNode
* Cleanup SubqueryEndNode
* Add test file
* Add isEqualTo to ExecutionNode
* Subquery nodes cleanup
* Update ExecutionNode tests
* Added API and tests to consume ShadowRows. Interface is there and compiles with templates, we might need to implement further underlying functions later on as we make progress on ShadowRows, it is only implemented in the minimal way (intentionally)
* Updates to testing code
* Added a test for nested ShadowRows and adapted OutputRow accordingly.
* More updates
* Add optimizer rule
* Fix optimizer rule
* Added additional memory include, seems to be required under GCC not udner CLANG
* it actually helps to save fies before commiting them...
* Fix optimizer rule (again)
* Fixed serialization/Deserialization of AqlItemBlock to contain the hidden subquery register now
* Added a c++ test for AqlItemBlock. It just covers the basics thus far and needs to be improved.
* Fixed toVPack of AqlInputRow for subqueries. Also added serialization / deserialization tests for AqlItemRow
* Added a c++ test for inputAqlItem row serialization => AqlItemBlock deserialization
* Add a public function to get plan from query
* Fix register planning
* Add test for splicing subquery nodes
* add static asserts for sizes of SubqueryStartNode and SubqueryEndNode
* Add comment about statically asserted size
* Fix isEqualTo virtual and override dance.
* Attempt to fix :windows: compile warning
* Fix isEqualTo, remove static_assert_size
* Remove a TODO; the plan owns the ExecutionNodes
* Only add stealPlan to Query when testing
* Remove another static_assert_size
* Fixed mac compile issues
* Initial commit, added class and test stubs
* Added Executor body stub, also added a test for no input. Passes now, as no input is read yet.
* Base implementation + Test of SubqueryStart Executor. First level shadowRows are now produced. Need to add tests for multilevel, and for non-fitting output blocks.
* Added more sophisticated test about shadow row relevance
* Added a test where ShadowRow does not fit into the open block. Also added disabled test on multi level shadowrows. Requires modifications on SingleRowFetcher.
* Added a serialization format to be backwards compatible to 3.5 whenever AQL item blocks need to be send over to remote nodes.
* Handle ShadowAqlItemRow in SingleRowFetcher
* Move some code from header to cpp
* Added more tests for serialization of shadow rows, and fixed a bug revealed by this
* Apply suggestions from code review
Thank you for review!
Co-Authored-By: Tobias Gödderz <tobias@arangodb.com>
* Review comments. Thanks for spotting
* Fixed hidden merge conflicts
* Removed unused variable
* Added first test on ShadowRows in SingleRowFetcher. Found inconvenience in original code with it.
* Added a test for multi level shadow rows
* Added a test and fixed production for multiple consecutirve shadow rows.
* Added tests for pass through blocks and shadow rows
* Attempt to explain windows on how one can actually cast numbers into other number types...
* Adapted RowFetcherHelper to be able to work on ShadowRows
* Seperated assert, to see faster which part is violated
* Fixed minor error in RowFetcherHelper that causes LIMIT tests to error
* Temporarily disabled test suites (sorry there is only one 'test case' in this suites that does all or nothing tests ...) as it tests a feature we cannot support in this intermediate state, we need to default disable our new rule first.
* Improve check of ExecutionState
* Implemented shadow row handling in subquery start executor. Tests not happy yet
* IMplemented missing function to copy over SubqueryDepth between blocks
* Fixed test code of StartExecutor test. It asserted wrongly on releveance of subquery rows.
* Added instanciation of SubqueryStartExecutorTest. Code does not compile.
* Allow to create SubqueryStartExecutors.
* Update arangod/Aql/AqlItemBlockSerializationFormat.h
Co-Authored-By: Tobias Gödderz <tobias@arangodb.com>
* Disabled subquery splice rule by default
* Forgotten merge marker
* temporarily modified test
* temporarily modified test
* Fixed windows compile
* Fixed unused variable warning
* Removed incorrect optimization in SubqueryStartExecutor
* Add Start/End subquery node skeleton
* Added a test query that triggers complex interna in the future and needs to proof that our work is side-effect free.
* Add template function to statically assert size of type
* Add Start/End subquery node skeleton
* Add Start/End subquery node creation to ExecutionNode
* Cleanup SubqueryEndNode
* Add test file
* Add isEqualTo to ExecutionNode
* Subquery nodes cleanup
* Update ExecutionNode tests
* Updates to testing code
* More updates
* Add optimizer rule
* Fix optimizer rule
* Fix optimizer rule (again)
* Add a public function to get plan from query
* Fix register planning
* Add test for splicing subquery nodes
* add static asserts for sizes of SubqueryStartNode and SubqueryEndNode
* Add comment about statically asserted size
* Fix isEqualTo virtual and override dance.
* Fix isEqualTo, remove static_assert_size
* Remove a TODO; the plan owns the ExecutionNodes
* Only add stealPlan to Query when testing
* Remove another static_assert_size
* Disabled subquery splice rule by default
* temporarily modified test
* Fixed windows compile
* Fixed unused variable warning
* Enable IPO (LTO) via CMake
* Use separate IPO_ENABLED variable
* Enabled IPO for more binaries
* Enabled IPO for arangobackup
* Suppress an MSVC warning (though it is not unjustified...)
* Fix static builds, broken due to Policy CMP0060 introduced in cmake 3.3
* Removed policies superseded by minimum cmake version
* Disable IPO with google tests due to a g++ bug
* Disable IPO with google tests only on AUTO
* Disable warning for correct line
* Begin de-inlining Aql
* de-inlining Aql: 2nd batch
* de-inlining Aql: 3rd batch
* de-inlining Aql: 4th batch
* Moved code out of ifdef
* Enabled IPO for additional libs
* Fixed some problems found with IPO enabled
- Fixed ODR violation in Pregel
- Removed unused code in ClusterMethods
- Avoid possible uninitialized variable usage
* Set IPO globally, except for 3rdParty libs
* De-inlined AstHelper again (was undone due to a previous merge conflict)
* Added missing .cpp file
* Fixed compilation with MSVC
* Removed superfluous includes from deinlined AQL header files
* Added includes for size_t
* Deleted outdated files
* De-inlined files that were undone during the merge
* Removed includes from files that were undone during merge
* Fixed merge conflicts
* Added first draft of ShadowRow Interface
* Refactored RegisterPlan and pulled it out of the ExecutionNode
* AqlItemBlock now has an additional hidden register to store subquery depth infromation. Right now no shadow rows are created, however thy could now make use of this situation
* Added API and test to insert new shadow rows into an OutputRow.
* Extrated test helper function
* Added API and tests to consume ShadowRows. Interface is there and compiles with templates, we might need to implement further underlying functions later on as we make progress on ShadowRows, it is only implemented in the minimal way (intentionally)
* Added a test for nested ShadowRows and adapted OutputRow accordingly.
* Added additional memory include, seems to be required under GCC not udner CLANG
* it actually helps to save fies before commiting them...
* Fixed serialization/Deserialization of AqlItemBlock to contain the hidden subquery register now
* Added a c++ test for AqlItemBlock. It just covers the basics thus far and needs to be improved.
* Fixed toVPack of AqlInputRow for subqueries. Also added serialization / deserialization tests for AqlItemRow
* Added a c++ test for inputAqlItem row serialization => AqlItemBlock deserialization
* Attempt to fix :windows: compile warning
* Added a serialization format to be backwards compatible to 3.5 whenever AQL item blocks need to be send over to remote nodes.
* Added more tests for serialization of shadow rows, and fixed a bug revealed by this
* Apply suggestions from code review
Thank you for review!
Co-Authored-By: Tobias Gödderz <tobias@arangodb.com>
* Review comments. Thanks for spotting
* Fixed hidden merge conflicts
* Attempt to explain windows on how one can actually cast numbers into other number types...
* Update arangod/Aql/AqlItemBlockSerializationFormat.h
Co-Authored-By: Tobias Gödderz <tobias@arangodb.com>
* Avoid overfetch in sorting gather executor
* Updated CHANGELOG
* Temporarily disabled sort-limit in cluster when fullCount is enabled, until we can fix SortingGather
* Added a cluster test for sort-limit
* Fixed non-maintainer compile
* Fixed jslint errors
* Disabled sort profiler tests until SortingGather is fixed
* Enable IPO (LTO) via CMake
* Use separate IPO_ENABLED variable
* Enabled IPO for more binaries
* Enabled IPO for arangobackup
* Suppress an MSVC warning (though it is not unjustified...)
* Fix static builds, broken due to Policy CMP0060 introduced in cmake 3.3
* Removed policies superseded by minimum cmake version
* Disable IPO with google tests due to a g++ bug
* Disable IPO with google tests only on AUTO
* Disable warning for correct line
* Enabled IPO for additional libs
* Fixed some problems found with IPO enabled
- Fixed ODR violation in Pregel
- Removed unused code in ClusterMethods
- Avoid possible uninitialized variable usage
* Set IPO globally, except for 3rdParty libs
* Added regression test for consecutive constrained sorts
* Bugfix: sort-limit rule skipped too many node types
* Added CHANGELOG entry
* Apply sort-limit rule before single document operations
* Modified testFollowerSelection test to a version that we can actually guarantee
* Fixed test improvement.
* Update tests/js/client/active-failover/basic.js
fixed type in message
* allow agency operations in active failover too
* Added regression test
* Allowed more calls in active failover for the health endpoint to work
* Updated CHANGELOG
* Added a skeleton framework for agency paths
* Added some basic tests
* Added missing header
* Move to shared_ptrs to parents
* Added a virtual base class
* Sprinkle some final specifiers
* Moved some code into class Path and simplified tests
* Added root() function
* Added assertions
* Added /arango/Supervision
* Replaced PathComponent by StaticComponent and added DynamicComponent
* Added /arango/Target
* Added /arango/Current
* Added /arango/Plan
* Added a TODO note
* Added the last missing top-level paths in /arango/
* Added aliases, cleaned up comment
* Fixed some specifiers
* s/typeof/decltype/
* Prepared a setup phase for QueryOptimization test. This is prerequisite to split up the test case in order to reduce compile time
* Splitted ireesearch query optimization test into mutliple test cases.
* Made usage of named variables for targets a little more consistent
* Bumped minimum cmake version
- removed policies superseded by minimum cmake version
- fixed static linking due to new policy CMP0060
* Fixed library suffixes for windows
* Extracted libs arango_mmfiles and _rocksdb from arangoserver
* Replaced target variables by constants
* Extracted arango_cluster_engine from arangoserver
* Extracted llhttp from arangoserver
* First successful split of arangoserver
* Moved enterprise files to enterprise
* Again only optionally include RestTestHandler and AcceptorUnixDomain
* Cleaned source files from other libraries
* Removed old commented sources
* Split off a small third library
* Fixed boost dependency for cluster engine
* Added some missing dependencies
* Added arango_geo dep, and -J on windows
* Began to split off an arango_graph lib
* Moved more files to arango_graph
* Do not set /J globally for ATL
* Moved more files to arango_graph
* Moved graph-RestHandlers to arango_graph
* Added arango_geo dependency to _mmfiles and _rocksdb
* Updated graph dependencies
* Split off arango_pregel
* Split off arango_aql
* Added missing boost_system dependency to pregel
* Split off arango_vocbase
* Cleanup
* Added missing boost_system dependency for arango_vocbase
* Split off arango_v8server
* Split off arango_utils
* Minor cleanup
* Split of arango_storage_engine
* Split off arango_indexes and arango_cache
* Fixed some dependencies
* Split off arango_replication
* Resolved two todos
* Split off arango_agency
* Reordered some statements
* Ordered dependency definitions alphabetically
* Cleaned some deps
* Break one cycle, comment on another
* Merge the remaining arangoserver_part[123] sources
* Moved some utils to vocbase to break cycles
* Added missing backtrace dependency to iresearch-s
* Added missing boost dependency
* Added dependency arango_indexes -> arango_geo
* Added deps to arango_cluster_engine, cleaned duplicate deps
* Broke remaining dependency cycles
* Actually, missed one cycle...
* Re-added include for Mac
* arango_cache needs SharedPRNG
* Added a stop to Network feature. There is a race condition on the garbage collection post
* Added cleanup for analyzer test and view test
* Update tests/js/client/shell/shell-analyzer-rest-api.js
Fixed usage of wrong command
* Fixed ViewExecutionNode retrieval with deleted documents present in view
* Ported solution from 3.4 branch
* Changed index store in collection from vector to set. To make reversable indexes always last to execute
* Fixed re-enter hung
* Index storage fix
* Made index order deterministic
* Fix Mac build
* Added tests for index reversal
* Fixed Mac build
* Code cleanup
* Some cleanup
* Removed some redundand copy constructor calls
* Applied review comments
* Applied review comments
* make index selection more deterministic
* serialize indexes used by traversal with their estimates
* serialize selectivity estimates for shortest path nodes too
* fix assertion that doesn't hold true in unit tests
* fix test
* Fixed analyzer properties equality check.
* Added re-normalization of stored analyzer properties
* Fixed analyzer name rules in rest and v8 handlers
* Fixed linux build
* Added tests for implicit system db name. Code cleanup.
* Analyzers access logic moved to separate function
* Consolidated _servers and _serverAdvertisedEndpoints, added rebootId, prepared change notifications
* Cleanup
* Added a RebootId type
* Began implementing RebootTracker (still WIP)
* Moved RebootId operators into the class
* Removed RebootId operator<< again
* Added tests, added CallbackGuard, removed/commented old RebootTracker code
* Fix: do not try to call unset callbacks
* Split one test, added another
* Added more tests
* Renamed tests, added more tests
* Fixed missing variable declarations
* Let MockServer appear to be started
* Reorded test, fixed naming
* Implemented callMeOnChange()
* Re-implemented RebootTracker (not yet working)
* Resolved a TODO, updated a test, added comments
* Call old callbacks immediately
* Fixed tests
* Use EXPECT_* instead of ASSERT_*
* Suppress a log message
* Resolved TODOs
* Reverted changes on reading ServersRegistered
* Update RebootTracker
* Introduce `rebootId` into ServerState for Cluster
* A server *boots* if it is started on a previously non-existing data
directory and hence does not have a UUID yet.
* A server *reboots* if it is started on a pre-existing data directory
We keep the rebootId in the cluster's agency under
Current/ServersKnown/$uuid/rebootId.
When rebooting (and subsequently re-joining a cluster), the server increments
its rebootId in Phase 2 of registration. This way it can be detected within the
cluster whether a server was restarted.
This information will later be used to handle cases where server restarts can
lead to problems, for example with transactions or in-progress queries.
* Move rebootId into Current/ServersKnown/
* Fixed typo
* Fixed log ids
* Add deletion of ServersKnown/UUID from agency
* Add deletion of Current/ServersKnown/UUID to removeServer
* Clean up readRebootIdFromAgency and add retry loop around it
* Bugfix
* Added nolint comments
* Fixed initialization order
* Fixed ClusterInfo-test
* Added log messages
* Revert "Fixed ClusterInfo-test"
This reverts commit d983596979.
* Disabled assertion for google tests
* Ignore windows compile warning
* Always call loadServers in loadCurrent
* Fix really subtle bug when not returning a value
* Introduce `rebootId` into ServerState for Cluster
* A server *boots* if it is started on a previously non-existing data
directory and hence does not have a UUID yet.
* A server *reboots* if it is started on a pre-existing data directory
We keep the rebootId in the cluster's agency under
Current/ServersKnown/$uuid/rebootId.
When rebooting (and subsequently re-joining a cluster), the server increments
its rebootId in Phase 2 of registration. This way it can be detected within the
cluster whether a server was restarted.
This information will later be used to handle cases where server restarts can
lead to problems, for example with transactions or in-progress queries.
* Move rebootId into Current/ServersKnown/
* Add deletion of ServersKnown/UUID from agency
* Add deletion of Current/ServersKnown/UUID to removeServer
* Clean up readRebootIdFromAgency and add retry loop around it
* Fixed compile error due to forbidden implicit cast
* Fixed compile error on windows
* Fixed compile error due to devel merge
* Removed dead comment
* Removed TODO note
* Extended comment
* Removed TODO note
* Fixed using an invalidated iterator
* Copy string only if necessary
* Fixed compile error
* First version of ResignLeadership Job.
* Port some performance optimizations from CleanOutServerJob.
* Draft of resigning leadership on shutdown.
* Moved code into Maintenance Feature. Fixed beginShutdown.
* Added tests for analyzer removal and get with wrong db context
* Added Link ddl tests
* Added cross-base access to analyzers tests
* Fixed v8 analyzer remove/get operation. Removed redundant sorting.
* Fixed link creation with analyzer from other database
* Added check for cross-use analyzer from system db
* Fixed tests
* Fix typo in test
* Fixed comments
* Fixed indentation
* Link validation moved to LinkHelper
* Code cleanup
* Applied review comments
* Applied review comments
* Small reformatting
* added assert
* port of feature-3.4/mv-gzip-export to devel branch
* add explicit namespaces so gcc 6.3.0 would successfully compile
* add conditional cleanup of ENCRYPTION file from another branch
* use _lseek() for Windows build to avoid deprecated warning.
* change from ifdef for lseek variants to TRI_LSEEK.
* force Windows lseek to return Linux expected type.
* make TTL indexes behave like other indexes on creation
if a TTL index is already present on a collection, the previous behavior
was to make subsequent calls to `ensureIndex` fail unconditionally with
the error "there can only be one ttl index per collection".
now, we are comparing the attributes of the to-be-created index with the
attributes of the existing TTL index and make it only fail when the
attributes differ. if the attributes are identical, the `ensureIndex`
call succeeds and returns the existing index.
* Bug fix 3.5/min replication factor (#9524)
* Cherry-pick minReplicationFactor
* Bug fix/failover with min replication factor (#9486)
* Improve collection time of IResearchQueryOptimizationTest
* Added a minReplicationFactor field in Collections. It is not possible to modify it yet and noone cares for it
* Added some assertion son minReplicationFactor
* Transaction API will now reject writes as soon as minimal replication factor is NOT fulfilled
* added minReplicationFactor to the user interface, preparation for the collection api changes
* added minReplicationFactor to VocBaseCollection, RestReplicationHandler, RestCollectionHandler, ClusterMethods, ClusterInfo and ClusterCollectionCreationInfo
* added minReplicationFactor usage to tests
* TODO TEMOPORARY COMMIT FOR TESTING PLEASE REVERT ME
* minReplicationFactor now able to change via collection properties route
* fixed wrongly assert
* added minReplicationFactor to the graph management ui
* added minReplicationFactor to the gharial api
* Fixed off-by-one error in minReplicationFactor. We actually enforced one more.
* adjusted description of minReplicationFactor
* FollowerInfo Refactoring
* added gharial api graph creation tests with minimal replication factor
* proper cleanup of shell collection tests, removed lots of duplicate code, preparation for some new tests
* added collection create tests using invalid/valid names, replicationFactor and minReplicationFactor
* Debug logging
* MORE Debug logging
* Included replication fast lane
* Use correct minreplicationfactor
* modified debug logging
* Fixed compileissues
* MORE Debug logging
* MORE Debug logging
* MORE Debug logging
* MORE Debug logging
* MORE Debug logging
* MORE Debug logging
* MORE Debug logging
* Revert "MORE Debug logging"
This reverts commit dab5af28c0.
* Revert "MORE Debug logging"
This reverts commit 6134b664bd.
* Revert "MORE Debug logging"
This reverts commit 80160bdf3b.
* Revert "MORE Debug logging"
This reverts commit 06aabcdfe1.
* Removed debug output
* Added replication fast lane. Also refactored the commands as i cannot take it any more...
* Put some requests of RocksDBReplication onto CATCHUP Lane.
* Put some requests of MMFilesReplication onto CATCHUP Lane.
* Adjusted Fast and MED lane usage in Supervised scheduler
* Added changelog entry
* Added new features entry
* A new leader will now keep old followers in case of failover
* Update arangod/Cluster/ClusterCollectionCreationInfo.cpp
Co-Authored-By: Tobias Gödderz <tobias@arangodb.com>
* Fixed JSLINT
* Unified lane handling of replication handlers
* Sorry forgotten in last commit
* replaced strings with static strings
* more use of static strings
* optimized min repl description in the ui
* decr initial loop variable
* clean up of the createWithId test
* more use of static strings
* Update js/apps/system/_admin/aardvark/APP/frontend/js/views/collectionsView.js
Co-Authored-By: Tobias Gödderz <tobias@arangodb.com>
* Added some comments on condition, renamed variable as suggested in review
* Added check for min replicationFactor to be non-zero
* Added assertion
* Added function to modify min and max replication factor in one go
* added missing semicolon
* rm log devel
* Added a second information to follower info that can keep track of followers that have been in sync before a failover has taken place
* Maintenance reports previous version now to follower info. instead of lying by itself. The Follower Info now gets a failover save mode to report insync followers
* check replFactor against nr dbservers
* Add lie reporting in CURRENT
* Reverted most of my recent commits about Failover situation. The intended plan simply does not work out
* move replication checks from logical collection to rest collection handler
* added more replication tests
* Include assert only if we are not in gtest
* jslint
* set min repl factor to zero if satellite collection
* check replication attributes in v8 collection
* Initial commit, old plan, does not yet work
* fixed ires tests
* Included FailoverCandidates key. Not fully implemented
* fixed wrong assert
* unified in sync follower reporting
* fixed compiler errors
* Cleanup locking, and fixed potential deadlocks
* Comments about locking order in FollowerInfo.
* properly check uint
* Keep old leader as potential failover candidate
* Transaction methods now use followerInfo to check if the leader can write, this might have the sideeffect that 'failoverCandidates' are updated
* Let agency check failoverCandidates if possible
* Initialize member variables
* Use unified follower reporting in DBServerAgencySync
* Removed obsolete variable, collecting it somewhere else
* repl factor attr check
* Reimplemented previous followers, second attempt now. PhaseOne and PhaseTwo can now synchronize on current.
* Fixed assertion, forgot an off-by-one
* adjusted test to be more preciese now
* Fixed failove candidates list
* Disable write on dropping too many followers
* Allow to run updateFailoerCandidates multiple times with same leader.
* Final fixes, resilience tests now green, crossing fingers for jenkins
* Fixed race on atomics comparison
* Fixed invalid number type
* added nullptr handling
* added nullptr handling
* Removed invalid assert
* Make takeover of leadership an atomic operation
* Update tests/js/common/shell/shell-cluster-collection.js
Co-Authored-By: Tobias Gödderz <tobias@arangodb.com>
* Review fixes
* Fixed creation code to use takeoverLeadership
* Update arangod/Cluster/FollowerInfo.h
Co-Authored-By: Tobias Gödderz <tobias@arangodb.com>
* Applied review fixes
* There is no timeout
* Moved AQL + Pregel to INTERNAL_AQL lane, which is medium priority, to avoid deadlocks with Sync replication
* More review fixes
* Use difference if you want to compare two vectors...
* Use std::string ...
* Now check if we are in recovery mode
* Added documentation for minReplicationFactor
* Added readme update as well in documenation
* Removed merge conflict leftovers 0o, i should not trust the IDE
* Update js/apps/system/_admin/aardvark/APP/frontend/js/views/collectionsView.js
Co-Authored-By: Jan <jsteemann@users.noreply.github.com>
* Update js/apps/system/_admin/aardvark/APP/frontend/js/views/collectionsView.js
Co-Authored-By: Jan <jsteemann@users.noreply.github.com>
* Update Documentation/Books/Manual/Architecture/Replication/README.md
Co-Authored-By: Jan <jsteemann@users.noreply.github.com>
* Update CHANGELOG
Co-Authored-By: Jan <jsteemann@users.noreply.github.com>
* Update Documentation/Books/Manual/DataModeling/Collections/DatabaseMethods.md
Co-Authored-By: Jan <jsteemann@users.noreply.github.com>
* Update Documentation/Books/Manual/ReleaseNotes/NewFeatures35.md
Co-Authored-By: Jan <jsteemann@users.noreply.github.com>
* Update Documentation/DocuBlocks/Rest/Collections/1_structs.md
Co-Authored-By: Jan <jsteemann@users.noreply.github.com>
* Update js/apps/system/_admin/aardvark/APP/frontend/js/views/graphManagementView.js
Co-Authored-By: Jan <jsteemann@users.noreply.github.com>
* Update js/apps/system/_admin/aardvark/APP/frontend/js/views/graphManagementView.js
Co-Authored-By: Jan <jsteemann@users.noreply.github.com>
* Update Documentation/DocuBlocks/Rest/Graph/1_structs.md
Co-Authored-By: Jan <jsteemann@users.noreply.github.com>
* Apply suggestions from code review
Co-Authored-By: Jan <jsteemann@users.noreply.github.com>
* Adepted review requests, thanks for finding!
* Removed unnecessary const
* Apply suggestions from code review
Co-Authored-By: Jan <jsteemann@users.noreply.github.com>
* Moved initilization of variable more downwards
* Apply lock before notify_all()
* Remove documentation except DocuBlocks, covered by PR in docs repo
* Remove accidental indent
* Removed leftover merge conflict in documentation block