* don't run compact() on a collection after a truncate() was done in the same transaction
running compact() in the same transaction will only increase the data size on disk due to RocksDB not being able to remove
any documents physically due to the snapshot we take at transaction start.
Decoupling the truncate transaction from the compact operation allows finishing the truncate transaction first, so we can
get rid of the snapshot. Running compact afterwards is then free to physically remove all the data.
As a nice side effect this change will also speed up the truncation of larger collections, because the compact will run
faster.
This change also exposes db.<collection>.compact() in the arangosh, in order to manually run a compaction on the data
range of a collection should it be needed for maintenance.
* fix documentation anchors
* issue 511.9.1: track DataSource instance instead of only its name in QueryCache
* address use of invalid function
* fix expected test result
* address merge issue
* Forward-port of bug-fix-3.4/mmfiles-replication-get-followers-under-lock
Fix resign order
Fixed a typo
Get followers later, add TODOs
Added a callback parameter to collection insert methods
Get followers under the lock if necessary
Extracted the replication of inserts into a separate method
Move shortcut into replicate method
Added callbacks for remove, replace and update
Added missing overrides
Extracted replication code from modifyLocal and removeLocal
Update followers under lock also during replace, update, remove
Fix changes from the last commit for update/replace
Update comments, add asserts
Remove changes for document-level locks that will be done in another PR
Unify replication
Adapt log messages to the devel ones
Move common methods from its descendants to TransactionCollection, fix Mock on the way
More IResearch test / mock fixes
Relax asserts for nested transactions
Reformat
Fix non-babies remove and modify replication
* Remove some changes introduced by the merge
* Fixed compile errors introduced by merge
* integrate ArangoSearch into GatherNode/GatherBlock logic
* fix inconsistency after merge
* add serialization/deserealization logic for IResearchViewNode sorting
* fix optimizer rule order
* fix copy/past typo
* fix tests
* ensure `GatherNode` is properly set up for ArangoSearch views
* adjust optimizer rule order