* late document materialization for view draft
* MaterializeType
* asserts and removed std::function
* std::map -> std::array
* Common search ast nodes code to a separate file
* Unit tests for create and clone a node
* js tests
* tmp unfinished
* Replace variables for late materialization
* Move removing
* Removed wrong clears
* Fixed variable replacement
* removed old tests (for separate materialization)
* check if late materialization arangosearch rule is enabled
* js test. added space
* moved a function to anonym namespace
* Subquery assert
* Review improvements
* Review improvements 2
* View node state to a separate var (microoptimization)
* Fixed index assert
* alignment
* C++ unit tests
* Index late materialization draft
* Index late materialization. Refactoring.
* Index late materialization. Expansion draft.
* HashIndexMock
* Refactoring.
* Hash index mock expansion fixes
* Fix compare of attributes.
* Hash index mock. Last expansion support.
* Hash index mock. Take value for array from document, not equal key.
* Optimizations.
* Query tests
* lateMaterialized improvements
* velocypack fixes and tests for index node
* Fix after merge.
* Const expression in a condition test
* Clone tests
* More tests
* Fix for materialized view (nullptr var)
* Fixed index vars registers count planning
* javascript tests
* Fixed cluster tests
* Cluster support
* MaterializeExecutor and MaterializerExecutorInfos refactoring
* More tests
* js tests rocksdb only
* js test. Removed print()
* js testd added skiplist
* C++ unit tests for invalid json
* js test var i
* js tests == -> ===
* iFix js tests ===
* jslint ;
* int unsigned int fix
* double deletion fix
* refactoring
* Added const for collection source
* override final, added materialize namespace, fixed femove in hash index mock
* Removed expansion support. Index can contain null value in case of several object with same fields
* isNumber<>
* Optimization for single collection case
* Renaming
* refactoring
* Unit tests. Added checking documents
* !sliceIt.valid() instead of !(!=)
* Fix primary index (object instead of array)
* Edge collection test
* Windows compilation fix
* IndexExecutor getCallback optimization
* ADB_UNLIKELY
* explainer.js
* removed unsused variable in js test
* fix explainer.js
* do not use several indexes with js test
* Removed several indexes implementation
* space
* fix explainer.js
* fix explainer.js
* code alignment
* 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
* spawn an arangosh that checks cluster nodes are responsive
* attempting to kill 0 may end up bad for us, prohibit it
* don't trip over this optional stuff.
* fix killing of spectator
* only write one line per minute
* fix function name
* print sHitlist of tests, add resource usage
* fix lint
* start refactoring result processing into its own library
* /proc reading only works on linux
* new result processing library
* clean up test loading flow, remove unused blacklist implementation
* measure SUT start/stop + test time
* lint
* more non-test variables
* improve test runner naming
* finish gathering statistics about start/run/stop
* use internal stats code for external processes too
* fix status in sample testcase
* tell that procdump is gone - it seems this happenes in reality without coredumps being written
* refactor test result analyzing, add utility to work with analyzers of json dumps from CI systems
* fix testcase error handling
* also run watcher for agency
* lint
* fix default options for test added default options
* if arguments occur multiple times, update value to an array
* start implementing some test analyzers
* fix color
* write json report unconditional
* add analyzer that searches for long setup/teardown tests
* enable thread dump; log error if we fail to acquire the threads
* disable procdump for the agency
* output error if we fail to get process stats
* fix json invocation
* add debug logging
* only add buildType if that directory actually exists
* trap sleepers
* trap sleepers
* trap sleepers
* trap sleepers
* trap sleepers
* disable thread counting on the wintendo
* disable thread counting on the wintendo
* more measurements
* more measurements
* one more place
* one more place
* remove debugging code
* Update js/client/modules/@arangodb/process-utils.js
Co-Authored-By: Dan Larkin-York <danielhlarkin@users.noreply.github.com>
* Update js/client/modules/@arangodb/process-utils.js
Co-Authored-By: Dan Larkin-York <danielhlarkin@users.noreply.github.com>
* Apply suggestions from code review
Co-Authored-By: Dan Larkin-York <danielhlarkin@users.noreply.github.com>
* rename as sugested by @dan
* undo debug changes
* lint, make cluster health monitor optional per default
* fix spawning of active failover SUT, fix cluster health monitor shutdown
* use std::find_if (as @dan sugested), fix log ids
* fix scope of before-time
* 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
* 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.
* Added startup error for bad temporary directory setting.
If the temporary directory (--temp.path) setting is identical to the database
directory (`--database.directory`) this can eventually lead to data loss, as
temporary files may be created inside the temporary directory, causing overwrites of
existing database files/directories with the same names.
Additionally the temporary directory may be cleaned at some point, and this would lead
to an unintended cleanup of the database files/directories as well.
Now, if the database directory and temporary directory are set to the same path, there
will be a startup warning about potential data loss (though in ArangoDB 3.4 allowing to
continue the startup - in 3.5 and higher we will abort the startup).
* 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
* fixed ires tests
* fixed wrong assert
* properly check uint
* repl factor attr check
* adjusted test to be more preciese now
* Fixed race on atomics comparison
* Fixed invalid number type
* Update tests/js/common/shell/shell-cluster-collection.js
Co-Authored-By: Tobias Gödderz <tobias@arangodb.com>
* Review fixes
* More review fixes
* migrate mochaGrep into --testCase parametrizing
* fix filter forwarding for spawned arangoshs - add mocha version
* sometimes we have the string undefined to ignore
* Add failing tests
* Add tests for Buffer#slice
* Add tests for Buffer#new
* Skip failing tests
* Implement changes
* Unskip failing tests
This reverts commit 9f8a34bd74e152b7b3158fea79b12e6da8343001.
* Fix implementation
* Remove meaningless test
This test only succeeded because of a broken implementation of the Buffer constructor. It doesn't really do anything useful.
* Add note to CHANGELOG
* Unbreak aardvark when --foxx.api false
The easiest way to disable the aardvark foxx routes is to just skip the
import and mount altogether. The previous approach caused the service to
throw an error because the module doesn't actually export anything.
There's no need to prevent the export if we just don't import the module
to begin with.
* Add an error code for service api disabled
* Throw an actual error when accessing Foxx API routes
* Throw an error when using legacy Foxx API
There's no easy way to use a catch-all here so disable them one by one. No new routes will be added to this API and it'll go away in 4.0 so there's no risk of forgetting to add the throw-check in new routes.
* Render subnav without delay
The subnav doesn't need the perm check results but we need the subnav to exist so we can populate it in other parts of the app. This fixes the subnav not showing up when reloading certain views (e.g. install service via upload).
* Hide ONLY the Foxx store when it is disabled
We still want to allow installing and upgrading/replacing services. We just don't want to show the store.
* Hide Foxx services in frontend if Foxx API is disabled
* Build aardvark
* fixed typo in disable check, fixed tests