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

Changelog History
Page 1

  • v3.5.0-rc.7 Changes

    August 01, 2019
    • โฌ†๏ธ Upgraded arangodb starter version to 0.14.12.
  • v3.5.0-rc.6 Changes

    July 29, 2019
    • ๐Ÿ›  Fixed issue #9459: Optimization rule remove-collect-variables does not KEEP all necessary data.

    • โž• Added gzip and encryption options to arangoimport and arangoexport.

    • โž• Added missing REST API route GET /_api/transaction for retrieving the list of currently ongoing transactions.

    • ๐Ÿ›  Fixed issue #9558: RTRIM not working as expected.

    • โž• 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).

    • ๐Ÿ‘‰ 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.

  • v3.5.0-rc.5 Changes

    July 22, 2019
    • MinReplicationFactor: Collections can now be created with a minimal replication factor (minReplicationFactor), which defaults to 1. If minReplicationFactor > 1 a collection will go into "read-only" mode as soon as it has less then minReplicationFactor many insync followers. With this mechanism users can avoid to have collections diverge too much in case of failure scenarios. minReplicationFactor can have the values: 1 <= minReplicationFactor <= replicationFactor. Having minReplicationFactor == 1 ArangoDB behaves the same way as in any previous version.

    • ๐Ÿ›  Fixed a query abort error with SmartJoins if both collections were restricted to a single shard using the "restrict-to-single-shard" optimizer rule.

    • ๐Ÿ›  Fixed a performance regression of COLLECT WITH COUNT INTO.

    • ๐Ÿ›  Fixed some races in cluster collection creation, which allowed collections with the same name to be created in parallel under some rare conditions.

    • arangoimport would not stop, much less report, communications errors. Add CSV reporting of line numbers that are impacted during such errors

    • ๐Ÿšง Prevent rare cases of duplicate DDL actions being executed by Maintenance.

    • Coordinator code was reporting rocksdb error codes, but not the associated detail message. Corrected.

    • โฑ The keep alive timeout specified via --http.keep-alive-timeout is now being honored

    • Replication requests on Document API are now on higher priority then client-triggered requests. This should help to keep in sync replication up and running even if the server is overloaded.

    • ๐Ÿ›  Bugfix: Save distinct WAL ticks for multiple replication clients from the same server. Also, when a follower is added for synchronous replication, the WAL tick held by the client is freed immediately, rather than waiting for a timeout. The corresponding APIs get a new parameter syncerId, which, if given, supersedes serverId. This affects the routes /_api/wal/tail, /_api/replication/batch, /_api/replication/logger-follow and the internal route /_api/replication/addFollower. The new field syncerId is also added to the response of /_api/replication/logger-state.

    • Disallow indexing the _id attribute even as a sub-attribute. Previous versions of ArangoDB did not allow creating indexes on the _id attribute, but didn't check if an index was created on the _id attribute of a sub-attribute, e.g. referredTo._id or data[*]._id. Such indexes could be created with previous versions of ArangoDB, but they were non-functional. From now on, such indexes cannot be created anymore, and any attempts to create them will fail.

    • โž• Added option --replication.max-parallel-tailing-invocations to limit the maximum number of concurrent WAL tailing invocations.

    The option can be used to limit the usage of the WAL tailing APIs in order to control server load.

    • ๐Ÿ›  Fixed agency bug with election lock step.

    • ๐Ÿ›  Fixed some error reporting and logging in Maintenance.

    • ๐Ÿ›  Fixed an error condition in which an ex-leader for a short still believed to be the leader and wrongly reported to Current.

  • v3.5.0-rc.4 Changes

    June 15, 2019
    • Speed up collection creation process in cluster, if not all agency callbacks are delivered successfully.

    • ๐ŸŽ Increased performance of document inserts, by reducing the number of checks in unique / primary indexes.

    • ๐Ÿ›  Fixed a callback function in the web UI where the variable this was out of scope.

    • ๐Ÿ›  Fixed editing a user within the web UI if the user added a gravatar profile picture.

    • ๐Ÿ‘ Allow pregel to select the shard key via shardKeyAttribute in pregel start parameters.

    • โž• Added --server.jwt-secret-keyfile to arangosh.

    • Fixed internal issue #4040: gharial api is now checking existence of _from and _to vertices during edge replacements and edge updates.

    • ๐Ÿ›  Fixed Buffer.alloc method.

    • Buffer is now iterable and accepts ArrayBuffer values as input.

    • ๐Ÿ›  Fix timeout-response in case of simultaneous index create/drop in cluster.

    • Enabled dropping an index by its name.

    • ๐Ÿ›  Fixed lookup of index from collection by fully qualified name, e.g. db.testCollection.index('testCollection/primary').

    • ๐Ÿ›  Fixed agency bug with TTL object writes discovered in 3.4.6.

  • v3.5.0-rc.3 Changes

    May 31, 2019
    • ๐Ÿ›  Fixed issue #9106: Sparse Skiplist Index on multiple fields not used for FILTER + SORT query.

    Allow AQL query optimizer to use sparse indexes in more cases, specifically when indexes could not be used for filtering and there finally was an EnumerateCollectionNode in the query execution plan followed by a SortNode. In this case, sparse indexes were not considered for enumeration in sorted order, because it was unclear to the optimizer if the result set would contain null values or not.

    • โฌ†๏ธ Upgraded RocksDB to version 6.2.

    • โšก๏ธ Updated ArangoDB Starter to 0.14.4.

    • ๐Ÿ‘ท The system collection '_jobs' will from now on be created with non-unique, non-sparse indexes.

    • ๐Ÿ›  Bugfix for SmartGraph traversals with uniqueVertices: path, which could sometimes lead to erroneous traversal results.

    • Pregel algorithms can be run with the option "useMemoryMaps: true" to be able to run algorithms on data that is bigger than the available RAM.

    • ๐Ÿ›  Fixed a race in TTL thread deactivation/shutdown.

    • ๐Ÿ›  Fixed internal issue #3919: The web UI is now using precompiled ejs templates.

    • ๐Ÿ›  Fixed agency issue in abort of cleanOutServer job.

  • v3.5.0-rc.2 Changes

    May 23, 2019
    • ๐Ÿ›  Fixed "collection not found" exception during setup of 3-way SmartJoin queries in the cluster.

    • ๐Ÿ›  Fixed an edge case of handling null values in the AQL function MIN for input sequences that started with a null value. In this case, null was always returned as the minimum value even though other non-null values may have followed, and MIN was supposed to return null only if there are no input values or all input values are null.

    • ๐Ÿ›  Fixed a crash when posting an async request to the server using the "x-arango-async" request header and the server's request queue was full.

    • โž• Added error code 1240 "incomplete read" for RocksDB-based reads which cannot retrieve documents due to the RocksDB block cache being size-restricted (with size limit enforced) and uncompressed data blocks not fitting into the block cache.

    The error can only occur for collection or index scans with the RocksDB storage engine when the RocksDB block cache is used and set to a very small size, plus its maximum size is enforced by setting the --rocksdb.enforce-block-cache-size-limit option to true.

    Previously these incomplete reads could have been ignored silently, making collection or index scans return less documents than there were actually present.

    • ๐Ÿ›  Fixed internal issue #3918: added optional second parameter "withId" to AQL function PREGEL_RESULT.

    This parameter defaults to false. When set to true the results of the Pregel computation run will also contain the _id attribute for each vertex and not just _key. This allows distinguishing vertices from different vertex collections.

    • ๐Ÿ’ป Made Swagger UI work with HTTPS-enabled ArangoDBs too.

    • ๐Ÿ‘Œ Improved scheduler performance for single-connection cases.

    • โœ… Internally switched unit tests framework from catch to gtest.

    • ๐ŸŒ Disabled selection of index types "hash" and "skiplist" in the web interface when using the RocksDB engine. The index types "hash", "skiplist" and "persistent" are just aliases of each other with the RocksDB engine, so there is no need to offer all of them. After initially only offering "hash" indexes, we decided to only offer indexes of type "persistent", as it is technically the most appropriate description.

    • ๐Ÿ›  Fixed client id lookup table in state.

  • v3.5.0-rc.1 Changes

    May 14, 2019
    • โœ‚ Removed bug during start up with a single agent, that leads to dbserver crash.

    • ๐Ÿ›  Fixed issue #7011: description when replacing a foxx application was misleading.

    • ๐Ÿ›  Fixed issue #8841: Graph Viewer dropped ability to edit an edge after rerendering.

    • โฌ†๏ธ Upgraded arangodb starter version to 0.14.3.

    • ArangoQueryStreamCursor.prototype.id needs to be a string, v8 32 bit integers can't hold the full data.

    • โฌ†๏ธ Upgraded Swagger UI to 3.22.1.

    • โž• Added --compress-output flag to arangodump. Activates gzip compression for collection data. Metadata files, such as .structure.json and .view.json, do not get compressed. No option is needed for arangorestore to restore .data.json.gz files.

    • โž• Added options to make server more secure:

      • --server.harden: denies access to certain REST APIs that return server internals
      • --foxx.api: set to false disables Foxx management API
      • --foxx.store: set to false disables Foxx UI
      • --javascript.allow-port-testing: enables internal.testPort()
      • --javascript.allow-external-process-control: enables external process control
      • --javascript.harden: disables getPid() and logLevel()
      • --javascript.startup-options-whitelist: control startup options visible in JavaScript
      • --javascript.environment-variables-whitelist: control environment variables visible in JavaScript
      • --javascript.endpoints-whitelist: control accessible endpoints in JavaScript
      • --javascript.files-whitelist: control file access in JavaScript

    Note: There is a detailed description of all options.

    This call was done to check for available updates, but it could have contributed to small startup delays in case outgoing connections were blocked.

    • โœ‚ Removed support for undocumented HTTP header x-arango-v8-context, which allowed controlling in which particular V8 context number a JavaScript-based action was executed. This header was only used internally for testing.

    • db._query now handles additional arguments correctly when passing an AQL query object instead of a query string and separate bindVars.

    • โž• Added req.auth property to Foxx.

    • โž• Added collection.documentId method to derive document id from key.

    • Indexes created with the 'inBackground', will not hold an exclusive collection lock for the entire index creation period (rocksdb only).

    • ๐Ÿ›  Fixed internal issue #536: ArangoSearch may crash server during term lookup.

    • ๐Ÿ›  Fixed internal issue #2946: Create graph autocomplete was not working under certain circumstances.

    • โž• Added filter option to Foxx HTTP API for running tests.

    • โž• Added function db.<collection>.getResponsibleShard() to find out which is the responsible shard for a given document. Note that this function is only available in a cluster coordinator.

    • โšก๏ธ Updated bundled version of jemalloc memory allocator to 5.2.0.

    • Don't create per-database system collection _frontend automatically. This collection is only needed by the web UI, and it can be created lazily when needed.

    • โž• Added logging option --log.time-format to configure the time format used in log output. The possible values for this option are:

      • timestamp: unix timestamps, in seconds
      • timestamp-millis: unix timestamps, in seconds, with millisecond precision
      • timestamp-micros: unix timestamps, in seconds, with microsecond precision
      • uptime: seconds since server start
      • uptime-millis: seconds since server start, with millisecond precision
      • uptime-micros: seconds since server start, with microsecond precision
      • utc-datestring: UTC-based date and time in format YYYY-MM-DDTHH:MM:SSZ
      • utc-datestring-millis: UTC-based date and time in format YYYY-MM-DDTHH:MM:SS.FFFZ
      • local-datestring: local date and time in format YYYY-MM-DDTHH:MM:SS

    This change deprecates the existing options --log.use-microtime and --log.use-localtime, because the functionality provided by these options is covered by --log.time-format too.

    • โž• Added "SmartJoins" to the ArangoDB Enterprise Edition that allows running cluster joins between two certain sharded collections with performance close to that of a local join operation.

    • ๐Ÿ›  Fixed internal issue #3815: fixed the removal of connected edges when removing a vertex graph node in a SmartGraph environment.

    • โš  Show startup warning in case kernel setting vm.overcommit_memory is set to a value of 2 and the jemalloc memory allocator is in use. This combination does not play well together.

    • Added AQL function DECODE_REV for decomposing _rev values into their individual parts.

    • โž• Added AQL functions CRC32 and FNV64 for hashing data.

    • ๐Ÿ“‡ Renamed attribute key openssl-version in server/client tool version details output to openssl-version-compile-time.

    This change affects the output produced when starting one of the ArangoDB executables with the --version command. It also changes the attribute name in the detailed response of the /_api/version REST API.

    • ๐Ÿ›  Fixed the sorting of the databases in the database selection dropdown in the web ui. The sort order differed based on whether authentication was enabled or disabled. (Internal issue #2276)

    • ๐Ÿ‘Œ Improved the shards view in the web ui if there is only one shard to display. (Internal issue #3546)

    • Restricted the allowed query names for user defined custom queries within the web ui. (Internal issue #3789)

    • โฌ†๏ธ Upgraded bundled RocksDB version to 6.0.

    • โž• Added "--log.ids" option to arangod.

    The default value for this option is true. Setting the option to false will prevent embedding unique log ids into all log messages generated by ArangoDB C++ code. The unique ids allow for easy access to the location in the source code from which a message originates. This should help customers to configure custom monitoring/alerting based on specific log id occurrences and will also be helpful for support and development in identifying problems.

    • ๐Ÿ›  Fixed wrong equals behavior on arrays with ArangoSearch. (Internal issue #8294)

    • ๐Ÿ›  Fixed ArangoSearch range query sometimes not working correctly with numeric values. (Internal issue #528)

    • ๐Ÿ”„ Changed type of the startup option --rocksdb.recycle-log-file-num from numeric to boolean, as this is also the type the options has in the RocksDB library.

    • Renamed hidden startup option --rocksdb.delayed_write_rate to the more consistent --rocksdb.delayed-write-rate. When the old option name is used, the arangod startup will be aborted with a descriptive error message.

    • ๐Ÿ”ง If not explicitly configured, make agency nodes start removing their unused WAL files a few seconds after the completed server startup already. This is because on agency nodes, unused WAL files do not need to be retained for potential replication clients to read them.

    • โž• Added option --all-databases to arangodump and arangorestore.

    When set to true, this makes arangodump dump all available databases the current user has access to. The option --all-databases cannot be used in combination with the option --server.database.

    When --all-databases is used, arangodump will create a subdirectory with the data of each dumped database. Databases will be dumped one after the other. However, inside each database, the collections of the database can be dumped in parallel using multiple threads.

    For arangorestore, this makes it restore all databases from inside the subdirectories of the specified dump directory. Using the option for arangorestore only makes sense for dumps created with arangodump and the --all-databases option. As for arangodump, arangorestore cannot be invoked with the options --all-databases and --server.database at the same time. Additionally, the option --force-same-database cannot be used together with --all-databases.

    If the to-be-restored databases do not exist on the target server, then restoring data into them will fail unless the option --create-database is also specified. Please note that in this case a database user must be used that has access to the _system database, in order to create the databases on restore.

    • โž• Added index hints feature to AQL.

    • โž• Added "name" property for indices.

    If a name is not specified on index creation, one will be auto-generated.

    • Under normal circumstances there should be no need to connect to a database server in a cluster with one of the client tools, and it is likely that any user operations carried out there with one of the client tools may cause trouble.

    The client tools arangosh, arangodump and arangorestore will now emit a warning when connecting with them to a database server node in a cluster.

    • ๐Ÿ›  Fixed compaction behavior of followers.

    • โž• Added "random" masking to mask any data type, added wildcard masking.

    • โž• Added option --console.history to arangosh for controlling whether the command-line history should be loaded from and persisted in a file.

    The default value for this option is true. Setting it to false will make arangosh not load any command-line history from the history file, and not store the current session's history when the shell is exited. The command-line history will then only be available in the current shell session.

    • Display the server role when connecting arangosh against a server (e.g. SINGLE, COORDINATOR).

    • ๐Ÿ›  Fixed overflow in Windows NowNanos in RocksDB.

    • ๐Ÿ‘ Allowed MoveShard from leader to a follower, thus swapping the two.

    • ๐Ÿ›  Supervision fix: SatelliteCollections, various fixes.

    • โž• Added coordinator route for agency dump.

    • ๐Ÿ”’ Supervision fix: abort MoveShard job does not leave a lock behind.

    • ๐Ÿšš Supervision fix: abort MoveShard (leader) job moves forwards when point of no return has been reached.

    • ๐Ÿ‘ท Supervision fix: abort CleanOutServer job does not leave server in ToBeCleanedServers.

    • ๐Ÿšš Supervision fix: move shard with data stopped to early due to wrong usage of compare function.

    • Supervision fix: AddFollower only counts good followers, fixing a situation after a FailedLeader job could not find a new working follower.

    • Supervision fix: FailedLeader now also considers temporarily BAD servers as replacement followers and does not block servers which currently receive a new shard.

    • Supervision fix: Servers in ToBeCleanedServers are no longer considered as replacement servers.

    • ๐Ÿšง Maintenance fix: added precondition of unchanged Plan in phase2.

    • โž• Added "PRUNE " to AQL Traversals. This allows to early abort searching of unnecessary branches within a traversal. PRUNE is only allowed in the Traversal statement and only between the graph definition and the options of the traversal. e.g.: FOR v, e, p IN 1..3 OUTBOUND @source GRAPH "myGraph" PRUNE v.value == "bar" OPTIONS {} /* These options remain optional */ RETURN v for more details refer to the documentation chapter.

    • ๐Ÿ›  Fixed a display issue when editing a graph within the web UI.

    • ๐Ÿ›  Fixed some escaping issues within the web UI.

    • Follow up to fix JWT authentication in arangosh (Internal issue #7530): also fixed reconnect.

    • ๐Ÿ‘ท Now also syncing _jobs and _queues collections in active failover mode.

    • โฌ†๏ธ Upgraded lodash to 4.17.11 because of CVE-2018-16487.

    • --query.registry-ttl is now honored in single-server mode, and cursor TTLs are now honored on DBServers in cluster mode.

    • โž• Added "TTL" index type, for optional auto-expiration of documents.

    • ๐ŸŒ Disabled selection of index types "persistent" and "skiplist" in the web interface when using the RocksDB engine. The index types "hash", "skiplist" and "persistent" are just aliases of each other with the RocksDB engine, so there is no need to offer all of them.

    • ๐Ÿ›  Fixed JS AQL query objects with empty query strings not being recognized as AQL queries.

    • โšก๏ธ Updated JavaScript dependencies, including semver major updates to joi, mocha and eslint. The eslint config modules were incompatible with the existing coding style, so the old rules were inlined and the config dependencies removed.

    Note that joi removed Joi.date().format() in v10.0.0. You can bundle your own version of joi if you need to rely on version-dependent features.

    • accepts: 1.3.4 -> 1.3.5
    • ansi_up: 2.0.2 -> 4.0.3
    • content-disposition: 0.5.2 -> 0.5.3
    • dedent: 0.6.0 -> 0.7.0
    • error-stack-parser: 1.3.6 -> 2.0.2
    • eslint: 2.13.1 -> 5.16.0
    • eslint-config-semistandard: 6.0.2 -> removed
    • eslint-config-standard: 5.3.1 -> removed
    • eslint-plugin-promise: 1.3.2 -> removed
    • eslint-plugin-standard: 1.3.2 -> removed
    • highlight.js: 9.12.0 -> 9.15.6
    • http-errors: 1.6.2 -> 1.7.2
    • iconv-lite: 0.4.19 -> 0.4.24
    • joi: 9.2.0 -> 14.3.1
    • joi-to-json-schema: 2.3.0 -> 4.0.1
    • js-yaml: 3.10.0 -> 3.13.1
    • marked: 0.3.9 -> 0.6.2
    • mime-types: 2.1.12 -> 2.1.22
    • mocha: 2.5.3 -> 6.1.3
    • qs: 6.5.1 -> 6.7.0
    • semver: 5.4.1 -> 6.0.0
    • statuses: 1.4.0 -> 1.5.0
    • timezone: 1.0.13 -> 1.0.22
    • type-is: 1.6.15 -> 1.6.16
    • underscore: 1.8.3 -> 1.9.1

      • โšก๏ธ Updated V8 to 7.1.302.28.

    New V8 behavior introduced herein:

    • ES2016 changed the default timezone of date strings to be conditional on whether a time part is included. The semantics were a compromise approach based on web compatibility feedback from V8, but until now, we have been shipping ES5.1 default timezone semantics. This patch implements the new semantics, following ChakraCore and SpiderMonkey (though JSC implements V8's previous semantics).

      • ๐Ÿ›  Fixed JS AQL query objects with empty query strings not being recognized as AQL queries.
      • Report run-time openssl version (for dynamically linked executables).
      • โž• Added greeting warning about maintainer mode.
      • ๐Ÿ‘Œ Improved insertion time into non-unique secondary indexes with the RocksDB engine.
      • ๐Ÿ›  Fixed possible segfault when using COLLECT with a LIMIT and an offset.
      • ๐Ÿ›  Fixed COLLECT forgetting top-level variables after 1000 rows.
      • โž• Added sort-limit optimization in AQL; Improved memory usage and execution time for some queries.
      • โฌ†๏ธ Upgraded to OpenSSL 1.1.0j.
      • โž• Added configurable masking of dumped data via arangodump tool to obfuscate exported sensible data.
      • ๐Ÿ›  Fixed arangoimp script for MacOSX CLI Bundle.
      • โž• Added "peakMemoryUsage" in query results figures, showing the peak memory usage of the executed query. In a cluster, the value the peak memory usage of all shards, but it is not summed up across shards.
      • ๐Ÿ›  Fixed an issue where a crashed coordinator can lead to some Foxx queue jobs erroneously either left hanging or being restarted.
      • ๐Ÿ›  Fixed bind values of null are not replaced by empty string anymore, when toggling between json and table view in the web-ui. (Interal issue #7900)
      • ๐Ÿ›  Fixed regression on ISO8601 string compatibility in AQL. (Internal issue #2786)

    millisecond parts of AQL date values were limited to up to 3 digits. Now the length of the millisecond part is unrestricted, but the millisecond precision is still limited to up to 3 digits.

    • โšก๏ธ The RocksDB primary index can now be used by the optimizer to optimize queries that use _key or _id for sorting or for range queries.

    • 0๏ธโƒฃ The web UI will now by default show the documents of a collection lexicographically sorted when sorting documents by their _key values.

    Previous versions of ArangoDB tried to interpret _key values as numeric values if possible and sorted by these. That previous sort strategy never used an index and could have caused unnecessary overhead. The new version will now use an index for sorting for the RocksDB engine, but may change the order in which documents are shown in the web UI (e.g. now a _key value of "10" will be shown before a _key value of "9").

    • ๐Ÿ›  Fixed known issue #445: ArangoSearch ignores _id attribute even if includeAllFields is set to true.

    • โฌ†๏ธ Upgraded bundled boost library to version 1.69.0.

    • โฌ†๏ธ Upgraded bundled curl library to version 7.63.

    • ๐Ÿ‘‰ Used base64url to encode and decode JWT parts.

    • โž• Added --server.jwt-secret-keyfile option.

    • Sped up data-modification operations in exclusive transactions in the RocksDB storage engine.

    • An AQL query that uses the edge index only and returns the opposite side of the edge can now be executed in a more optimized way, e.g.

      FOR edge IN edgeCollection FILTER edge._from == "v/1" RETURN edge._to

    is fully covered by RocksDB edge index. For MMFiles this rule does not apply.

    • โช Reverted accidental change to error handling in geo index.

    In previous versions, if non-valid geo coordinates were contained in the indexed field of a document, the document was simply ignored an not indexed. In 3.4.0, this was accidentally changed to generate an error, which caused the upgrade procedure to break in some cases.

    • ๐Ÿ›  Fixed TypeError being thrown instead of validation errors when Foxx manifest validation fails.

    • ๐Ÿ‘Œ Improved confirmation dialog when clicking the Truncate button in the Web UI. (Internal issue #2786)

    • Made --help-all now also show all hidden program options.

    Previously hidden program options were only returned when invoking arangod or a client tool with the cryptic --help-. option. Now --help-all simply retuns them as well.

    The program options JSON description returned by --dump-options was also improved as follows:

    • the new boolean attribute "dynamic" indicates whether the option has a dynamic default value, i.e. a value that depends on the target host capabilities or configuration

    • the new boolean attribute "requiresValue" indicates whether a boolean option requires a value of "true" or "false" when specified. If "requiresValue" is false, then the option can be specified without a boolean value following it, and the option will still be set to true, e.g. --server.authentication is identical to --server.authentication true.

    • the new "category" attribute will contain a value of "command" for command-like options, such as --version, --dump-options, --dump-dependencies etc., and "option" for all others.

      • ๐Ÿ›  Fixed issue #7586: a running query within the user interface was not shown if the active view was Running Queries or Slow Query History.
      • ๐Ÿ›  Fixed issue #7743: Query processing discrepancy between Rocks and MMFiles databases.

    This change enforces the invalidation of variables in AQL queries after usage of a COLLECT statement as documented. The documentation for variable invalidation claims that

      The COLLECT statement will eliminate all local variables in the current scope.
      After COLLECT only the variables introduced by COLLECT itself are available.
    

    However, the described behavior was not enforced when a COLLECT was preceded by a FOR loop that was itself preceded by a COLLECT. In the following query the final RETURN statement accesses variable key1 though the variable should have been invalidated by the COLLECT directly before it:

      `FOR x1 IN 1..2
        COLLECT key1 = x1
        FOR x2 IN 1..2
          COLLECT key2 = x2
          RETURN [key2, key1]`
    

    In previous releases, this query was parsed ok, but the contents of variable key1 in the final RETURN statement were undefined.

    This change is about making queries as the above fail with a parse error, as an unknown variable key1 is accessed here, avoiding the undefined behavior. This is also in line with what the documentation states about variable invalidation.

    • ๐Ÿ›  Fixed issue #7763: Collect after update does not execute updates.

    • ๐Ÿ›  Fixed issue #7749: AQL query result changed for COLLECT used on empty data/array.

    • ๐Ÿ›  Fixed issue #7757: Using multiple filters on nested objects produces wrong results.

    • ๐Ÿ›  Fixed a rare thread local dead lock situation in replication: If a follower tries to get in sync in the last steps it requires a lock on the leader. If the follower cancels the lock before the leader has succeeded with locking we can end up with one thread being deadlocked.

    • ๐Ÿ‘ Allowed usage of floating point values in AQL without leading zeros, e.g. .1234. Previous versions of ArangoDB required a leading zero in front of the decimal separator, i.e 0.1234.

    • Foxx req.makeAbsolute now will return meaningful values when ArangoDB is using a unix socket endpoint. URLs generated when using a unix socket follow the format http://unix:: used by other JS tooling.

    • โšก๏ธ Updated joi library (Web UI), improved foxx mount path validation.

    • Do not create _routing collection for new installations/new databases, as it is not needed anymore. Redirects to the web interface's login screen, which were previously handled by entries in the _routing collection are now handled from the responsible REST action handler directly.

    Existing _routing collections will not be touched as they may contain other entries as well, and will continue to work.

    • Do not create _modules collection for new databases/installations.

    _modules is only needed for custom modules, and in case a custom module is defined via defineModule, the _modules collection will be created lazily automatically.

    Existing modules in existing _modules collections will remain functional even after this change

    • Disabled in-memory cache for edge and traversal data on agency nodes, as it is not needed there.

    • โœ‚ Removed bundled Valgrind headers, removed JavaScript variable valgrind from the internal module.

    • โฌ†๏ธ Upgraded JEMalloc version to 5.1.0.

    • ๐Ÿ‘‰ Use -std=c++14 for ArangoDB compilation.

    • In case of resigned leader, set isReady=false in clusterInventory.

    • ๐Ÿ”€ Abort RemoveFollower job if not enough in-sync followers or leader failure.

    • ๐Ÿ›  Fixed shrinkCluster for satelliteCollections.

    • ๐Ÿ›  Fixed crash in agency supervision when leadership is lost.

    • Leader's timestamps in append entries protocol.

    • ๐Ÿ‘ท Sped up agency supervision in case of many jobs.

    • ๐Ÿ›  Fixed log spam in agency supervision when leader resigned.

    • Made AddFollower less aggressive.

    • ๐ŸŽ Several agency performance improvements, mostly avoiding copying.

    • ๐Ÿšง Priority queue for maintenance jobs.

    • ๐Ÿ‘ท Do not wait for replication after each job execution in Supervision.

    • โž• Added support for configuring custom Analyzers via JavaScript and REST.

  • v3.4.7 Changes

    July 02, 2019
    • โšก๏ธ updated arangosync to 0.6.4

    • ๐Ÿ› bug-fix for a very rare race condition on cluster collection creation process. It can only occur in the following situation: 1) DBServer sucessfully creates all shards for collections, and reports it back 2) DBServer dies 3) Agency recognized death and reorganizes shards 4) Coordinator receives (1) but not (3) and decided everything was good 5) => Coordinator reverts (3) only on this collection 6) Coordinator receives (3) now The bugfix disallows (5) if (3) is run in Agency.

    • fixed internal issue #4040: gharial api is now checking existence of _from and _to vertices during edge replacements and edge updates

    • ๐Ÿ›  fix timeout-response in case of simultaneous index create/drop in cluster

    • ๐Ÿ›  Fixed editing a user within the web UI if the user added a gravatar profile picture

    • ๐Ÿ›  fixed internal issue #4172: on agent servers the RocksDB WAL files in the archive directory were retained due to an error. Now they are removed, eventually

    • ๐Ÿ›  fix error reporting in arangorestore. previously, when the server returned an HTTP 404 error, arangorestore unconditionally translated this into a "collection not found" error, which may have masked an actually different server-side error. Instead, make arangorestore return the server's actual error message as is.

    • ๐Ÿ‘ allow pregel to select the shard key via shardKeyAttribute in pregel start parameters

    • Speed up collection creation process in cluster, if not all agency callbacks are delivered successfully.

    • ๐Ÿ›  Fixed parsing of ArangoDB config files with inlined comments. Previous versions didn't handle line comments properly if they were appended to an otherwise valid option value.

    For example, the comment in the line

      max-total-wal-size = 1024000 # 1M
    

    was not ignored and made part of the value. In the end, the value was interpreted as if

      max-total-wal-size = 10240001000000
    

    was specified. This version fixes the handling of comments in the config files so that they behave as intended.

    • ๐Ÿ›  Fixed AQL query tracing for traversals, this lead to wrong "calls" count in query profiles

    • Pregel algorithms can be run with the option "useMemoryMaps: true" to be able to run algorithms on data that is bigger than the available RAM.

    • ๐Ÿ›  Bugfix for SmartGraph traversals with uniqueVertices: path, which could sometimes lead to erroneous traversal results

    • ๐Ÿ‘ท The system-collection '_jobs' will from now on use non-unique, non-sparse indexes.

    • ๐Ÿ›  fixed internal issue #3919: The web UI is now using precompiled ejs templates.

    • properly create VERSION files for any newly created databases again, as it has been the case in 3.3 and before. If no VERSION files are created, this may cause problems on upgrade to 3.5. The 3.5 branch was also modified to handle this problem gracefully.

    • ๐Ÿ›  fixed "collection not found" exception during setup of 3-way SmartJoin queries in the cluster

    • ๐Ÿ›  fixed an edge case of handling null values in the AQL function MIN for input sequences that started with a null value. In this case, null was always returned as the minimum value even though other non-null values may have followed, and MIN was supposed to return null only if there are no input values or all input values are null.

    • ๐Ÿ›  fix client id lookup table in agency

    • ๐Ÿ›  Fix agency's handling of object assignments with TTL

    • โฌ‡๏ธ reduce resident memory usage when creating non-unique indexes with the RocksDB storage engine

    • ๐Ÿ›  Fix agency election bug.

  • v3.4.6 Changes

    May 21, 2019
    • โšก๏ธ updated ArangoDB Starter to 0.14.4

    • ๐Ÿ›  fixed internal issue #3912: improved the performance of graph creation with multiple relations. They do now create multiple collections within a single round-trip in the agency.

    • ๐Ÿ›  fixed a crash when posting an async request to the server using the "x-arango-async" request header and the server's request queue was full

    • โž• added error code 1240 "incomplete read" for RocksDB-based reads which cannot retrieve documents due to the RocksDB block cache being size-restricted (with size limit enforced) and uncompressed data blocks not fitting into the block cache

    The error can only occur for collection or index scans with the RocksDB storage engine when the RocksDB block cache is used and set to a very small size, plus its maximum size is enforced by setting the --rocksdb.enforce-block-cache-size-limit option to true.

    Previously these incomplete reads could have been ignored silently, making collection or index scans return less documents than there were actually present.

    • ๐Ÿ›  fixed internal issue #3918: added optional second parameter "withId" to AQL function PREGEL_RESULT

    this parameter defaults to false. When set to true the results of the Pregel computation run will also contain the _id attribute for each vertex and not just _key. This allows distinguishing vertices from different vertex collections.

    • ๐Ÿ›  fixed issue #7011: description when replacing a foxx application was misleading

    • ๐Ÿ›  fixed issue #8841: Graph Viewer dropped ability to edit an edge after rerendering.

    • โฌ†๏ธ upgraded arangodb starter version to 0.14.3

    • ๐Ÿ›  fix removal of sort order for sorted results that were passed into a RETURN DISTINCT in an AQL query running on a collection with more than a single shard. In this case, the results from the individual shards were sorted, but the overall result was not sorted according to the sort criterion.

    • โœ‚ removed bug during start up with a single agent, that leads to dbserver crash.

    • ๐Ÿ›  fix the creation of debug packages (in the web interface) for queries that involve SmartGraphs and/or multiple edge collections from a traversal

    • โž• add --compress-output flag to arangodump. Activates gzip compression for collection data. Metadata files, such as .structure.json and .view.json, do not get compressed. No option is needed for arangorestore to restore .data.json.gz files.

    • ๐Ÿ›  fixed internal issue #3893: correct wrong option name --database.ignore-logfile-errors in error message and correct it to --database.ignore-datafile-errors

    • ๐Ÿ›  fixed internal issue #2946: create graph autocomplete was not working under certain circumstances.

    • ๐Ÿ›  fixed a memory leak in PRUNE operation for traversals. The leak occurred only when PRUNE was actively used in queries.

    • ๐Ÿ›  fixed a crash (SIGSEGV) when opening a RocksDB database directory that contained an empty (0 bytes filesize) journal file and encryption was in use.

    • ๐Ÿ‘Œ improve test performance by doing the 0.1 delay between phase 1 and 2 only if phase 1 is slow

    • port back timestamp replication in agency from devel

    • ๐Ÿ‘ better logging when scheduler queue is half-full and full

    • ๐Ÿ›  fixed internal issue #536: ArangoSearch query may crash during internal lookup in some cases due to invalid index structure for exact input data

  • v3.4.6.1 Changes

    June 05, 2019
    • โฌ†๏ธ upgraded ArangoDB Starter version to 0.14.5

    • Speed up collection creation process in cluster, if not all agency callbacks are delivered successfully.

    • ๐Ÿ›  Fix agency's handling of object assignments with TTL