All Versions
266
Latest Version
Avg Release Cycle
22 days
Latest Release
1722 days ago

Changelog History
Page 4

  • v3.3.13 Changes

    July 26, 2018
    • 🛠 fixed internal issue #2567: the Web UI was showing the possibility to move a shard from a follower to the current leader

    • 🛠 fixed issue #5977: Unexpected execution plan when subquery contains COLLECT

    • 🛠 Bugfix: The AQL syntax variants UPDATE/REPLACE k WITH d now correctly take _rev from k instead of d (when ignoreRevs is false) and ignore d._rev.

    • put an upper bound on the number of documents to be scanned when using db.<collection>.any() in the RocksDB storage engine

    previous versions of ArangoDB did a scan of a random amount of documents in the collection, up to the total number of documents available. this produced a random selection with a good quality, but needed to scan half the number of documents in the collection on average.

    The new version will only scan up to 500 documents, so it produces a less random result, but will be a lot faster especially for large collections.

    The implementation of any() for the MMFiles engine remains unchanged. The MMFiles engine will pick a random document from the entire range of the in-memory primary index without performing scans.

    • 👻 return an empty result set instead of an "out of memory" exception when querying the geo index with invalid (out of range) coordinates

    • ➕ added load balancer support and user-restriction to cursor API.

    If a cursor is accessed on a different coordinator than where it was created, the requests will be forwarded to the correct coordinator. If a cursor is accessed by a different user than the one who created it, the request will be denied.

    • keep failed follower in followers list in Plan.

    This increases the changes of a failed follower getting back into sync if the follower comes back after a short time. In this case the follower can try to get in sync again, which normally takes less time than seeding a completely new follower.

    • 🛠 fix assertion failure and undefined behavior in Unix domain socket connections, introduced by 3.3.12

    • ➕ added configuration option --rocksdb.sync-interval

    This option specifies interval (in milliseconds) that ArangoDB will use to automatically synchronize data in RocksDB's write-ahead log (WAL) files to disk. Automatic syncs will only be performed for not-yet synchronized data, and only for operations that have been executed without the waitForSync attribute.

    Automatic synchronization is performed by a background thread. The default sync interval is 0, meaning the automatic background syncing is turned off. Background syncing in 3.3 is opt-in, whereas in ArangoDB 3.4 the default sync interval will be 100 milliseconds.

    Note: this option is not supported on Windows platforms. Setting the sync interval to a value greater 0 will produce a startup warning.

    • 🛠 fixed graph creation sometimes failing with 'edge collection already used in edge def' when the edge definition contained multiple vertex collections, despite the edge definitions being identical

    • 🔧 inception could get caught in a trap, where agent configuration version and timeout multiplier lead to incapacitated agency

    • 🛠 fixed issue #5827: Batch request handling incompatible with .NET's default ContentType format

    • 🛠 fixed agency's log compaction for internal issue #2249

    • inspector collects additionally disk data size and storage engine statistics

  • v3.3.12 Changes

    July 12, 2018
    • issue #5854: RocksDB engine would frequently request a new DelayToken. This caused excessive write delay on the next Put() call. Alternate approach taken.

    • 🛠 fixed graph creation under some circumstances failing with 'edge collection already used in edge def' despite the edge definitions being identical

    • 🛠 fixed issue #5727: Edge document with user provided key is inserted as many times as the number of shards, violating the primary index

    • 🛠 fixed internal issue #2658: AQL modification queries did not allow _rev checking. There is now a new option ignoreRevs which can be set to false in order to force AQL modification queries to match revision ids before doing any modifications

    • 🛠 fixed issue #5679: Replication applier restrictions will crash synchronisation after initial sync

    • 🛠 fixed potential issue in RETURN DISTINCT CollectBlock implementation that led to the block producing an empty result

    • 🔄 changed communication tasks to use boost strands instead of locks, this fixes a race condition with parallel VST communication over SSL

    • 🛠 fixed agency restart from compaction without data

    • 🛠 fixed for agent coming back to agency with changed endpoint and total data loss

    • ✅ more patient agency tests to allow for ASAN tests to successfully finish

  • v3.3.11 Changes

    June 26, 2018
    • ⬆️ upgraded arangosync version to 0.5.3

    • ⬆️ upgraded arangodb starter version to 0.12.0

    • 🛠 fixed internal issue #2559: "unexpected document key" error when custom shard keys are used and the "allowUserKeys" key generator option is set to false

    • 🛠 fixed AQL DOCUMENT lookup function for documents for sharded collections with more than a single shard and using a custom shard key (i.e. some shard key attribute other than _key). The previous implementation of DOCUMENT restricted to lookup to a single shard in all cases, though this restriction was invalid. That lead to DOCUMENT not finding documents in cases the wrong shard was contacted. The fixed implementation in 3.3.11 will reach out to all shards to find the document, meaning it will produce the correct result, but will cause more cluster-internal traffic. This increase in traffic may be high if the number of shards is also high, because each invocation of DOCUMENT will have to contact all shards. There will be no performance difference for non-sharded collections or collections that are sharded by _key or that only have a single shard.

    • 💻 reimplemented replication view in web UI

    • 🛠 fixed internal issue #2256: ui, document id not showing up when deleting a document

    • 🛠 fixed internal issue #2163: wrong labels within foxx validation of service input parameters

    • 🛠 fixed internal issue #2160: fixed misplaced tooltips in indices view

    • ➕ added new arangoinspect client tool, to help users and customers easily collect information of any ArangoDB server setup, and facilitate troubleshooting for the ArangoDB Support Team

  • v3.3.10 Changes

    June 04, 2018
    • ⚡️ make optimizer rule "remove-filter-covered-by-index" not stop after removing a sub-condition from a FILTER statement, but pass the optimized FILTER statement again into the optimizer rule for further optimizations. This allows optimizing away some more FILTER conditions than before.

    • 👍 allow accessing /_admin/status URL on followers too in active failover setup

    • 🛠 fix cluster COLLECT optimization for attributes that were in "sorted" variant of COLLECT and that were provided by a sorted index on the collected attribute

    • apply fulltext index optimization rule for multiple fulltext searches in the same query

    this fixes https://stackoverflow.com/questions/50496274/two-fulltext-searches-on-arangodb-cluster-v8-is-involved

    • validate _from and _to values of edges on updates consistently

    • 🛠 fixed issue #5400: Unexpected AQL Result

    • 🛠 fixed issue #5429: Frequent 'updated local foxx repository' messages

    • 🛠 fixed issue #5252: Empty result if FULLTEXT() is used together with LIMIT offset

    • 🛠 fixed issue #5035: fixed a vulnerability issue within the web ui's index view

    • 🔧 inception was ignoring leader's configuration

  • v3.3.9 Changes

    May 17, 2018
    • ➕ added /_admin/repair/distributeShardsLike that repairs collections with distributeShardsLike where the shards aren't actually distributed like in the prototype collection, as could happen due to internal issue #1770

    • 🛠 fixed Foxx queues bug when queues are created in a request handler with an ArangoDB authentication header

    • ⬆️ upgraded arangosync version to 0.5.1

    • ⬆️ upgraded arangodb starter version to 0.11.3

    • 🛠 fix cluster upgrading issue introduced in 3.3.8

    the issue made arangod crash when starting a DB server with option --database.auto-upgrade true

    • 🛠 fix C++ implementation of AQL ZIP function to return each distinct attribute name only once. The previous implementation added non-unique attribute names multiple times, which led to follow-up issues. Now if an attribute name occurs multiple times in the input list of attribute names, it will only be incorporated once into the result object, with the value that corresponds to the first occurrence. This fix also changes the V8 implementation of the ZIP function, which now will always return the first value for non-unique attribute names and not the last occurring value.

    • ⬆️ self heal during a Foxx service install, upgrade or replace no longer breaks the respective operation

    • make /_api/index, /_api/database and /_api/user REST handlers use the scheduler's internal queue, so they do not run in an I/O handling thread

    • 🛠 fixed issue #4919: C++ implementation of LIKE function now matches the old and correct behavior of the JavaScript implementation.

    • ➕ added REST API endpoint /_admin/server/availability for monitoring purposes

    • 💻 UI: fixed an unreasonable event bug within the modal view engine

    • fixed issue #3811: gharial api is now checking existence of _from and _to vertices during edge creation

    • 🛠 fixed internal issue #2149: number of documents in the UI is not adjusted after moving them

    • 🛠 fixed internal issue #2150: UI - loading a saved query does not update the list of bind parameters

    • 🛠 fixed internal issue #2147 - fixed database filter in UI

    • 🛠 fixed issue #4934: Wrong used GeoIndex depending on FILTER order

    • ➕ added query and aql.literal helpers to @arangodb module.

    • ✂ remove post-sort from GatherNode in cluster AQL queries that do use indexes for filtering but that do not require a sorted result

    This optimization can speed up gathering data from multiple shards, because it allows to remove a merge sort of the individual shards' results.

    • ⚡️ extend the already existing "reduce-extraction-to-projection" AQL optimizer rule for RocksDB to provide projections of up to 5 document attributes. The previous implementation only supported a projection for a single document attribute. The new implementation will extract up to 5 document attributes from a document while scanning a collection via an EnumerateCollectionNode. Additionally the new version of the optimizer rule can also produce projections when scanning an index via an IndexNode. The optimization is benefial especially for huge documents because it will copy out only the projected attributes from the document instead of copying the entire document data from the storage engine.

    When applied, the explainer will show the projected attributes in a projections remark for an EnumerateCollectionNode or IndexNode. The optimization is limited to the RocksDB storage engine.

    • ➕ added index-only optimization for AQL queries that can satisfy the retrieval of all required document attributes directly from an index.

    This optimization will be triggered for the RocksDB engine if an index is used that covers all required attributes of the document used later on in the query. If applied, it will save retrieving the actual document data (which would require an extra lookup in RocksDB), but will instead build the document data solely from the index values found. It will only be applied when using up to 5 attributes from the document, and only if the rest of the document data is not used later on in the query.

    The optimization is currently available for the RocksDB engine for the index types primary, edge, hash, skiplist and persistent.

    If the optimization is applied, it will show up as "index only" in an AQL query's execution plan for an IndexNode.

    • ➕ added scan-only optimization for AQL queries that iterate over collections or indexes and that do not need to return the actual document values.

    Not fetching the document values from the storage engine will provide a considerable speedup when using the RocksDB engine, but may also help a bit in case of the MMFiles engine. The optimization will only be applied when full-scanning or index-scanning a collection without refering to any of its documents later on, and, for an IndexNode, if all filter conditions for the documents of the collection are covered by the index.

    If the optimization is applied, it will show up as "scan only" in an AQL query's execution plan for an EnumerateCollectionNode or an IndexNode.

    • ⚡️ extend existing "collect-in-cluster" optimizer rule to run grouping, counting and deduplication on the DB servers in several cases, so that the coordinator will only need to sum up the potentially smaller results from the individual shards.

    The following types of COLLECT queries are covered now:

    • RETURN DISTINCT expr
    • COLLECT WITH COUNT INTO ...
    • COLLECT var1 = expr1, ..., varn = exprn (WITH COUNT INTO ...), without INTO or KEEP
    • COLLECT var1 = expr1, ..., varn = exprn AGGREGATE ..., without INTO or KEEP, for aggregate functions COUNT/LENGTH, SUM, MIN and MAX.

      • honor specified COLLECT method in AQL COLLECT options

    for example, when the user explicitly asks for the COLLECT method to be sorted, the optimizer will now not produce an alternative version of the plan using the hash method.

    additionally, if the user explcitly asks for the COLLECT method to be hash, the optimizer will now change the existing plan to use the hash method if possible instead of just creating an alternative plan.

    COLLECT ... OPTIONS { method: 'sorted' } => always use sorted method COLLECT ... OPTIONS { method: 'hash' } => use hash if this is technically possible COLLECT ... (no options) => create a plan using sorted, and another plan using hash method

    • ➕ added bulk document lookups for MMFiles engine, which will improve the performance of document lookups from an inside an index in case the index lookup produces many documents
  • v3.3.8 Changes

    April 24, 2018
    • ⚡️ included version of ArangoDB Starter (arangodb binary) updated to v0.10.11, see Starter changelog

    • ➕ added arangod startup option --dump-options to print all configuration parameters as a JSON object

    • 🛠 fixed: (Enterprise Edition only) If you restore a SmartGraph where the collections are still existing and are supposed to be dropped on restore we ended up in duplicate name error. This is now gone and the SmartGraph is correctly restored.

    • 🛠 fix lookups by _id in SmartGraph edge collections

    • 👌 improve startup resilience in case there are datafile errors (MMFiles)

    also allow repairing broken VERSION files automatically on startup by specifying the option --database.ignore-datafile-errors true

    • 🛠 fix issue #4582: UI query editor now supports usage of empty string as bind parameter value

    • 🛠 fixed internal issue #2148: Number of documents found by filter is misleading in web UI

    • ➕ added startup option --database.required-directory-state

    using this option it is possible to require the database directory to be in a specific state on startup. the options for this value are:

    • non-existing: database directory must not exist
    • existing: database directory must exist
    • empty: database directory must exist but be empty
    • populated: database directory must exist and contain specific files already
    • any: any state allowed

      • ⚠ field "$schema" in Foxx manifest.json files no longer produce warnings
      • ➕ added @arangodb/locals module to expose the Foxx service context as an alternative to using module.context directly.
      • db._executeTransaction now accepts collection objects as collections.
      • 🚧 supervision can be put into maintenance mode
  • v3.3.7 Changes

    April 11, 2018
    • ➕ added hidden option --query.registry-ttl to control the lifetime of cluster AQL query parts

    • 🛠 fixed internal issue #2237: AQL queries on collections with replicationFactor: "satellite" crashed arangod in single server mode

    • 🛠 fixed restore of SatelliteCollections: replicationFactor was set to 1 during restore

    • 🛠 fixed dump and restore of SmartGraphs: a) The dump will not include the hidden shadow collections anymore, they were dumped accidentially and only contain duplicated data. b) Restore will now ignore hidden shadow collections as all data is contained in the smart-edge collection. You can manually include these collections from an old dump (3.3.5 or earlier) by using --force. c) Restore of a smart-graph will now create smart collections properly instead of getting into TIMEOUT_IN_CLUSTER_OPERATION

    • 🛠 fixed issue in AQL query optimizer rule "restrict-to-single-shard", which may have sent documents to a wrong shard in AQL INSERT queries that specified the value for _key using an expression (and not a constant value) Important: if you were affected by this bug in v3.3.5 it is required that you recreate your dataset in v3.3.6 (i.e. dumping and restoring) instead of doing a simple binary upgrade

    • ➕ added /_admin/status HTTP API for debugging purposes

    • ➕ added ArangoShell helper function for packaging all information about an AQL query so it can be run and analyzed elsewhere:

    query = "FOR doc IN mycollection FILTER doc.value > 42 RETURN doc"; require("@arangodb/aql/explainer").debugDump("/tmp/query-debug-info", query);

    Entitled users can send the generated file to the ArangoDB support to facilitate reproduction and debugging.

    • ➕ added hidden option --server.ask-jwt-secret. This is an internal option for debugging and should not be exposed to end-users.

    • 🛠 fix for internal issue #2215. supervision will now wait for agent to fully prepare before adding 10 second grace period after leadership change

    • 🛠 fixed internal issue #2215's FailedLeader timeout bug

  • v3.3.5 Changes

    March 28, 2018
    • 🛠 fixed issue #4934: Wrong used GeoIndex depending on FILTER order

    • 🏗 make build id appear in startup log message alongside with other version info

    • 👉 make AQL data modification operations that are sent to all shards and that are supposed to return values (i.e. RETURN OLD or RETURN NEW) not return fake empty result rows if the document to be updated/replaced/removed was not present on the target shard

    • ➕ added AQL optimizer rule restrict-to-single-shard

    This rule will kick in if a collection operation (index lookup or data modification operation) will only affect a single shard, and the operation can be restricted to the single shard and is not applied for all shards. This optimization can be applied for queries that access a collection only once in the query, and that do not use traversals, shortest path queries and that do not access collection data dynamically using the DOCUMENT, FULLTEXT, NEAR or WITHIN AQL functions. Additionally, the optimizer will only pull off this optimization if can safely determine the values of all the collection's shard keys from the query, and when the shard keys are covered by a single index (this is always true if the shard key is the default _key)

    • display missing attributes of GatherNodes in AQL explain output

    • ⚡️ make AQL optimizer rule undistribute-remove-after-enum-coll fire in a few more cases in which it is possible

    • slightly improve index selection for the RocksDB engine when there are multiple competing indexes with the same attribute prefixes, but different amount of attributes covered. In this case, the more specialized index will be preferred now

    • 🛠 fix issue #4924: removeFollower now prefers to remove the last follower(s)

    • ➕ added "collect-in-cluster" optimizer rule to have COLLECT WITH COUNT queries without grouping being executed on the DB servers and the coordinator only summing up the counts from the individual shards

    • 🛠 fixed issue #4900: Nested FOR query uses index but ignores other filters

    • properly exit v8::Context in one place where it was missing before

    • ➕ added hidden option --cluster.index-create-timeout for controlling the default value of the index creation timeout in cluster under normal circumstances, this option does not need to be adjusted

    • 0️⃣ increase default timeout for index creation in cluster to 3600s

    • 🛠 fixed issue #4843: Query-Result has more Docs than the Collection itself

    • 🛠 fixed the behavior of ClusterInfo when waiting for current to catch up with plan in create collection.

    • 🛠 fixed issue #4827: COLLECT on edge _to field doesn't group distinct values as expected (MMFiles)

  • v3.3.4 Changes

    March 01, 2018
    • 🛠 fix AQL fullCount result value in some cluster cases when it was off a bit

    • 🛠 fix issue #4651: Simple query taking forever until a request timeout error

    • 🛠 fix issue #4657: fixed incomplete content type header

    • 💻 Vastly improved the Foxx Store UI

    • 🛠 fix issue #4677: AQL WITH with bind parameters results in "access after data-modification" for two independent UPSERTs

    • ✂ remove unused startup option --ldap.permissions-attribute-name

    • 🛠 fix issue #4457: create /var/tmp/arangod with correct user in supervisor mode

    • ✂ remove long disfunctional admin/long_echo handler

    • 🛠 fixed Foxx API:

      • PUT /_api/foxx/service: Respect force flag
      • PATCH /_api/foxx/service: Check whether a service under given mount exists
    • 🚚 internal issue #1726: supervision failed to remove multiple servers from health monitoring at once.

    • more information from inception, why agent is activated

    • 🛠 fixed a bug where supervision tried to deal with shards of virtual collections

    • 🛠 fix internal issue #1770: collection creation using distributeShardsLike yields errors and did not distribute shards correctly in the following cases:

      1. If numberOfShards * replicationFactor % nrDBServers != 0 (shards * replication is not divisible by DBServers).
      2. If there was failover / move shard case on the leading collection and creating the follower collection afterwards.
    • 🛠 fix timeout issues in replication client expiration

    • ➕ added missing edge filter to neighbors-only traversals in case a filter condition was moved into the traverser and the traversal was executed in breadth-first mode and was returning each visited vertex exactly once, and there was a filter on the edges of the path and the resulting vertices and edges were not used later, the edge filter was not applied

    • 🛠 fixed issue #4160: Run arangod with "--database.auto-upgrade" option always crash silently without error log

    • 🛠 fix internal issue #1848: AQL optimizer was trying to resolve attribute accesses to attributes of constant object values at query compile time, but only did so far the very first attribute in each object

    this fixes https://stackoverflow.com/questions/48648737/beginner-bug-in-for-loops-from-objects

    • 🛠 fix inconvenience: If we want to start server with a non-existing --javascript.app-path it will now be created (if possible)

    • 🛠 fixed: REST API POST _api/foxx now returns HTTP code 201 on success, as documented. returned 200 before.

    • 🛠 fixed: REST API PATCH _api/foxx/dependencies now updates the existing dependencies instead of replacing them.

    • 🛠 fixed: Foxx upload of single javascript file. You now can upload via http-url pointing to a javascript file.

    • 🛠 fixed issue #4395: If your foxx app includes an APP folder it got accidently removed by selfhealing this is not the case anymore.

    • 🛠 fixed internal issue #1969 - command apt-get purge/remove arangodb3e was failing

  • v3.3.3 Changes

    January 16, 2018
    • 🛠 fix issue #4272: VERSION file keeps disappearing

    • 🛠 fix internal issue #81: quotation marks disappeared when switching table/json editor in the query editor ui

    • ➕ added option --rocksdb.throttle to control whether write-throttling is enabled Write-throttling is turned on by default, to reduce chances of compactions getting too far behind and blocking incoming writes.

    • 🛠 fixed issue #4308: Crash when getter for error.name throws an error (on Windows)

    • 📜 UI: fixed a query editor caching and parsing issue

    • 🛠 Fixed internal issue #1683: fixes an UI issue where a collection name gets wrongly cached within the documents overview of a collection.

    • 🛠 Fixed an issue with the index estimates in RocksDB in the case a transaction is aborted. Former the index estimates were modified if the transaction commited or not. Now they will only be modified if the transaction commited successfully.

    • ⚡️ UI: optimized login view for very small screen sizes

    • Truncate in RocksDB will now do intermediate commits every 10.000 documents if truncate fails or the server crashes during this operation all deletes that have been commited so far are persisted.

    • 0️⃣ make the default value of --rocksdb.block-cache-shard-bits use the RocksDB default value. This will mostly mean the default number block cache shard bits is lower than before, allowing each shard to store more data and cause less evictions from block cache

    • issue #4222: Permission error preventing AQL query import / export on webui

    • ⚡️ UI: optimized error messages for invalid query bind parameter

    • ⬆️ UI: upgraded swagger ui to version 3.9.0

    • ⏪ issue #3504: added option --force-same-database for arangorestore

    with this option set to true, it is possible to make any arangorestore attempt fail if the specified target database does not match the database name specified in the source dump's "dump.json" file. it can thus be used to prevent restoring data into the "wrong" database

    The option is set to false by default to ensure backwards-compatibility

    • 0️⃣ make the default value of --rocksdb.block-cache-shard-bits use the RocksDB default value. This will mostly mean the default number block cache shard bits is lower than before, allowing each shard to store more data and cause less evictions from block cache

    • 🛠 fixed issue #4255: AQL SORT consuming too much memory

    • 🛠 fixed incorrect persistence of RAFT vote and term