ArangoDB Changelog

What's new in ArangoDB 3.7.3

Oct 21, 2020
  • Added the following metrics for synchronous replication in the cluster:
  • `arangodb_refused_followers_count`: Number of times a shard leader received a refusal answer from a follower during synchronous replication.
  • `arangodb_sync_wrong_checksum`: Number of times a mismatching shard checksum was detected when syncing shards. In case this happens, a resync will be triggered for the shard.
  • Fixed handling of failedLeaderJob. In case of a plan modification, that removes a server from the plan, e.g. reduce replication factor. Directly followed by a failure of the current shard leader, would reinsert the just removed server in the plan, which is undesired, we first need to have a full "desync" cycle on this server to be reusable in the plan again.
  • Make sure the optimizer doesn't pick another index than the TTL index itself while fulfilling the expiry of TTL.
  • Added optional verbose logging for agency write operations. This logging is configurable by using the new log topic "agencystore".
  • The following log levels can be used for for the "agencystore" log topic to log writes to the agency:
  • DEBUG: will log all writes on the leader
  • TRACE: will log all writes on both leaders and followers
  • The default log level for the "agencystore" log topic is WARN, meaning no agency writes will be logged.
  • Turning on this logging can be used for auditing and debugging, but it is not recommended in the general case, as it can lead to large amounts of data being logged, which can have a performance impact and will lead to higher disk space usage.
  • Print image base address and CPU context (if available) in crash handler messages.
  • Added configuration option `--query.tracking-slow-queries` to decide whether slow queries are tracked extra.
  • Added configuration option `--query.tracking-with-querystring` to decide whether the query string is shown in the slow query log and the list of currently running queries. The option is true by default.
  • When turned off, querystrings in the slow query log and the list of currently running queries are just shown as "".
  • Added configuration option `--query.tracking-with-datasources` to toggle whether the names of data sources used by queries are shown in the slow query log and the list of currently running queries. The option is false by default.
  • When turned on, the names of data sources used by the query will be shown in the slow query log and the list of currently running queries.
  • Fixed handling of failoverCandidates. Sometimes, a server can still be a failoverCandidate even though it has been taken out of the Plan. With this fix, such a server is quickly taken out of failoverCandidates and it can never be re-added to the Plan before this has happened.
  • Fix #12693: SORT inside a subquery could sometimes swallow part of its input when it crossed boundaries of internal row batches.
  • Fixed issue BTS-212: Web UI doesn't let to make partial view update and partial view update should be audited (also reported as ES-700).
  • Fixed link definition comparison logic: equality wasn`t properly detected and led to link recreation.
  • Added configuration option `--rocksdb.sync-delay-threshold`.
  • This option can be used to track if any RocksDB WAL sync operations is delayed by more than the configured value (in milliseconds). The intention is to get aware of severely delayed WAL sync operations.
  • Add database, shard name and error information to several shard-related log messages.
  • Display shard names of a collection in the web interface when in the details view of the collection.
  • Added HTTP requests metrics for tracking the number of superuser and normal user requests separately:
  • `arangodb_http_request_statistics_superuser_requests`: Total number of HTTP requests executed by superuser/JWT
  • `arangodb_http_request_statistics_user_requests`: Total number of HTTP requests executed by clients
  • Fixed a bug in handling of followers which refuse to replicate operations.
  • In the case that the follower has simply been dropped in the meantime, we now avoid an error reported by the shard leader.
  • Fix a performance regression when a LIMIT is combined with a COLLECT WITH COUNT INTO. Reported in ES-692.
  • Fix REST handler GET /_admin/status when called with URL parameter value `overview=true`. For generating the `hash` attribute in the response, the current Plan was retrieved and analyzed. Due to a change in the internal Plan format the REST handler code failed to pick up the number of servers, which resulted in the REST handler returning HTTP 500 in cluster mode.
  • Use rclone built from v1.51.0 source with go1.15.2 instead of prebuilt v1.51.0 release.
  • Fixed a bug in AQL COLLECT with OPTIONS { "hash" } that lead to a quadratic runtime in the number of output rows.
  • Added startup option `--database.old-system-collections` to toggle automatic creation of system collections `_modules` and `_fishbowl`, along with their internal usage. These collections are useful only in very few cases, so it is normally not worth to create them in all databases.
  • The `_modules` collection is only used to register custom JavaScript modules, for which there exists no API, and `_fishbowl` is used to store the temporary list of Foxx apps retrieved from the Github Foxx store.
  • If the option value is `false` (which is the default from v3.8 onwards, but for v3.7 the default value is `true` for downwards-compatibility), the two collections will not be created for any new database. The `_fishbowl`collection will still be created dynamically when needed. If the option value is `true` (the default value in v3.7), the collections will be created regularly as before.
  • The default value for the option is going to change to `false` in v3.8, meaning the collections will not be created anymore there by default.
  • Any functionality related to the `_modules` system collection is deprecate and will be removed in ArangoDB v3.9.
  • Two side effects of turning this option off are:
  • there will no be iteration over all databases at server startup just to check the contents of all `_modules` collections.
  • less collections/shards will be around for deployments that create a large number of databases.
  • Already existing `_modules` and `_fishbowl` system collections will not be modified by this PR, even though they will likely be empty and unused.
  • Don't iterate over all databases as server startup in order to initialize the routing information. This is not necessary, as the routing information is global and not tied to a specific database.
  • Fixed a possible crash during instantiation of an AQL graph traversal. Reported in #12597.
  • Added safeguards against using V8 internally in environments that have JavaScript turned off via the `--javascript.enabled false` option.
  • Make scheduler propertly count down the number of working threads in case an exception happens in a worker thread.
  • Turn off upgrade checks in arangod in alpha/beta/preview Enterprise builds, too.
  • Previously it was already turned off in arangod for Enterprise builds already, but only for stable releases and not preview releases.
  • Fixed and extended LDAP log messages.
  • Added LDAP_OFF if referrals and restart are false.
  • If LDAP search fails, also retry (update to given number of retries).
  • Fixed inifinite reload of the login window after logout of an LDAP user.
  • Make the reboot tracker catch failed coordinators, too. Previously the reboot tracker was invoked only when a DB server failed or was restarted, and when a coordinator was restarted. Now it will also act if a coordinator just fails (without restart).
  • Added scheduler thread creation/destruction metrics:
  • `arangodb_scheduler_threads_started`: Number of scheduler threads started
  • `arangodb_scheduler_threads_stopped`: Number of scheduler threads stopped
  • Added startup option `--query.max-runtime` to limit the maximum runtime of all
  • AQL queries to a specified threshold value (in seconds). By default, the threshold is 0, meaning that the runtime of AQL queries is not limited.
  • Setting it to any positive value will restrict the runtime of all AQL queries unless it is overwritten in the per-query "maxRuntime" query option.
  • Please note that setting this option will affect *all* queries in all databases, and also queries issues for administration and database-internal purposes.
  • If a query exceeds the configured runtime, it will be killed on the next occasion when the query checks its own status. Killing is best effort, so it is not guaranteed that a query will no longer than exactly the configured amount of time.
  • Ensure that the argument to an AQL OPTIONS clause is always an object which
  • does not contain any dynamic (run-time) values. Previously, this was only enforced for traversal options and options for data-modification queries. This change extends the check to all occurrences of OPTIONS.
  • Added `details` option to figures command of a collection:
  • `collection.figures(details)`
  • Setting `details` to `true` will return extended storage engine-specific details to the figures. The details are intended for debugging ArangoDB itself and their format is subject to change. There is not much use in using the details from a client application.
  • By default, `details` is set to `false`, so no details are returned and the behavior is identical to previous versions of ArangoDB.
  • Implement RebootTracker usage for AQL queries in case of coordinator restarts or failures. This will clean up the rest of an AQL query on dbservers more quickly and in particular release locks faster.
  • Serialize maintenance actions for each shard. This addresses lost document problems found in chaos testing.
  • Enforce a maximum result register usage limit in AQL queries. In an AQL query, every user-defined or internal (unnamed) variable will need a register to store results in.
  • AQL queries that use more result registers than allowed (currently 1000) will now abort deterministically during the planning stage with error 32 (`resource limit exceeded`) and the error message "too many registers (1000) needed for AQL query".
  • Before this fix, an AQL query that used more than 1000 result registers crashed the server when assertions were turned on, and the behavior was undefined when assertions were turned off.
  • Fixed some cases where subqueries in PRUNE did not result in a parse error, but either in an incomprehensible error (in 3.7), or undefined behaviour during execution (pre 3.7).
  • Fixed an issue with audit logging misreporting some document requests as internal instead of logging the proper request information.
  • Add attributes `database` and `user` when tracking current and slow AQL queries.
  • `database` contains the name of the database the query is/was running in, `user` contains the name of the user that started the query.
  • These attributes will be returned in addition when calling the APIs for current and slow query inspection:
  • GET `/_api/query/current` and `require("arangodb/aql/queries").current()`
  • GET `/_api/query/slow` and `require("arangodb/aql/queries").slow()`
  • The "slow query" log message has also been augmented to contain the database name and the user name.
  • The `user` attribute is now also displayed in the web interface in the "Running queries" and "Slow queries" views.
  • Added metrics for V8 contexts usage:
  • `arangodb_v8_context_alive`: number of V8 contexts currently alive.
  • `arangodb_v8_context_busy`: number of V8 contexts currently busy.
  • `arangodb_v8_context_dirty`: number of V8 contexts currently dirty.
  • `arangodb_v8_context_free`: number of V8 contexts currently free.
  • `arangodb_v8_context_max`: maximum number of concurrent V8 contexts.
  • `arangodb_v8_context_min`: minimum number of concurrent V8 contexts.
  • Updated arangosync to 0.7.11.
  • Make followers in active failover run a compaction after they process a truncate operation and the truncate removed more than 4k documents. This can help to reclaim disk space on the follower earlier than without running the truncate.
  • The REST API PUT `/_api/collection//truncate` will now also run a compaction if the truncation affected more than 4k documents. This may add extra latency to the truncate operation, but can help to reclaim disk space earlier.
  • Added REST API PUT `/_admin/compact` for compacting the entire database data.
  • This endpoint can be used to reclaim disk space after substantial data deletions have taken place. The command is also exposed via the JavaScript API as `db._compact();`.
  • This command can cause a full rewrite of all data in all databases, which may take very long for large databases. It should thus only be used with care and only when additional I/O load can be tolerated for a prolonged time.
  • This command requires superuser access and is only available for the RocksDB storage engine.
  • Don't allow creation of smart satellite graphs or collections (i.e. using `"isSmart":true` together with `"replicationFactor":"satellite"` when creating graphs or collections. This combination of parameters makes no sense, so that the server will now respond with "bad parameter" and an HTTP status code of HTTP 400 ("Bad request").
  • Add exit code for ICU database loading startup errors.
  • Fixed issue #12507: SegFault when using an AQL for loop through edges.
  • Make the `IS_IPV4` AQL function behave identical on macOS as on other platforms. It previously allowed leading zeros in octets on macOS, whereas on other platforms they were disallowed. Now this is disallowed on macOS as well.
  • Added new metric "arangodb_aql_slow_query" for slow AQL queries, so this can be monitored more easily.
  • Added new metric "arangodb_scheduler_queue_length" for the scheduler's internal queue length.
  • Added new metric "arangodb_scheduler_queue_full_failures" for tracking cases of a full scheduler queue and dropping requests.
  • Added new metrics for the number of V8 contexts dynamically created and destroyed ("arangodb_v8_context_created" and "arangodb_v8_context_destroyed")
  • and for the number of times a V8 context was entered and left ("arangodb_v8_context_entered" and "arangodb_v8_context_exited"). There is
  • also a new metric for tracking the cases when a V8 context cannot be successfully acquired and an operation is not performed ("arangodb_v8_context_enter_failures").
  • Added extra info to "queue full" and "giving up waiting for unused v8 context" log messages.
  • Request to the `/_admin/statistics` API now processed via the CLIENT_FAST lane.
  • Previously they were handled in the CLIENT_SLOW lane, meaning that monitoring requests using that API didn't get through when the queue was rather full.
  • Introduce an internal high-water mark for the maximum row number that was written to in an AqlItemBlock. Using this number several operations on the whole block, such as cleaning up or copying can be made more efficient when run on only partially filled blocks.
  • Fixed issue BTS-169: cost estimation for LIMIT nodes showed wrong number of estimated items.

New in ArangoDB 3.7.2.1 (Sep 17, 2020)

  • Add option `--rocksdb.max-write-buffer-size-to-maintain` with default of 0. This configures how much memory RocksDB is allowed to use for immutable flushed memtables/write-buffers. The default of 0 will usually be good for all purposes and restores the 3.6 memory usage for write-buffers.

New in ArangoDB 3.7.2 (Aug 27, 2020)

  • ixed internal issue #744: LIMIT with only offset and constrained heap optimization will use estimation value for ArangoSearch views.
  • Make UPSERT statement with collection bind parameter behave identical to its non-bind parameter counterpart.
  • with a hard-coded collection name would succeed. This is now fixed so both queries have the same behavior (no failure) in single server.
  • Updated arangosync to 0.7.10.
  • Fixed internal issue #742: Add tick storage in index meta payload for ArangoSearch view links after collection truncate operation.
  • Fixed issue #12304: insert in transaction causing com.arangodb.ArangoDBException: Response: 500, Error: 4 - Builder value not yet sealed.
  • This happened when too deeply-nested documents (more than 63 levels of nesting) were inserted. While indefinite nesting is still not supported, the error message has been corrected from the internal HTTP 500 error "Builder value not yet sealed" to the correct HTTP 400 "Bad parameter".
  • Fixed: During a move-shard job which moves the leader there is a situation in which the old owner of a shard can reclaim ownership (after having resigned already), with a small race where it allows to write documents only locally, but then continue the move-shard to a server without those documents. An additional bug in the MoveShard
  • Supervision job would then leave the shard in a bad configuration with a resigned leader permanently in charge.
  • Fixed a problem with potentially lost updates because a failover could happen at a wrong time or a restarted leader could come back at an unlucky time.
  • Fixed BTS-167: Lingering Queries - Canceled from the UI.
  • This fixes queries not vanishing from the list of running queries in the web UI in case the query was canceled using the "Cancel" button in web UI's query editor.
  • Fixed bad behaviour in agency supervision in some corner cases involving already resigned leaders in Current.
  • Fixed issue ES-664: the optimizer rule `inline-subqueries` must not pull out subqueries that contain a COLLECT statement if the subquery is itself called from within a loop. Otherwise the COLLECT will be applied to the values in the outer FOR loop, which can produce a different result.
  • Fixed that dropping a vanished follower works again. An exception response to the replication request is now handled properly.
  • Make AQL user-defined functions (UDFs) work in a cluster in case the UDF runs an AQL query inside its own function code (BTS-159).
  • Fixed hotbackup S3 credentials validation and error reporting for upload and download.
  • Fixed a blockage on hotbackup when writes are happening concurrently, since followers could no longer replicate leader transactions.
  • Fix: The 'sorted' COLLECT variant would return undefined instead of null when grouping by a null value.
  • Fix: writeConcern is now honored correctly (ES-655).
  • Fixed internal issue #739: ArangoSearch filter volatility takes into account calculation nodes dependencies.
  • Fixed OASIS-278 issue: Added proper sort/calc nodes cleanup for late materialzation after OneShard optimization.
  • Slightly improve the performance of cluster DDL maintenance operations.
  • Added AQL functions `IS_IPV4`, `IPV4_TO_NUMBER`, `IPV4_FROM_NUMBER` for IPv4 address checks and conversions.
  • Added AQL function `PRODUCT` to calculate the product of an array.
  • Improve performance of internal cluster Plan and Current reload operations.
  • Fixed issue #12349: arangosh compact Arangoerror 404.
  • Improve performance of many non-subquery AQL queries, by optimizing away some storage overhead for subquery context data.
  • Always fetch data for /_api/cluster/agency-dump from leader of the agency. Add option "redirectToLeader=true" to internal /_api/agency/state API.
  • Fixed regression with view use-after-create in cluster (BTS-137).
  • Slightly improved the performance of some k-shortest-path queries.

New in ArangoDB 3.6.5 (Jul 19, 2020)

  • Updated arangosync to 0.7.8.
  • Added missing state rollback for failed attempt-based write locking of spin locks.
  • Fixed a sleeping barber in Fuerte HTTPConnection. It was possible that sendRequest calls were started but never completed due to the fact that the idle connection close triggered at exactly the same time.
  • Fixed potentially undefined behavior in syslog logger, with ident string going out of scope after `openlog` was called.
  • Fix cluster-internal request forwarding for VST requests that do not have any Content-Type header set. Such requests could have been caused by the Java driver (ES-635).
  • Added vertex validation in case of a SmartGraph edge definition update.
  • Fix untenable ultra precondition for removeServer.
  • Fixed that the hotbackup agency lock is released under all circumstances using scope guards. This addresses a rare case in which the lock was left behind.
  • Internal issue BTS-71: Added a precondition to prevent creating a collection with an invalid `distributeShardsLike` property.
  • Reinstate longer retention period for agency history (step size back to 1000, keep size back to 50000).
  • Internal issue BTS-71: In a cluster, for collections in creation, suspend supervision jobs concerning replication factor until creation is completed. Previously, it could cause collection creation to fail (e.g. when a server failed during creation), even when it didn't have to.
  • Internal issue BTS-71: Fixed error handling regarding communication with the agency. This could in a specific case cause collection creation in a cluster report success when it failed.
  • Fixed a document parsing bug in the Web UI. This issue occured in the document list view in case a document had an attribute called `length`. The result was an incorrect representation of the document preview.
  • The Web UI now displays an error message inside the node information view in case the user has no access to retreive the neccessary information.
  • Fixed a potential agency crash if trace logging is on.
  • Add more context error messages in certain agency failure situations in debug/trace mode.
  • Fixed issue OASIS-252: Hotbackup agency locks without clientId.
  • Correct some log entries.
  • Fixed BTS-110: Fulltext index with minLength

New in ArangoDB 3.6.4 (Jun 2, 2020)

  • Web UI is now using pre-compiled templates.
  • Fixed an issue with truncate of a collection after a dbserver was restarted very quickly. This could block arangosync from making progress because the _jobs collection could no longer be truncated.
  • Fixed issue #11652: Error: AQL: missing variable #2 (1) for node #6 (FilterNode) while planning registers.
  • Update OpenLDAP to 2.4.50.
  • Fixed issue ES-545: failing modification operations led to random crashes with "Index out of bound" error message.
  • Fixed edge cases in RocksDB primary index range lookups for operators >= and

New in ArangoDB 3.6.3.1 (May 7, 2020)

  • Fixed issue #11303: The result data of filter operation on edge document with _from or _to field ALWAYS miss some data on version 3.6.2.
  • This bug could have led to some edges from a RocksDB edge index not being returned when a non-traversal edge lookup was done in an AQL query in an inner FOR loop. Whether or not edges were withheld depended on whether edges were located within the same prefix domain.
  • Updated OpenSSL to 1.1.1g.

New in ArangoDB 3.6.3 (May 7, 2020)

  • Fixed internal issue #686: 'docs out of order' error during ArangoSearch consolidation.
  • Fixed a bug which occurred if a dbserver was shut down exactly when it was supposed to resign from its leadership for a shard.
  • Fixed internal issue ES-544.2: non-terminating queries could occur when an ArangoSearch view would be accessed inside a spliced subquery with no indexed documents on one DBServer that was part of the query.
  • Updated OpenSSL to 1.1.1f.
  • Improve continuation behavior of AQL queries. We post the continuation handler on lane CLUSTER_AQL instead of CLIENT_AQL. This leads to MEDIUM prio instead of LOW.
  • When relaying requests to other coordinators in a load-balanced setup, don't forward the "http/1.1" HTTP header from the remote response. Forwarding that header in the same way as any other header is not required, as each response will store and set its status separately anyway. Adding it to the headers again will only cause confusion and some client applications to choke.
  • Don't invoke collection key ranges compaction after performing a truncate operation on a RocksDB storage engine collection via the REST API's truncate endpoint.
  • The compaction was previously done to make RocksDB physically free data of key ranges that were supposed to be empty after the truncate, but it seems that the used version of RocksDB is struggling to achieve that goal. Although it does compact the ranges, it seems to read a lot of extra data from unrelated ranges as well, which blows up the overall time required to do the compactions.
  • Most recent versions of RocksDB do not seem to have this problem anymore. But without upgrading RocksDB to the latest version the most sensible fix is to turn off the manual compaction and rely on RocksDB eventually freeing the key ranges that are empty after a truncate.
  • Avoid some unnecessary internal calls to the storage engine during the incremental sync protocol for the RocksDB storage engine. This change can help reduce the I/O load on the follower during incremental sync for the RocksDB storage engine.
  • Fixed issue #11104: `ANALYZER` function doesn't correctly process `!= OR` queries.
  • Fixed internal issue ES-544: Instantiation of AQL queries with graph traversals in a OneShard setting failed with 'direction can only be INBOUND, OUTBOUND or ANY'.
  • Fixed a rare race condition in SmartGraphs where the graph is unbalanced, but a successful result could be found by only on database server, where the other server is still searching. In this race the query could continue on the other server and hit a non-thread save object.
  • Fixed a bug in the agency supervision, which ignored the `failoverCandidates` field.
  • AQL bugfix for the OneShard database optimizer rule when working with both OneShard collections and satellite collections. Previously, queries could not be instantiated unless the leader of the satellite collection was, by chance, on the same server.
  • Now the OneShard feature does allow reading from satellite collections, while queries writing to a satellite collection will no longer trigger the OneShard optimization.
  • Changed behavior for creating new collections in OneShard databases (i.e. databases with "sharding" attribute set to "single"):
  • Previously it was allowed to override "distributeShardsLike" and "numberOfShards" for each new collection. The default values were "_graphs" and 1 and were not modified if the user did not alter them, but it was still possible to alter them.
  • This is now (silenly) ignored. Any attempt to set any value for "distributeShardsLike" or "numberOfShards" for new collections in a OneShard database will silently be ignored. The collection will automatically be sharded like the sharding prototype and will have a single shard.
  • The behavior has been adjusted to match the behavior when creating collections in a cluster started with `--cluster.force-one-shard true` option. Here any user-supplied values for "distributeShardsLike" or "numberOfShards" were always ignored.
  • Now the behavior is identical for OneShard databases and databases in cluster started with `--cluster.force-one-shard true`.
  • The web interface now also hides the "Distribute shards like" settings in this case, and makes the "Number of shards" input box read-only.
  • Fixed issue #11275: indexes backward compatibility broken in 3.5+.
  • Fix an endless loop in FollowerInfo::persistInAgency which could trigger a hanger if a collection was dropped at the wrong time.
  • Fix cluster representation of the collection figures for RocksDB.
  • Fix SORT RAND() LIMIT 1 optimization for RocksDB when only a projection of the attributes was used. When a projection was used and that projection was covered by an index (e.g. `_key` via the primary index), then the access pattern was transformed from random order collection seek to an index access, which always resulted in the same index entry to be returned and not a random one.

New in ArangoDB 3.6.2 (Mar 12, 2020)

  • Legacy behaviour for maintenance mode in supervision.
  • Fix the usage of the AQL functions `CALL` and `APPLY` for calling user-defined AQL functions when invoking an AQL query from the arangosh or a client application.
  • Previously, invoking an AQL query and using the `CALL` or `APPLY` AQL functions
  • to call user-defined AQL function caused undefined behavior.
  • Fix nullptr deference in index skipping mode, which produced an address sanitizer (ASan) warning.
  • Fix supervision mode detection while unlocking agency in cluster hot backups.
  • Clear backups from DB servers and agency, when plan unchanged not met and not allowing for inconsistency.
  • Fix arangorestore: If a smartGraphAttribute value was changed after document creation, the _key of the document becomes inconsistent with the smartGraphAttribute entry. However, the sharding of documents stays intact. When restoring data from a dump that contains a document with inconsistent _key and smartGraphAttribute this would cause an error and the document would not be inserted. This is fixed by ignoring this inconsistency in the case of restore.
  • Honor `cacheEnabled` attribute when updating the properties of a collection in case of the cluster. Previously, this attribute was ignored in the cluster, but it shouldn't have been.
  • Fixed issue #11137: http-proxy can't pass delete method req.body to foxx.
  • Fixed a memory leak in ModificationExecutors.
  • Updated rclone to 1.51.1.
  • Fixed queries having the following structure
  • FOR doc IN collection
  • FILTER doc.nonIndexedAttribute // expression
  • FOR sub IN doc.nonIndexedAttribute // same expression
  • For such queries, the FILTER was moved into the first FOR loop for early pruning. Afterwards, the leftover CalculationNode that evaluated `doc.nonIndexedAttribute` was removed. This was wrong however, because
  • the same expression was reused in the second FOR loop. There was code considering this, but due to a bug it did not work if the expression in the FILTER was reused in the directly following node.
  • Updated arangosync to 0.7.3.
  • Updated ArangoDB Starter to 0.14.14.
  • Fixed handling of `geometry` attributes in query editor of the web UI.
  • Previously, document attributes named `geometry` were treated in a special
  • way, assuming they were JSON objects. In case a document contained a
  • `geometry` attribute that had a non-object value (e.g. `null`) the web UI
  • threw a JavaScript exception and would not display AQL query results properly.
  • Disable "collect-in-cluster" AQL optimizer rule in case a LIMIT node is between
  • the COLLECT and the source data. In this case it is not safe to apply the
  • distributed collect, as it may alter the results.
  • Fixed internal issue #4932: COLLECT WITH COUNT together with FILTER yields
  • zero.
  • This bugfix fixes an issue when skipping over documents in an index scan using a covering index and also at the same time using an early-pruning filter.
  • In this case wrong document data may have been injected into the filter condition for filtering, with the filter wrongfully deciding which documents to filter out.
  • Improved usability in arangorestore: Fixed misleading error message when database creation fails for option`--create-database option`. Now the correct error is displayed.
  • Pass the specified replication factor from the `--replication-factor`option when creating a database.
  • Fixed issue #11051: AQL query wrongfully returning no results on 3.6.1.
  • This bugfix prevents the "late-document-materialization" optimizer rule from kicking in in cases when an index scan also uses early pruning of index entries. In this case, the late document materialization will lead to the filter condition used in early pruning not being applied correctly, potentially producing wrong results.
  • Fixed `console.log(...)` not logging when called inside arangosh.
  • Curiously, `require("console").log(...)` still worked from arangosh. This bugfix makes both versions work again.
  • Fixed internal issue #596: Added ability to disable DNF conversion in SEARCH condition for ArangoSearch views. As this conversion might result in overcomplicated disjunction and heavily slowdown execution.
  • Fixed a bug where a single host agency could log too early.
  • Cluster collection creation preconditioned on involved db server not in process of being cleaned and beyond.
  • Supervision maintenance mode from "on" and TTL to expiry string.
  • Clean out server job checks preconditions plan version unchanged for start.
  • Make sure heartbeats are actually sent out and received once per second.
  • Make active failover integration tests more stable.
  • Include collections "_queues" and "_jobs" in dumps created by arangodump in case the option `--include-system-collections` was set to true. Previously these collections were always excluded from dumps.
  • Fix bug in collection creation with distributeShardsLike.
  • Fixed issue #10949: k shortest paths behaviour wrong with zero weights.

New in ArangoDB 3.6.0 (Jan 8, 2020)

  • Do not create a reboot tracker for empty serverId ubin sync repl.
  • Update swagger.

New in ArangoDB 3.5.3 (Nov 29, 2019)

  • Fixed GET _api/gharial to also include the name property in every returned graph. This is a consistency fix within the API as all other APIs include the name. As a work around the returned _key can be used, which is identical to the name.
  • The _users collection is now properly restored when using arangorestore.
  • Allow the optimizer to use indexes when a collection attribute is compared to an expansion followed by an attribute name, e.g. `doc.value IN something[*].name`.
  • Updated arangosync to 0.7.0.
  • Fixed issue #10470: The WebUI now shows potential errors and details which occured using _api/import (e.g. unique constraint violated).
  • Fixed issue #10440: Incorrect sorting with sort criteria partially covered by index.
  • Make the timeouts for replication requests (for active failover and master-slave replication configurable via startup options:
  • --replication.connect-timeout
  • --replication.request-timeout
  • Fixed internal issue #4647: dead Coordinators are not removed for agency.
  • Fixed UPSERT matching.
  • This will now correctly insert a document instead of updating the existing, that only partially machtes the upsert-expression.
  • Fixed undefined behaviour with creation of ArangoSearch links with custom analyzers in cluster environment.
  • Fixed internal issue #651: analyzer duplication in _analyzers collection.
  • Fixed internal issue #4597: rebalanceShards API cannot work on any database other than the _system database.
  • Stop putting system services in _apps on single server, this has never worked on cluster and was not needed.
  • Fixed issue #10371: K_SHORTEST_PATHS LIMIT 1 can not return the shortest path.
  • Now the shortest path is returned as the first one in such queries.
  • Improve killability of some types of cluster AQL queries. Previously, several cluster queries, especially those containing a `DistributeNode` in their execution plans, did not respond to a kill instruction.
  • This change also introduces a new query status "killed", which may now be returned by the REST APIs at `/_api/query/current` and `/_api/query/slow` in the `state` attribute of each query.
  • Improve shutdown of some cluster AQL queries on the coordinator in case the query has multiple coordinator snippets (true for queries involving more than one collection) and the database server(s) cannot be reached on query shutdown. In this case the proper shutdown of the coordinator parts of the query previously was deferred until the coordinator snippets were removed by the automatic garbage collection. Now, the cleanup of the coordinator snippets will happen much more quickly, which reduces the chances of the queries blocking resources.
  • Fixed ArangoSearch index removes being discarded on commiting consolidation results with pending removes after some segments under consolidation were already committed.
  • Assertion fail when no timestamp in agency's persistence.
  • Fixed internal issue #647: custom analyzer provokes errors on Active Failover deployment.
  • Upgraded bundled version of libcurl to 7.66.0.
  • When starting a coordinator, wait up to 15 seconds for it to appear in the agency under key `Supervision/Health` before reporting as "ready".
  • This is necessary because if the coordinator reports ready beforehand and is used to create databases etc., the supervision may remove all of the jobs started by non-ready coordinators, considering them to be from a failed coordinator.
  • To avoid huge startup delays, the startup will proceed after waiting futilely for 15 seconds and log a message.
  • Fixed issue #10270: Query: Expecting type Array or Object (while executing).
  • Fix a problem with AQL constrained sort in the cluster, which might abort queries. The AQL sort-limit optimization rule may now also speed up fullCount with sorted indexes and a limit in the cluster.
  • Prevent spurious log message "Scheduler queue is filled more than 50% in last x s" from occurring when this is not the case. Due to a data race, the message could previously also occur if the queue was empty.
  • The General Graph document API is now consistent with the document API in its error messages. When attempting to create / modify edges pointing to non existing vertex collections HTTP 400 is returned instead of 404.
  • Disallow the usage of subqueries inside AQL traversal PRUNE conditions.
  • Using subqueries inside PRUNE conditions causes undefined behavior, so such queries will now be aborted early on with a parse error instead of running into undefined behavior.
  • Fixed available flag for hotbackup.
  • Fixed list with id for partially available hotbackups.
  • Fixed agency TTL bug happening under certain rare conditions.
  • Improved performance of some agency helper functions.
  • Fixed search not working in document view while in code mode.
  • Fixed issue #10090: fix repeatable seek to the same document in SEARCH operations for ArangoSearch views.
  • Fixed issue #10193: Arangoexport does not handle line feeds when exporting as csv.
  • Removed debug log messages "found comm task ..." that could be logged on server shutdown.
  • Fixed issue #10183: Arangoimport imports on _system when you try to create a new database.
  • This bugfix fixes the output of arangoimport, which could display a wrong target database for the import if the option `--create-database` was used.
  • Fixed issue #10158: Invalid Query Crashes ArangoDB.
  • This fixes traversal queries that are run on a static empty start vertex string.

New in ArangoDB 3.5.0 (Aug 21, 2019)

  • Fix web UI link to ArangoSearch views documentation.
  • Rebuild swagger for web UI and documentation.

New in ArangoDB 3.4.7 (Jul 5, 2019)

  • Updated arangosync to 0.6.4
  • Bug-fix for a very rare race condition on cluster collection creation process.
  • 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.
  • 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 smart graph 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 smart join 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.

New in ArangoDB 3.4.6.1 (Jun 7, 2019)

  • Speed up collection creation process in cluster, if not all agency callbacks are delivered successfully.
  • Fix agency's handling of object assignments with TTL

New in ArangoDB 3.4.6 (May 29, 2019)

  • updated ArangoDB Starter 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 smart graphs 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

New in ArangoDB 3.4.5 (Apr 9, 2019)

  • Fixed a shutdown issue when the server was shut down while there were active Pregel jobs executing
  • Fixed internal issue #3815: fixed the removal of connected edges when removing a vertex graph node in a smart graph environment.
  • Added AQL functions CRC32 and FNV64 for hashing data
  • Internal issue #2276: 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.
  • Fixed internal issue #3789: restricted the allowed query names for user-defined custom queries within the web ui.
  • Fixed internal issuel #3546: improved the shards view in the web ui if there is only one shard to display.
  • Fixed a display issues when editing a graph within the web ui
  • Fixed internal-issue #3787: Let user know about conflicting attribute in AQL queries if information is available.
  • Fixed issue #8294: wrong equals behaviour on arrays with ArangoSearch
  • Fixed internal issue #528: ArangoSearch range query sometimes doesn't work correctly with numeric values
  • Fixed internal issue #3757: when restarting a follower in active failover mode, try an incremental sync instead of a full resync. Fixed also the case where a double resync was made
  • Don't check for the presence of ArangoDB upgrades available when firing up an arangosh enterprise edition build
  • Added startup option `--rocksdb.allow-fallocate`
  • When set to true, allows RocksDB to use the fallocate call. If false, fallocate calls are bypassed and no preallocation is done. Preallocation is turned on by default, but can be turned off for operating system versions that are known to have issues with it. This option only has an effect on operating systems that support fallocate.
  • Added startup option `--rocksdb.limit-open-files-at-startup`
  • If set to true, this will limit the amount of .sst files RocksDB will inspect at startup, which can reduce the number of IO operations performed at start.
  • 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 that is taken at transaction start.
  • This change also exposes db..compact() in the arangosh, in order to manually run a compaction on the data range of a collection should it be needed for maintenance.
  • Don't attempt to remove non-existing WAL files, because such attempt will trigger unnecessary error log messages in the RocksDB library
  • Updated arangosync to 0.6.3
  • Added --log.file-mode to specify a file mode of newly created log files
  • Added --log.file-group to specify the group of newly created log files
  • Fixed some escaping issues within the web ui.
  • Fixed issue #8359: How to update a document with unique index (constraints)?
  • When restarting a follower in active failover mode, try an incremental sync instead of a full resync
  • Add "PRUNE " to AQL Traversals (internal issue #3068). This allows to early abort searching of unnecessary branches within a traversal. PRUNE is only allowed in the Traversal statement and only between the graphdefinition and the options of the traversal.
  • 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)
  • Added replication applier state figures `totalDocuments` and `totalRemovals` to access the number of document insert/replace operations and the number of document removals operations separately. Also added figures `totalApplyTime` and `totalFetchTime` for determining the total time the replication spent for applying changes or fetching new data from the master. Also added are the figures `averageApplyTime` and `averageFetchTime`, which show the average time spent for applying a batch or for fetching data from the master, resp.
  • Fixed race condition in which the value of the informational replication applier figure `ticksBehind` could underflow and thus show a very huge number of ticks.
  • Always clear all ongoing replication transactions on the slave if the slave discovers the data it has asked for is not present anymore on the master and the `requireFromPresent` value for the applier is set to `false`.
  • In this case aborting the ongoing transactions on the slave is necessary because they may have held exclusive locks on collections, which may otherwise not be released.
  • Added option `--rocksdb.wal-archive-size-limit` for controlling the maximum total size (in bytes) of archived WAL files. The default is 0 (meaning: unlimited).
  • When setting the value to a size bigger than 0, the RocksDB storage engine will force a removal of archived WAL files if the total size of the archive exceeds the configured size. The option can be used to get rid of archived WAL files in a disk size-constrained environment. Note that archived WAL files are normally deleted automatically after a short while when there is no follower attached that may read from the archive. However, in case when there are followers attached that may read from the archive, WAL files normally remain in the archive until their contents have been streamed to the followers. In case there are slow followers that cannot catch up this will cause a growth of the WAL files archive over time. The option `--rocksdb.wal-archive-size-limit` can now be used to force a deletion of WAL files from the archive even if there are followers attached that may want to read the archive. In case the option is set and a leader deletes files from the archive that followers want to read, this will abort the replication on the followers. Followers can however restart the replication doing a resync.
  • Agents need to be able to overwrite a compacted state with same _key
  • In case of resigned leader, set isReady=false in clusterInventory
  • Abort RemoveFollower job if not enough in-sync followers or leader failure
  • Fix shrinkCluster for satelliteCollections
  • Fix crash in agency supervision when leadership is lost
  • Speed up supervision in agency for large numbers of jobs
  • Fix log spamming after leader resignation in agency
  • Make AddFollower less aggressive
  • Fix cases, where invalid json could be generated in agents' store dumps
  • Coordinator route for full agency dumps contains compactions and time stamps
  • Lots of agency performance improvements, mostly avoiding copying
  • Priority queue for maintenance jobs
  • Do not wait for replication after each job execution in Supervision
  • Fix a blockage in MoveShard if a failover happens during the operation
  • Check health of servers in Current before scheduling removeFollower jobs
  • Wait for statistics collections to be created before running resilience tests
  • Fix ttl values in agency when key overwritten with no ttl

New in ArangoDB 3.4.4 (Apr 8, 2019)

  • Added missing test for success in failed leader: this could lead to a crash
  • Follow up to fix JWT authentication in arangosh (#7530): also fix reconnect
  • Now also syncing _jobs and _queues collections in active failover mode
  • Fixed overflow in windows NowNanos in RocksDB
  • Fixed issue #8165: AQL optimizer does not pick up multiple Geo index
  • When creating a new database with an initial user, set the database permission for this user as specified in the documentation
  • 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
  • Allow MoveShard from leader to a follower, thus swapping the two
  • Supervision fix: Satellite collections, various fixes
  • Add coordinator route for agency dump

New in ArangoDB 3.3.14 (Sep 1, 2018)

  • upgraded arangodb starter version to 0.13.1
  • Foxx HTTP API errors now log stacktraces
  • fixed issue #5736: Foxx HTTP API responds with 500 error when request body is too short
  • fixed issue #5831: custom queries in the ui could not be loaded if the user only has read access to the _system database.
  • fixed internal issue #2566: corrected web UI alignment of the nodes table
  • fixed internal issue #2869: when attaching a follower with global applier to an authenticated leader already existing users have not been replicated, all users created/modified later are replicated.
  • fixed internal issue #2865: dumping from an authenticated arangodb the users have not been included
  • fixed issue #5943: misplaced database ui icon and wrong cursor type were used
  • fixed issue #5354: updated the web UI JSON editor, improved usability
  • fixed issue #5648: fixed error message when saving unsupported document types
  • fixed issue #6076: Segmentation fault after AQL query
  • fixed issue #5884: Subquery nodes are no longer created on DBServers
  • fixed issue #6031: Broken LIMIT in nested list iterations
  • fixed internal issue #2812: Cluster fails to create many indexes in parallel
  • intermediate commits in the RocksDB engine are now only enabled in standalone AQL queries (not within a JS transaction), standalone truncate as well as for the "import" API

New in ArangoDB 3.3.11 (Jul 5, 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

New in ArangoDB 3.3 Milestone 2 (Oct 24, 2017)

  • Redesigned the replication protocol to be more reliable
  • Refactored and modernized the internal infrastructure to better support continuous asynchronous replication
  • Added a new global asynchronous replication API, to allow you to automatically and continuously mirror an entire ArangoDB single-instance (master) onto another one (or more)
  • Added support for automatic failover from a master server to one of his replica-slaves, if the master server becomes unreachable

New in ArangoDB 3.2.4 (Sep 27, 2017)

  • UI: added replicationFactor option during SmartGraph creation
  • make the MMFiles compactor perform less writes during normal compaction operation. This partially fixes issue #3144
  • make the MMFiles compactor configurable
  • fix downwards-incompatibility in /_api/explain REST handler
  • fix Windows implementation for fs.getTempPath() to also create a sub-directory as we do on linux
  • fixed a multi-threading issue in cluster-internal communication
  • performance improvements for traversals and edge lookups
  • removed internal memory zone handling code. the memory zones were a leftover from the early ArangoDB days and did not provide any value in the current implementation.
  • (Enterprise only) added `skipInaccessibleCollections` option for AQL queries: if set, AQL queries (especially graph traversals) will treat collections to which a user has no access rights to as if these collections were empty.
  • adjusted scheduler thread handling to start and stop less threads in normal operations
  • leader-follower replication catchup code has been rewritten in C++
  • early stage AQL optimization now also uses the C++ implementations of AQL functions if present. Previously it always referred to the JavaScript implementations and ignored the C++ implementations. This change gives more flexibility to the AQL optimizer.
  • ArangoDB tty log output is now colored for log messages with levels FATAL, ERR and WARN.
  • changed the return values of AQL functions `REGEX_TEST` and `REGEX_REPLACE` to `null` when the input regex is invalid. Previous versions of ArangoDB partly returned `false` for invalid regexes and partly `null`.
  • added `--log.role` option for arangod

New in ArangoDB 3.2.3 (Sep 11, 2017)

  • fixed issue #3106: orphan collections could not be registered in general-graph module
  • fixed wrong selection of the database inside the internal cluster js api
  • fixed wrong ui cluster health information
  • fixed issue #3125: HTTP Foxx API Json parsing
  • fixed issue #3120: Foxx queue: job isn't running when server.authentication = true
  • fixed supervision failure detection and handling, which happened with simultaneous agency leadership change

New in ArangoDB 3.2.2 (Sep 6, 2017)

  • fixed issue #2847: adjust the response of the DELETE `/_api/users/database/*` calls
  • fixed issue #3075: Error when upgrading arangoDB on linux ubuntu 16.04
  • fixed a buffer overrun in linenoise console input library for long input strings
  • increase size of the linenoise input buffer to 8 KB
  • abort compilation if the detected GCC or CLANG isn't in the range of compilers we support
  • fixed spurious cluster hangups by always sending AQL-query related requests to the correct servers, even after failover or when a follower drops
  • fixed issue with RocksDB engine acquiring the collection count values too early, leading to the collection count values potentially being slightly off even in exclusive transactions (for which the exclusive access should provide an always-correct count value)
  • fixed some issues in leader-follower catch-up code, specifically for the RocksDB engine
  • make V8 log fatal errors to syslog before it terminates the process. This change is effective on Linux only.
  • fixed issue with MMFiles engine creating superfluous collection journals on shutdown
  • fixed issue #3067: Upgrade from 3.2 to 3.2.1 reset autoincrement keys
  • fixed issue #3044: ArangoDB server shutdown unexpectedly
  • fixed issue #3039: Incorrect filter interpretation
  • fixed issue #3037: Foxx, internal server error when I try to add a new service
  • improved MMFiles fulltext index document removal performance and fulltext index query performance for bigger result sets
  • ui: fixed a display bug within the slow and running queries view
  • ui: fixed a bug when success event triggers twice in a modal
  • ui: fixed the appearance of the documents filter
  • ui: graph vertex collections not restricted to 10 anymore
  • fixed issue #2835: UI detection of JWT token in case of server restart or upgrade
  • upgrade jemalloc version to 5.0.1
  • fixed issue #2978: log something more obvious when you log a Buffer
  • fixed issue #2982: AQL parse error?

New in ArangoDB 3.2.1 (Aug 11, 2017)

  • Fixed issue #3011: Optimizer rule reduce-extraction-to-projection breaks queries
  • Now allowing to restore users in a sharded environment as well It is still not possible to restore collections that are sharded differently than by _key.
  • fixed an isse with restoring of system collections and user rights. It was not possible to restore users into an authenticated server.
  • fixed issue #2977: Documentation for db._createDatabase is wrong
  • ui: added bind parameters to slow query history view
  • fixed issue #1751: Slow Query API should provide bind parameters, webui should display them
  • ui: fixed a bug when moving multiple documents was not possible
  • fixed docs for issue #2968: Collection _key autoincrement value increases on error
  • AQL CHAR_LENGTH(null) returns now 0. Since AQL TO_STRING(null) is '' (string of length 0)
  • ui: now supports single js file upload for Foxx services in addition to zip files
  • fixed a multi-threading issue in the agency when callElection was called while the Supervision was calling updateSnapshot
  • added startup option `--query.tracking-with-bindvars`
  • index selectivity estimates are now available in the cluster as well
  • fixed issue #2943: loadIndexesIntoMemory not returning the same structure as the rest of the collection APIs
  • fixed issue #2949: ArangoError 1208: illegal name
  • fixed issue #2874: Collection properties do not return `isVolatile` attribute
  • potential fix for issue #2939: Segmentation fault when starting coordinator node
  • fixed issue #2810: out of memory error when running UPDATE/REPLACE on medium-size collection
  • fix potential deadlock errors in collector thread
  • disallow the usage of volatile collections in the RocksDB engine by throwing an error when a collection is created with attribute `isVolatile` set to `true`. Volatile collections are unsupported by the RocksDB engine, so creating them should not succeed and silently create a non-volatile collection
  • prevent V8 from issuing SIGILL instructions when it runs out of memory
  • Foxx queues and tasks now ensure that the scripts in them run with the same permissions as the Foxx code who started the task / queue
  • fixed issue #2928: Offset problems
  • fixed issue #2876: wrong skiplist index usage in edge collection
  • fixed issue #2868: cname missing from logger-follow results in rocksdb
  • fixed issue #2889: Traversal query using incorrect collection id
  • fixed issue #2884: AQL traversal uniqueness constraints "propagating" to other traversals? Weird results
  • arangoexport: added `--query` option for passing an AQL query to export the result
  • fixed issue #2879: No result when querying for the last record of a query
  • ui: allows now to edit default access level for collections in database _system for all users except the root user.
  • added new option "--rocksdb.max-background-jobs"
  • removed options "--rocksdb.max-background-compactions", "--rocksdb.base-background-compactions" and "--rocksdb.max-background-flushes"
  • option "--rocksdb.compaction-read-ahead-size" now defaults to 2MB
  • change Windows build so that RocksDB doesn't enforce AVX optimizations by default
  • speed up RocksDB secondary index creation and dropping
  • removed RocksDB note in Geo index docs

New in ArangoDB 3.2.0 (Aug 3, 2017)

  • Fixed UI issues
  • Fixed multi-threading issues in Pregel
  • Fixed Foxx resilience
  • Added command-line option `--javascript.allow-admin-execute`. This option can be used to control whether user-defined JavaScript code is allowed to be executed on server by sending via HTTP to the API endpoint `/_admin/execute` with an authenticated user account. The default value is `false`, which disables the execution of user-defined code. This is also the recommended setting for production. In test environments, it may be convenient to turn the option on in order to send arbitrary setup or teardown commands for execution on the server.

New in ArangoDB 3.1.26 (Jul 28, 2017)

  • Fixed vanishing revision cache.

New in ArangoDB 3.1.25 (Jul 15, 2017)

  • fixed one medium priority and two low priority security user interface issues found by owasp zap.
  • fixed parallel access to list of failed servers
  • fixed ID lookup for secondaries
  • removed secondaries from local and distributed cluster deployments

New in ArangoDB 3.1.24 (Jul 15, 2017)

  • fixed one more LIMIT issue in traversals
  • fixed issue #2684: Legacy service UI not working

New in ArangoDB 3.1.23 (Jul 3, 2017)

  • potentially fixed issue #2559: Duplicate _key generated on insertion
  • fix races in SSL communication code
  • fix invalid results (too many) when a skipping LIMIT was used for a traversal. `LIMIT x` or `LIMIT 0, x` were not affected, but `LIMIT s, x` may have returned too many results
  • fix invalid first group results for sorted AQL COLLECT when LIMIT was used
  • fix invalid locking in JWT authentication cache, which could have crashed the server
  • fix undefined behavior in traverser when traversals were used inside a FOR loop

New in ArangoDB 3.1.11 (Feb 21, 2017)

  • fixed a race between connection closing and sending out last chunks of data to clients when the "Connection: close" HTTP header was set in requests
  • ui: optimized smart graph creation usability
  • ui: fixed #2308
  • fixed a race in async task cancellation via `require("@arangodb/tasks").unregisterTask()`
  • fixed spuriously hanging threads in cluster AQL that could sit idle for a few minutes
  • fixed potential numeric overflow for big index ids in index deletion API
  • fixed sort issue in cluster, occurring when one of the local sort buffers of a GatherNode was empty
  • reduce number of HTTP requests made for certain kinds of join queries in cluster, leading to speedup of some join queries
  • supervision deals with demised coordinators correctly again
  • implement a timeout in TraverserEngineRegistry
  • agent communication reduced in large batches of append entries RPCs
  • inception no longer estimates RAFT timings
  • compaction in agents has been moved to a separate thread
  • replicated logs hold local timestamps
  • supervision jobs failed leader and failed follower revisited for function in precarious stability situations
  • fixed bug in random number generator for 64-bit int

New in ArangoDB 3.1.9 (Feb 20, 2017)

  • MacOS CLI package: store databases and apps in the users home directory
  • ui: fixed re-login issue within a non system db, when tab was closed
  • fixed a race in the VelocyStream Commtask implementation
  • fixed issue #2256

New in ArangoDB 3.0.12 (Nov 26, 2016)

  • fixed issues #2149, #2159
  • fixed error reporting for issue #2158

New in ArangoDB 3.0.10 (Sep 27, 2016)

  • fixed issue #2072
  • fixed issue #2070
  • fixed slow cluster starup issues. supervision will demonstrate more patience with db servers

New in ArangoDB 3.0.8 (Sep 16, 2016)

  • fixed multiple issues where ClusterInfo bug hung agency in limbo timeouting on multiple collection and database callbacks
  • fixed issue #2052
  • fixed issue #2005
  • fixed issue #2039

New in ArangoDB 3.0.7 (Sep 7, 2016)

  • New supervision job handles db server failure during collection creation.

New in ArangoDB 3.0.6 (Sep 5, 2016)

  • slightly better error diagnostics for AQL query compilation and replication
  • fixed wrong default value for arangoimp's `--on-duplicate` value
  • fix execution of AQL traversal expressions when there are multiple conditions that refer to variables set outside the traversal
  • properly return HTTP 503 in JS actions when backend is gone
  • supervision creates new key in agency for failed servers
  • new shards will not be allocated on failed or cleaned servers
  • Fixes:
  • fixed issue #2018
  • fixed issue #2015
  • fixed issue #2012
  • fixed issue #2026

New in ArangoDB 3.0.5 (Sep 2, 2016)

  • execute AQL ternary operator via C++ if possible
  • fixed issue #1977
  • fixed extraction of _id attribute in AQL traversal conditions
  • fix SSL agency endpoint
  • Minimum RAFT timeout was one order of magnitude to short
  • Optimized RAFT RPCs from leader to followers for efficiency
  • Optimized RAFT RPC handling on followers with respect to compaction
  • Fixed bug in handling of duplicates and overlapping logs
  • Fixed bug in supervision take over after leadership change

New in ArangoDB 3.0.3 (Jul 17, 2016)

  • fixed issue #1942
  • fixed issue #1941
  • fixed array index batch insertion issues for hash indexes that caused problems when no elements remained for insertion
  • fixed AQL MERGE() function with External objects originating from traversals
  • fixed some logfile recovery errors with error message "document not found"
  • fixed issue #1937
  • fixed issue #1936
  • improved performance of arangorestore in clusters with synchronous replication
  • Foxx tests and scripts in development mode should now always respect updated files instead of loading stale modules
  • When disabling Foxx development mode the setup script is now re-run
  • Foxx manifests of installed services are now saved to disk with indentation

New in ArangoDB 3.0.2 (Jul 10, 2016)

  • fixed assertion failure in case multiple remove operations were used in the same query
  • fixed upsert behavior in case upsert was used in a loop with the same document example
  • fixed issue #1930
  • don't expose local file paths in Foxx error messages
  • fixed issue #1929
  • make arangodump dump the attribute `isSystem` when dumping the structure of a collection, additionally make arangorestore not fail when the attribute is missing
  • fixed "Could not extract custom attribute" issue when using COLLECT with MIN/MAX functions in some contexts
  • honor presence of persistent index for sorting
  • make AQL query optimizer not skip "use-indexes-rule", even if enough plans have been created already
  • make AQL optimizer not skip "use-indexes-rule", even if enough execution plans have been created already
  • fix double precision value loss in VelocyPack JSON parser
  • added missing SSL support for arangorestore
  • improved cluster import performance
  • fix Foxx thumbnails on DC/OS
  • fix Foxx configuration not being saved
  • fix Foxx app access from within the frontend on DC/OS
  • add option --default-replication-factor to arangorestore and simplify the control over the number of shards when restoring
  • fix a bug in the VPack -> V8 conversion if special attributes _key, _id, _rev, _from and _to had non-string values, which is allowed below the top level
  • fix malloc_usable_size for darwin

New in ArangoDB 3.0.1 (Jul 1, 2016)

  • fixed periodic jobs: there should be only one instance running - even if it runs longer than the period
  • increase max. number of collections in AQL queries from 32 to 256
  • fixed issue #1916: header "authorization" is required" when opening services page
  • fixed issue #1915: Explain: member out of range
  • fixed issue #1914: fix unterminated buffer
  • don't remove lockfile if we are the same (now stale) pid fixes docker setups (our pid will always be 1)
  • do not use revision id comparisons in compaction for determining whether a revision is obsolete, but marker memory addresses this ensures revision ids don't matter when compacting documents
  • escape Unicode characters in JSON HTTP responses this converts UTF-8 characters in HTTP responses of arangod into `uXXXX` escape sequences. This makes the HTTP responses fit into the 7 bit ASCII character range, which speeds up HTTP response parsing for some clients, namely node.js/v8
  • add write before read collections when starting a user transaction this allows specifying the same collection in both read and write mode without unintended side effects
  • fixed buffer overrun that occurred when building very large result sets
  • index lookup optimizations for primary index and edge index
  • fixed "collection is a nullptr" issue when starting a traversal from a transaction
  • enable /_api/import on coordinator servers

New in ArangoDB 2.8.9 (Jun 23, 2016)

  • fixed escaping and quoting of extra parameters for executables in Mac OS X App
  • added "waiting for" status variable to web interface collection figures view
  • fixed undefined behavior in query cache invaldation
  • fixed access to /_admin/statistics API in case statistics are disable via option `--server.disable-statistics`
  • Foxx manager will no longer fail hard when Foxx store is unreachable unless installing a service from the Foxx store (e.g. when behind a firewall or GitHub is unreachable).

New in ArangoDB 3.0.0 RC 3 (Jun 23, 2016)

  • Minor GUI fixes
  • Fix for replication and nonces

New in ArangoDB 2.8.7 (Apr 8, 2016)

  • optimized primary=>secondary failover
  • fix detection of TRUE for whole documents
  • expose the User-Agent http header since github requires it.
  • work with http servers that only send \n
  • fixed potential race condition between compactor and collector threads
  • fix removal of temporary directories on arangosh exit
  • javadoc-style comments in Foxx services are no longer interpreted as Foxx comments outside of controller/script/exports files (#1748)
  • removed remaining references to class syntax for Foxx Model and Repository from the documentation
  • added a safe-guard for corrupted master-pointer

New in ArangoDB 2.8.6 (Mar 25, 2016)

  • arangosh can now execute JavaScript script files that contain a shebang in the first line of the file. This allows executing script files directly.
  • added missing reset of traversal state for nested traversals. The state of nested traversals (a traversal in an AQL query that was located in a repeatedly executed subquery or inside another FOR loop) was not reset properly, so that multiple invocations of the same nested traversal with different start vertices led to the nested traversal always using the start vertex provided on the first invocation.
  • fixed issue #1781: ArangoDB startup time increased tremendously
  • fixed issue #1783: SIGHUP should rotate the log

New in ArangoDB 2.8.5 (Mar 12, 2016)

  • Add OpenSSL handler for TLS V1.2 as sugested by kurtkincaid in #1771
  • Fixed issue #1765 (The webinterface should display the correct query time) and #1770 (Display ACTUAL query time in aardvark's AQL editor)
  • Improve nullptr handling in logger.
  • Added new endpoint "srv://" for DNS service records
  • `org/arangodb/request` no longer sets the content-type header to the string "undefined" when no content-type header should be sent (issue #1776)

New in ArangoDB 2.8.4 (Mar 2, 2016)

  • Global modules are no longer incorrectly resolved outside the ArangoDB JavaScript directory or the Foxx service's root directory (issue #1577)
  • Improved error messages from Foxx and JavaScript (issues #1564, #1565, #1744)

New in ArangoDB 2.8.3 (Feb 25, 2016)

  • fixed AQL filter condition collapsing for deeply-nested cases, potentially enabling usage of indexes in some dedicated cases
  • added parentheses in AQL explain command output to correctly display precedence of logical and arithmetic operators
  • Foxx Model event listeners defined on the model are now correctly invoked by the Repository methods (issue #1665)
  • Deleting a Foxx service in the frontend should now always succeed even if the files no longer exist on the file system (issue #1358)
  • Routing actions loaded from the database no longer throw exceptions when trying to load other modules using "require"
  • The `org/arangodb/request` response object now sets a property `json` to the parsed JSON response body in addition to overwriting the `body` property when the request was made using the `json` option.
  • Improved Windows stability
  • Fixed a bug in the interactive API documentation that would escape slashes in document-handle fields. Document handles are now provided as separate fields for collection name and document key.

New in ArangoDB 2.8.2 (Feb 10, 2016)

  • the continuous replication applier will now prevent the master's WAL logfiles from being removed if they are still needed by the applier on the slave. This should help slaves that suffered from masters garbage collection WAL logfiles which would have been needed by the slave later.
  • added all-in-one function *setupReplication* to synchronize data from master to slave and start the continuous replication.
  • the *sync* and *syncCollection* functions now always start the data synchronization as an asynchronous server job. The call to *sync* or *syncCollection* will block until synchronization is either complete or has failed with an error. The functions will automatically poll the slave periodically for status updates.
  • fixed undefined behavior when explaining some types of AQL traversals, fixed display of some types of traversals in AQL explain output.

New in ArangoDB 2.8.1 (Jan 31, 2016)

  • improved AQL Pattern matching by allowing to specify a different traversal direction for one or many of the edge collections.
  • detect more types of transaction deadlocks early
  • fixed display of relational operators in traversal explain output
  • fixed undefined behavior in AQL function `PARSE_IDENTIFIER`
  • added "engines" field to Foxx services generated in the admin interface
  • added AQL function `IS_SAME_COLLECTION`:

New in ArangoDB 2.8.0 (Jan 28, 2016)

  • Avoid recursive locking.

New in ArangoDB 2.7.3 (Dec 21, 2015)

  • fixed disappearing of documents for collections transferred via `sync` or `syncCollection` if the collection was dropped right before synchronization and drop and (re-)create collection markers were located in the same WAL file
  • Foxx: moved Model and Repository back to non-ES6 "classes"
  • fixed an issue where overwriting the system sessions collection would break the web interface when authentication is enabled

New in ArangoDB 2.7.0 (Oct 25, 2015)

  • Fixed replication with a 2.6 replication configuration and issues with a 2.6 master
  • Raised default value of `--server.descriptors-minimum` to 1024
  • Allow Foxx apps to be installed underneath URL path `/_open/`, so they can be (intentionally) accessed without authentication.
  • Added *allowImplicit* sub-attribute in collections declaration of transactions. The *allowImplicit* attributes allows making transactions fail should they read-access a collection that was not explicitly declared in the *collections* array of the transaction.
  • Added "special" password ARANGODB_DEFAULT_ROOT_PASSWORD. If you pass ARANGODB_DEFAULT_ROOT_PASSWORD as password, it will read the password from the environment variable ARANGODB_DEFAULT_ROOT_PASSWORD

New in ArangoDB 2.6.5 (Aug 19, 2015)

  • added startup option `--database.throw-collection-not-loaded-error`
  • fixed busy wait loop in scheduler threads that sometimes consumed 100% CPU while waiting for events on connections closed unexpectedly by the client side
  • handle attribute `indexBuckets` when restoring collections via arangorestore. Previously the `indexBuckets` attribute value from the dump was ignored, and the server default value for `indexBuckets` was used when restoring a collection.
  • fixed "EscapeValue already set error" crash in V8 actions that might have occurred when cancelling V8-based operations.

New in ArangoDB 2.6.4 (Aug 15, 2015)

  • V8: Upgrade to version 4.1.0.27 - this is intended to be the stable version.

New in ArangoDB 2.6.2 (Jul 6, 2015)

  • fixed issue #1383: bindVars for HTTP API doesn't work with empty string
  • fixed handling of default values in Foxx manifest configurations
  • fixed handling of optional parameters in Foxx manifest configurations
  • fixed a reference error being thrown in Foxx queues when a function-based job type is used that is not available and no options object is passed to queue.push

New in ArangoDB 2.5.5 (Jun 2, 2015)

  • fixed vulnerability in JWT implementation.
  • fixed format string for reading /proc/pid/stat
  • take into account barriers used in different V8 contexts

New in ArangoDB 2.5.4 (May 18, 2015)

  • added startup option `--log.performance`: specifying this option at startup will log performance-related info messages, mainly timings via the regular logging mechanisms
  • cluster fixes

New in ArangoDB 2.5.3 (May 6, 2015)

  • Fix foxx app install when installed on a different drive on windows
  • issue #1322: strange AQL result
  • issue #1318: Inconsistent db._create() syntax
  • issue #1315: queries to a collection fail with an empty response if the collection contains specific JSON data
  • issue #1300: Make arangodump not fail if target directory exists but is empty
  • allow specifying higher values than SOMAXCONN for `--server.backlog-size`
  • Previously, arangod would not start when a `--server.backlog-size` value was specified that was higher than the platform's SOMAXCONN header value.
  • Now, arangod will use the user-provided value for `--server.backlog-size` and
  • pass it to the listen system call even if the value is higher than SOMAXCONN. If the user-provided value is higher than SOMAXCONN, arangod will log a warning on startup.
  • Fixed a cluster deadlock bug. Mark a thread that is in a RemoteBlock as
  • blocked to allow for additional dispatcher threads to be started.
  • Fix locking in cluster by using another ReadWriteLock class for collections.
  • Add a second DispatcherQueue for AQL in the cluster. This fixes a
  • cluster-AQL thread explosion bug.

New in ArangoDB 2.5.2 (Apr 16, 2015)

  • modules stored in _modules are automatically flushed when changed
  • added missing query-id parameter in documentation of HTTP DELETE `/_api/query` endpoint
  • added iterator for edge index in AQL queries, this change may lead to less edges being read when used together with a LIMIT clause
  • make graph viewer in web interface issue less expensive queries for determining a random vertex from the graph, and for determining vertex attributes
  • issue #1285: syntax error, unexpected $undefined near '@_to RETURN obj, this allows AQL bind parameter names to also start with underscores
  • moved /_api/query to C++
  • issue #1289: Foxx models created from database documents expose an internal method
  • added `Foxx.Repository#exists`
  • parallelise initialization of V8 context in multiple threads
  • fixed a possible crash when the debug-level was TRACE
  • cluster: do not initialize statistics collection on each coordinator, this fixes a race condition at startup
  • cluster: fix a startup race w.r.t. the _configuration collection
  • search for db:// JavaScript modules only after all local files have been considered, this speeds up the require command in a cluster considerably
  • general cluster speedup in certain areas

New in ArangoDB 2.5.1 (Mar 23, 2015)

  • added option `--database.ignore-logfile-errors`
  • INCOMPATIBLE CHANGE: make the arangod server refuse to start if during startup it finds a non-readable `parameter.json` file for a database or a collection.
  • datafiles and `parameter.json` files written by arangod are now created with read and write privileges for the arangod process user, and with read and write prileges for the arangod process group. Previously, these files were created with user read and write permissions only.
  • INCOMPATIBLE CHANGE: abort WAL recovery if one of the collection's datafiles cannot be opened
  • INCOMPATIBLE CHANGE: never try to raise the privileges after dropping them, this can lead to a race condition while running the recovery
  • fixed inefficiencies in `remove` methods of general-graph module
  • added option `--database.slow-query-threshold` for controlling the default AQL slow query threshold value on server start
  • add system error strings for windows on many places
  • rework service startup so we anounce 'RUNNING' only when we're finished starting.
  • use the windows eventlog for FATAL and ERROR - log messages
  • fix service handling in NSIS windows installer, specify human readable name
  • add the ICU_DATA environment variable to the fatal error messages
  • fixed issue #1265: arangod crashed with SIGSEGV
  • fixed issue #1241: Wildcards in examples

New in ArangoDB 2.5.0 (Mar 17, 2015)

  • Fix for downloading Foxx

New in ArangoDB 2.4.4 (Mar 2, 2015)

  • fixed the generation template for foxx apps. It now does not create deprecated functions anymore
  • add custom visitor functionality for `GRAPH_NEIGHBORS` function, too
  • increased default value of traversal option *maxIterations* to 100 times of its previous default value

New in ArangoDB 2.4.3 (Feb 9, 2015)

  • Fixed an error in Foxx routing which caused some apps that worked in 2.4.1 to fail with status 500: `undefined is not a function` errors in 2.4.2. This error was occurring due to seldom internal rerouting introduced by the malformed application handler.

New in ArangoDB 2.4.2 (Feb 4, 2015)

  • Added custom visitor functionality for AQL traversals
  • Improved number of results estimated for nodes of type EnumerateListNode and SubqueryNode in AQL explain output
  • Added AQL explain helper to explain arbitrary AQL queries
  • Enable use of indexes for certain AQL conditions with non-equality predicates, in case the condition(s) also refer to indexed attributes
  • Fixed spuriously occurring "collection not found" errors when running queries on local collections on a cluster DB server
  • Fixed upload of Foxx applications to the server for apps exceeding approx. 1 MB zipped.
  • Malformed Foxx applications will now return a more useful error when any route is requested.
  • Unhandled errors thrown in Foxx routes are now handled by the Foxx framework itself.
  • The Applications tab in web interface will now request development apps more often. So if you have a fixed a syntax error in your app it should always be visible after reload.

New in ArangoDB 2.4.1 (Jan 21, 2015)

  • improved WAL recovery output
  • fixed certain OR optimizations in AQL optimizer
  • better diagnostics for arangoimp
  • fixed invalid result of HTTP REST API method `/_admin/foxx/rescan`
  • fixed possible segmentation fault when passing a Buffer object into a V8 function as a parameter
  • updated AQB module to 1.8.0.

New in ArangoDB 2.4.0 (Jan 19, 2015)

  • updated AQB module to 1.7.0.
  • fixed V8 integration-related crashes
  • make `fs.move(src, dest)` also fail when both `src` and `dest` are existing directories. This ensures the same behavior of the move operation on different platforms.
  • fixed AQL insert operation for multi-shard collections in cluster
  • added optional return value for AQL data-modification queries.

New in ArangoDB 2.3.4 (Jan 17, 2015)

  • fixed cerberus path for MyArangoDB

New in ArangoDB 2.3.3 (Dec 18, 2014)

  • fixed error handling in instanciation of distributed AQL queries, this also fixes a bug in cluster startup with many servers
  • issue #1185: parse non-fractional JSON numbers with exponent (e.g. `4e-261`)
  • issue #1159: allow --server.request-timeout and --server.connect-timeout of 0

New in ArangoDB 2.3.2 (Dec 11, 2014)

  • fixed issue #1173: AQL Editor "Save current query" resets user password
  • fixed missing makeDirectory when fetching a Foxx application from a zip file
  • put in warning about default changed: fixed issue #1134: Change the default endpoint to localhost
  • fixed issue #1163: invalid fullCount value returned from AQL
  • fixed range operator precedence
  • limit default maximum number of plans created by AQL optimizer to 256 (from 1024)
  • make AQL optimizer not generate an extra plan if an index can be used, but modify existing plans in place
  • fixed AQL cursor ttl (time-to-live) issue Any user-specified cursor ttl value was not honored since 2.3.0.
  • fixed segfault in AQL query hash index setup with unknown shapes
  • fixed memleaks
  • added AQL optimizer rule for removing `INTO` from a `COLLECT` statement if not needed
  • fixed issue #1131: This change provides the `KEEP` clause for `COLLECT ... INTO`. The `KEEP` clause allows controlling which variables will be kept in the variable created by `INTO`. fixed issue #1147, must protect dispatcher ID for etcd

New in ArangoDB 2.3.1 (Dec 11, 2014)

  • recreate password if missing during upgrade
  • fixed issue #1126
  • fixed non-working subquery index optimizations
  • do not restrict summary of Foxx applications to 60 characters
  • fixed display of "required" path parameters in Foxx application documentation
  • added more optimizations of constants values in AQL FILTER conditions
  • fixed invalid or-to-in optimization for FILTERs containing comparisons with boolean values
  • fixed replication of `_graphs` collection
  • added AQL list functions `PUSH`, `POP`, `UNSHIFT`, `SHIFT`, `REMOVE_VALUES`, `REMOVE_VALUE`, `REMOVE_NTH` and `APPEND`
  • added AQL functions `CALL` and `APPLY` to dynamically call other functions
  • fixed AQL optimizer cost estimation for LIMIT node
  • prevent Foxx queues from permanently writing to the journal even when server is idle
  • fixed AQL COLLECT statement with INTO clause, which copied more variables than v2.2 and thus lead to too much memory consumption. This deals with #1107.
  • fixed AQL COLLECT statement, this concerned every COLLECT statement, only the first group had access to the values of the variables before the COLLECT statement. This deals with #1127.
  • fixed some AQL internals, where sometimes too many items were fetched from upstream in the presence of a LIMIT clause. This should generally improve performance.

New in ArangoDB 2.3.0 (Nov 26, 2014)

  • fixed syslog flags. `--log.syslog` is deprecated and setting it has no effect, `--log.facility` now works as described. Application name has been changed from `triagens` to `arangod`. It can be changed using `--log.application`. The syslog will only contain the actual log message. The datetime prefix is omiited.
  • fixed deflate in SimpleHttpClient
  • hide system applications in **Applications** tab by default
  • added HTTP REST API for managing tasks (`/_api/tasks`)
  • allow passing character lists as optional parameter to AQL functions `TRIM`, `LTRIM` and `RTRIM`
  • added AQL string functions `LTRIM`, `RTRIM`, `FIND_FIRST`, `FIND_LAST`, `SPLIT`, `SUBSTITUTE`
  • added AQL functions `ZIP`, `VALUES` and `PERCENTILE`
  • made AQL functions `CONCAT` and `CONCAT_SEPARATOR` work with list arguments
  • dynamically create extra dispatcher threads if required
  • fixed issue #1097: schemas in the API docs no longer show required properties as optional

New in ArangoDB 2.2.6 (Oct 22, 2014)

  • fixed issue #972: Compilation Issue
  • fixed issue #743: temporary directories are now unique and one can read off the tool that created them, if empty, they are removed atexit

New in ArangoDB 2.2.5 (Oct 13, 2014)

  • fixed issue #961: allow non-JSON values in undocument request bodies
  • fixed issue 1028: libicu is now statically linked
  • fixed cached lookups of collections on the server, which may have caused spurious problems after collection rename operations

New in ArangoDB 2.2.4 (Oct 3, 2014)

  • fixed accessing `_from` and `_to` attributes in `collection.byExample` and `collection.firstExample`. These internal attributes were not handled properly in the mentioned functions, so searching for them did not always produce documents
  • fixed issue #1030: arangoimp 2.2.3 crashing, not logging on large Windows CSV file
  • fixed issue #1025: Traversal not as expected in undirected graph
  • fixed issue #1020. This requires re-introducing the startup option `--database.force-sync-properties`.
  • fixed issue #1016: AQL editor bug
  • fixed issue #1014: WITHIN function returns wrong distance
  • fixed AQL shortest path calculation in function `GRAPH_SHORTEST_PATH` to return complete vertex objects instead of just vertex ids
  • allow changing of attributes of documents stored in server-side JavaScript variables
  • fixed issue #997: arangoimp apparently doesn't support files >2gig on Windows. Large file support (requires using `_stat64` instead of `stat`) is now supported on Windows

New in ArangoDB 2.2.3 (Sep 4, 2014)

  • added `around` for Foxx controller
  • added `type` option for HTTP API `GET /_api/document?collection=...`
  • properly capitalize HTTP response header field names in case the `x-arango-async` HTTP header was used in a request.
  • fixed several documentation issues
  • speedup for several general-graph functions, AQL functions starting with `GRAPH_` and traversals

New in ArangoDB 2.2.2 (Aug 9, 2014)

  • allow storing non-reserved attribute names starting with an underscore
  • fix conversion of JavaScript String, Number and Boolean objects to JSON.
  • fixed a race condition on task registration (i.e. `require("org/arangodb/tasks").register()`)
  • changed run-tests.sh to execute all suitable tests.
  • switch to new version of gyp
  • fixed upgrade button

New in ArangoDB 2.2.1 (Jul 25, 2014)

  • Fixed issue with --check-version: when creating a new database the check failed
  • issue #947 Foxx applicationContext missing some properties
  • Added startup option `--wal.suppress-shape-information`
  • Added optional `ttl` attribute to specify result cursor expiration for HTTP API method `POST /_api/cursor`
  • Reported by Christian Neubauer): The problem was that in Google's V8, signed and unsigned chars are not always declared cleanly.
  • Fixed a bug with the replication client. In the case of single document transactions the collection was not write locked.

New in ArangoDB 2.2.0 (Jul 14, 2014)

  • The replication methods `logger.start`, `logger.stop` and `logger.properties` are no-ops in ArangoDB 2.2 as there is no separate replication logger anymore. Data changes are logged into the write-ahead log in ArangoDB 2.2, and not separately by the replication logger. The replication logger object is still there in ArangoDB 2.2 to ensure backwards-compatibility, however, logging cannot be started, stopped or configured anymore. INCOMPATIBLE CHANGE: replication of transactions has changed. Previously, transactions were logged on a master in one big block and shipped to a slave in one block, too. Now transactions will be logged and replicated as separate entries, allowing transactions to be bigger and also ensure replication progress. INCOMPATIBLE CHANGE: the figures reported by the `collection.figures` method now only reflect documents and data contained in the journals and datafiles of collections. Documents or deletions contained only in the write-ahead log will not influence collection figures until the write-ahead log garbage collection kicks in. The figures for a collection might therefore underreport the total resource usage of a collection. Additionally, the attributes `lastTick` and `uncollectedLogfileEntries` have been added to the result of the `figures` operation and the HTTP API method `PUT /_api/collection/figures`
  • added `insert` method as an alias for `save`.
  • added support for data-modification AQL queries
  • added AQL keywords `INSERT`, `UPDATE`, `REPLACE` and `REMOVE` (and `WITH`) to support data-modification AQL queries. disallow storing of JavaScript objects that contain JavaScript native objects of type `Date`, `Function`, `RegExp` or `External`. The replication methods `logger.start`, `logger.stop` and `logger.properties` are no-ops in ArangoDB 2.2 as there is no separate replication logger anymore. Data changes are logged into the write-ahead log in ArangoDB 2.2, and not separately by the replication logger. The replication logger object is still there in ArangoDB 2.2 to ensure backwards-compatibility, however, logging cannot be started, stopped or configured anymore. Using any of these methods will do nothing. INCOMPATIBLE CHANGE: replication of transactions has changed. Previously, transactions were logged on a master in one big block and shipped to a slave in one block, too. Now transactions will be logged and replicated as separate entries, allowing transactions to be bigger and also ensure replication progress. INCOMPATIBLE CHANGE: the figures reported by the `collection.figures` method now only reflect documents and data contained in the journals and datafiles of collections. Documents or deletions contained only in the write-ahead log will not influence collection figures until the write-ahead log garbage collection kicks in. The figures for a collection might therefore underreport the total resource usage of a collection.
  • added `insert` method as an alias for `save`.
  • added support for data-modification AQL queries
  • added AQL keywords `INSERT`, `UPDATE`, `REPLACE` and `REMOVE` (and `WITH`) to support data-modification AQL queries. disallow storing of JavaScript objects that contain JavaScript native objects of type `Date`, `Function`, `RegExp` or `External`.
  • honor startup option `--server.disable-statistics` when deciding whether or not to start periodic statistics collection jobs.
  • removed startup option `--random.no-seed`. This option had no effect in previous versions of ArangoDB and was thus removed.
  • removed startup option `--database.remove-on-drop`. This option was used for debugging only.
  • removed startup option `--database.force-sync-properties`. This option is now superfluous as collection properties are now stored in the write-ahead log.
  • introduced write-ahead log
  • removed startup option `--server.disable-replication-logger`. This option is superfluous in ArangoDB 2.2. There is no dedicated replication logger in ArangoDB 2.2. There is now always the write-ahead log, and it is also used as the server's replication log. Specifying the startup option `--server.disable-replication-logger` will do nothing in ArangoDB 2.2, but the option should not be used anymore as it might be removed in a future version.
  • changed behavior of replication logger. There is no dedicated replication logger in ArangoDB 2.2 as there is the write-ahead log now. The existing APIs for starting and stopping the replication logger still exist in ArangoDB 2.2 for downwards-compatibility, but calling the start or stop operations are no-ops in ArangoDB 2.2. When querying the replication logger status via the API, the server will always report that the replication logger is running. Configuring the replication logger is a no-op in ArangoDB 2.2, too. Changing the replication logger configuration has no effect. Instead, the write-ahead log configuration can be changed.
  • removed MRuby integration for arangod
  • reclaim index memory when last document in collection is deleted inlined and optimized functions in hash indexes
  • added AQL TRANSLATE function
  • fixed datafile debugger
  • fixed check-version for empty directory
  • moved try/catch block to the top of routing chain
  • added mountedApp function for foxx-manager
  • fixed issue #883: arango 2.1 - when starting multi-machine cluster, UI web does not change to cluster overview
  • fixed dfdb: should not start any other V8 threads
  • cleanup of version-check, added module org/arangodb/database-version, added --check-version option
  • fixed issue #881: [2.1.0] Bombarded (every 10 sec or so) with "WARNING format string is corrupt" when in non-system DB Dashboard
  • specialized primary index implementation to allow faster hash table rebuilding and reduce lookups in datafiles for the actual value of `_key`.
  • issue #862: added `--overwrite` option to arangoimp
  • removed number of property lookups for documents during AQL queries that access documents
  • prevent buffering of long print results in arangosh's and arangod's print command. removed sorting of attribute names for use in a collection's shaper
  • fixed a bug in arangodump which got the collection name in _from and _to attributes of edges wrong (all were "_unknown")
  • fixed a bug in arangorestore which did not recognise wrong _from and _to attributes of edges
  • improved error detection and reporting in arangorestore

New in ArangoDB 2.1.1 (Jun 9, 2014)

  • fixed random generation under MacOSX
  • fixed issue #883: arango 2.1 - when starting multi-machine cluster, UI web does not change to cluster overview
  • fixed dfdb: should not start any other V8 threads
  • cleanup of version-check, added module org/arangodb/database-version, added --check-version option
  • fixed issue #881: [2.1.0] Bombarded (every 10 sec or so) with "WARNING format string is corrupt" when in non-system DB Dashboard

New in ArangoDB 2.1.0 (May 30, 2014)

  • implemented upgrade procedure for clusters
  • fixed communication issue with agency which prevented reconnect after an agent failure
  • fixed cluster dashboard in the case that one but not all servers in the cluster are down
  • fixed a bug with coordinators creating local database objects in the wrong order (_system needs to be done successfully first), which lead to a coordinator on strike
  • improved cluster dashboard

New in ArangoDB 2.0.7 (May 6, 2014)

  • issue #839: Foxx Manager missing "unfetch"
  • fixed a race condition at startup: this fixes undefined behavior in case the logger was involved directly at startup, before the logger initialization code was called. This should have occurred only for code that was executed before the invocation of main(), e.g. during ctor calls of statically defined objects.
  • fixed permission problems under Windows

New in ArangoDB 2.0.6 (Apr 24, 2014)

  • fixed issue #835: arangosh doesn't show correct database name

New in ArangoDB 2.0.5 (Apr 24, 2014)

  • added cancelation for async jobs
  • upgraded to new gyp for V8

New in ArangoDB 2.0.4 (Apr 15, 2014)

  • Fixed cluster authentication front-end issues for Firefox and IE, there are still problems with Chrome

New in ArangoDB 2.0.3 (Apr 14, 2014)

  • fixed AQL optimizer bug
  • fixed front-end issues
  • added password change dialog

New in ArangoDB 2.0.2 (Apr 7, 2014)

  • during cluster startup, do not log (somewhat expected) connection errors with log level error, but with log level info
  • fixed dashboard modals
  • fixed connection check for cluster planning front end: firefox does not support async:false
  • document how to persist a cluster plan in order to relaunch an existing cluster later
  • added REST API method HTTP GET `/_api/job/job-id` to query the status of an async job without potentially fetching it from the list of done jobs
  • fixed non-intuitive behaviour in jobs API: previously, querying the status of an async job via the API HTTP PUT `/_api/job/job-id` removed a currently executing async job from the list of queryable jobs on the server. Now, when querying the result of an async job that is still executing, the job is kept in the list of queryable jobs so its result can be fetched by a subsequent request.
  • improve documentation of db._create and explain the rules and limitations following from the choice of shardKeys for sharded collections with more than one shard

New in ArangoDB 2.0.1 (Apr 2, 2014)

  • make ArangoDB not send back a `WWW-Authenticate` header to a client in case the client sends the `X-Omit-WWW-Authenticate` HTTP header. This is done to prevent browsers from showing their built-in HTTP authentication dialog for AJAX requests that require authentication. ArangoDB will still return an HTTP 401 (Unauthorized) if the request doesn't contain valid credentials, but it will omit the `WWW-Authenticate` header, allowing clients to bypass the browser's authentication dialog.
  • added `changePassword` attribute for users
  • fixed non-working "save" button in collection edit view of web interface clicking the save button did nothing. one had to press enter in one of the input fields to send modified form data
  • fixed V8 compile error on MacOS X
  • prevent `body length: -9223372036854775808` being logged in development mode for some Foxx HTTP responses
  • fixed several bugs in web interface dashboard
  • fixed issue #783: coffee script not working in manifest file
  • fixed issue #781: Cant save current query from AQL editor ui
  • bumped version in `X-Arango-Version` compatibility header sent by arangosh and other client tools from `1.5` to `2.0`.
  • fixed startup options for arango-dfdb, added details option for arango-dfdb
  • fixed display of missing error messages and codes in arangosh
  • when creating a collection via the web interface, the collection type was always "document", regardless of the user's choice
  • Fixed issues in arango-dfdb:
  • the dfdb was not able to unload certain system collections, so these couldn't be inspected with the dfdb sometimes. Additionally, it did not truncate corrupt markers from datafiles under some circumstances

New in ArangoDB 2.0.0 RC 2 (Mar 12, 2014)

  • Fixed cluster authorization

New in ArangoDB 2.0.0 RC1 (Mar 4, 2014)

  • added sharding - more detailed documentation on the sharding and cluster features can be found in the user manual, section **Sharding**
  • INCOMPATIBLE CHANGE: using complex values in AQL filter conditions with operators other than equality will disable usage of skiplist indexes for filter evaluation. For example, the following queries will be affected by change:
  • FOR doc IN docs FILTER doc.value < { foo: "bar" } RETURN doc FOR doc IN docs FILTER doc.value >= [ 1, 2, 3 ] RETURN doc
  • The following queries will not be affected by the change: FOR doc IN docs FILTER doc.value == 1 RETURN doc FOR doc IN docs FILTER doc.value == "foo" RETURN doc FOR doc IN docs FILTER doc.value == [ 1, 2, 3 ] RETURN doc FOR doc IN docs FILTER doc.value == { foo: "bar" } RETURN doc
  • INCOMPATIBLE CHANGE: removed undocumented method `collection.saveOrReplace` this feature was never advertised nor documented nor tested.
  • INCOMPATIBLE CHANGE: removed undocumented REST API method `/_api/simple/BY-EXAMPLE-HASH` this feature was never advertised nor documented nor tested.
  • added explicit startup parameter `--server.reuse-address`. This flag can be used to control whether sockets should be acquired with the SO_REUSEADDR flag. Regardless of this setting, sockets on Windows are always acquired using the SO_EXCLUSIVEADDRUSE flag.
  • removed undocumented REST API method GET `/_admin/database-name`
  • added user validation API at POST `/_api/user/`
  • slightly improved users management API in `/_api/user`:
  • Previously, when creating a new user via HTTP POST, the username needed to be passed in an attribute `username`. When users were returned via this API, the usernames were returned in an attribute named `user`. This was slightly confusing and was changed in 1.5 as follows:
  • when adding a user via HTTP POST, the username can be specified in an attribute `user`. If this attribute is not used, the API will look into the attribute `username` as before and use that value. - when users are returned via HTTP GET, the usernames are still returned in an attribute `user`.
  • This change should be fully downwards-compatible with the previous version of the API.
  • added AQL SLICE function to extract slices from lists
  • removed check-server binary
  • made module loader more node compatible
  • the startup option `--javascript.package-path` for arangosh is now deprecated and does nothing. Using it will not cause an error, but the option is ignored.
  • added coffee script support
  • Several UI improvements.
  • Exchanged icons in the graphviewer toolbar
  • always start networking and HTTP listeners when starting the server (even in console mode)
  • allow vertex and edge filtering with user-defined functions in TRAVERSAL, TRAVERSAL_TREE and SHORTEST_PATH AQL functions:
  • // using user-defined AQL functions for edge and vertex filtering RETURN TRAVERSAL(friends, friendrelations, "friends/john", "outbound", { followEdges: "myfunctions::checkedge", filterVertices: "myfunctions::checkvertex" })
  • // using the following custom filter functions var aqlfunctions = require("org/arangodb/aql/functions"); aqlfunctions.register("myfunctions::checkedge", function (config, vertex, edge, path) { return (edge.type !== 'dislikes'); // don't follow these edges }, false);
  • aqlfunctions.register("myfunctions::checkvertex", function (config, vertex, path) { if (vertex.isDeleted || ! vertex.isActive) { return [ "prune", "exclude" ]; // exclude these and don't follow them } return [ ]; // include everything else }, false);
  • fail if invalid `strategy`, `order` or `itemOrder` attribute values are passed to the AQL TRAVERSAL function. Omitting these attributes is not considered an error, but specifying an invalid value for any of these attributes will make an AQL query fail.
  • issue #751: Create database through API should return HTTP status code 201
  • By default, the server now returns HTTP 201 (created) when creating a new database successfully. To keep compatibility with older ArangoDB versions, the startup parameter `--server.default-api-compatibility` can be set to a value of `10400` to indicate API compatibility with ArangoDB 1.4. The compatibility can also be enforced by setting the `X-Arango-Version` HTTP header in a client request to this API on a per-request basis.
  • allow direct access from the `db` object to collections whose names start with an underscore (e.g. db._users).
  • Previously, access to such collections via the `db` object was possible from arangosh, but not from arangod (and thus Foxx and actions). The only way to access such collections from these places was via the `db._collection()` workaround.
  • allow `\n` (as well as `\r\n`) as line terminator in batch requests sent to `/_api/batch` HTTP API.
  • use `--data-binary` instead of `--data` parameter in generated cURL examples
  • issue #703: Also show path of logfile for fm.config()
  • issue #675: Dropping a collection used in "graph" module breaks the graph
  • added "static" Graph.drop() method for graphs API
  • fixed issue #695: arangosh server.password error
  • use pretty-printing in `--console` mode by defaul
  • added `check-server` binary for testing
  • simplified ArangoDB startup options:
  • Some startup options are now superfluous or their usage is simplified. The following options have been changed:
  • `--javascript.modules-path`: this option has been removed. The modules paths are determined by arangod and arangosh automatically based on the value of `--javascript.startup-directory`.
  • If the option is set on startup, it is ignored so startup will not abort with an error `unrecognized option`.
  • `--javascript.action-directory`: this option has been removed. The actions directory is determined by arangod automatically based on the value of `--javascript.startup-directory`.
  • If the option is set on startup, it is ignored so startup will not abort with an error `unrecognized option`.
  • `--javascript.package-path`: this option is still available but it is not required anymore to set the standard package paths (e.g. `js/npm`). arangod will automatically use this standard package path regardless of whether it was specified via the options.
  • It is possible to use this option to add additional package paths to the standard value.
  • Configuration files included with arangod are adjusted accordingly.
  • layout of the graphs tab adapted to better fit with the other tabs
  • database selection is moved to the bottom right corner of the web interface
  • removed priority queue index type - this feature was never advertised nor documented nor tested.
  • display internal attributes in document source view of web interface
  • removed separate shape collections:
  • When upgrading to ArangoDB 1.5, existing collections will be converted to include shapes and attribute markers in the datafiles instead of using separate files for shapes.
  • When a collection is converted, existing shapes from the SHAPES directory will be written to a new datafile in the collection directory, and the SHAPES directory will be removed afterwards.
  • This saves up to 2 MB of memory and disk space for each collection (savings are higher, the less different shapes there are in a collection). Additionally, one less file descriptor per opened collection will be used.
  • When creating a new collection, the amount of sync calls may be reduced. The same may be true for documents with yet-unknown shapes. This may help performance in these cases.
  • added AQL functions `NTH` and `POSITION`
  • added signal handler for arangosh to save last command in more cases
  • added extra prompt placeholders for arangosh: - `%e`: current endpoint - `%u`: current user
  • added arangosh option `--javascript.gc-interval` to control amount of garbage collection performed by arangosh
  • fixed issue #651: Allow addEdge() to take vertex ids in the JS library
  • removed command-line option `--log.format`- In previous versions, this option did not have an effect for most log messages, so it got removed.
  • removed C++ logger implementation - Logging inside ArangoDB is now done using the LOG_XXX() macros. The LOGGER_XXX() macros are gone.
  • added collection status "loading"

New in ArangoDB 1.4.11 (Mar 1, 2014)

  • added SHORTEST_PATH AQL function: this calculates the shortest paths between two vertices, using the Dijkstra algorithm, employing a min-heap. By default, ArangoDB does not know the distance between any two vertices and will use a default distance of 1.
  • fixed bug in Graph.pathTo function
  • fixed small memleak in AQL optimiser
  • fixed access to potentially uninitialised variable when collection had a cap constraint

New in ArangoDB 1.4.9 (Feb 14, 2014)

  • return a document's current etag in response header for HTTP HEAD requests on documents that return an HTTP 412 (precondition failed) error. This allows retrieving the document's current revision easily.
  • added AQL function `SKIPLIST` to directly access skiplist indexes from AQL
  • added command-line option `--server.disable-authentication-unix-sockets`
  • fail if invalid `strategy`, `order` or `itemOrder` attribute values are passed to the AQL TRAVERSAL function. Omitting these attributes is not considered an error, but specifying an invalid value for any of these attributes will make an AQL query fail.
  • call global arangod instance destructor on shutdown
  • issue #755: TRAVERSAL does not use strategy, order and itemOrder options
  • allow vertex and edge filtering with user-defined functions in TRAVERSAL, TRAVERSAL_TREE and SHORTEST_PATH AQL functions.
  • issue #748: add vertex filtering to AQL's TRAVERSAL[_TREE]() function

New in ArangoDB 1.4.8 (Feb 1, 2014)

  • install foxx apps in the web interface

New in ArangoDB 1.4.7 (Jan 24, 2014)

  • issue #744: Add usage example arangoimp from Command line
  • issue #738: added __dirname, __filename pseudo-globals. Fixes #733. (@by pluma)
  • mount all Foxx applications in system apps directory on startup

New in ArangoDB 1.4.6 (Jan 21, 2014)

  • issue #736: AQL function to parse collection and key from document handle
  • added fm.rescan() method for Foxx-Manager
  • fixed issue #734: foxx cookie and route problem
  • added method `fm.configJson` for arangosh
  • include `startupPath` in result of API `/_api/foxx/config`

New in ArangoDB 1.4.5 (Jan 16, 2014)

  • fixed issue #726: Alternate Windows Install Method
  • fixed issue #716: dpkg -P doesn't remove everything
  • fixed bugs in description of HTTP API `_api/index`
  • fixed issue #732: Rest API GET revision number
  • added missing documentation for several methods in HTTP API `/_api/edge/...`
  • fixed typos in description of HTTP API `_api/document`
  • defer evaluation of AQL subqueries and logical operators (lazy evaluation)
  • Updated font in WebFrontend, it now contains a version that renders properly on windows
  • generally allow function return values as call parameters to AQL functions
  • fixed potential deadlock in global context method execution
  • added override file "arangod.conf.local" (and co)

New in ArangoDB 1.4.4 (Dec 27, 2013)

  • uid and gid are now set in the scripts, there is no longer a separate config file for arangod when started from a script
  • foxx-manager is now an alias for arangosh
  • arango-dfdb is now an alias for arangod, moved from bin to sbin
  • changed from readline to linenoise for Windows
  • added --install-service and --uninstall-service for Windows
  • removed --daemon and --supervisor for Windows
  • arangosh and arangod now uses the config-file which maps the binary name, i. e. if you rename arangosh to foxx-manager it will use the config file foxx-manager.conf
  • fixed lock file for Windows
  • fixed issue #711, #687: foxx-manager throws internal errors
  • added `--server.ssl-protocol` option for client tools this allows connecting from arangosh, arangoimp, arangoimp etc. to an ArangoDB server that uses a non-default value for `--server.ssl-protocol`. The default value for the SSL protocol is 4 (TLSv1). If the server is configured to use a different protocol, it was not possible to connect to it with the client tools.
  • added more detailed request statistics. This adds the number of async-executed HTTP requests plus the number of HTTP requests per individual HTTP method type.
  • added `--force` option for arangorestore this option allows continuing a restore operation even if the server reports errors in the middle of the restore operation
  • better error reporting for arangorestore in case the server returned an HTTP error, arangorestore previously reported this error as `internal error` without any details only. Now server-side errors are reported by arangorestore with the server's error message
  • include more system collections in dumps produced by arangodump previously some system collections were intentionally excluded from dumps, even if the dump was run with `--include-system-collections`. for example, the collections `_aal`, `_modules`, `_routing`, and `_users` were excluded. This makes sense in a replication context but not always in a dump context. When specifying `--include-system-collections`, arangodump will now include the above- mentioned collections in the dump, too. Some other system collections are still excluded even when the dump is run with `--include-system-collections`, for example `_replication` and `_trx`.
  • fixed issue #701: ArangoStatement undefined in arangosh
  • fixed typos in configuration files

New in ArangoDB 1.4.3 (Nov 26, 2013)

  • fixed a segfault in the AQL optimiser, occurring when a constant non-list value was used on the right-hand side of an IN operator that had a collection attribute on the left-hand side
  • issue #662: Fixed access violation errors (crashes) in the Windows version, occurring under some circumstances when accessing databases with multiple clients in parallel
  • fixed issue #681: Problem with ArchLinux PKGBUILD configuration

New in ArangoDB 1.4.2 (Nov 26, 2013)

  • ported Windows version to use native Windows API SRWLocks (slim read-write locks) and condition variables instead of homemade versionsfixed issue #662: ArangoDB on Windows hanging
  • fixed file-based logging in Windows
  • fixed startup of server in daemon mode (`--daemon` startup option)
  • fixed a segfault in the AQL optimiser
  • issue #671: Method graph.measurement does not exist
  • changed Windows condition variable implementation to use Windows native condition variables added documentation for JavaScript traversals
  • added --code-page command-line option for Windows version of arangosh
  • fixed a problem when creating edges via the web interface.
  • fixed a caching problem in arangosh: if a collection was created using the web interface, and then removed via arangosh, arangosh did not actually drop the collection due to caching.
  • fixed ALT-introduced characters for arangosh console input on Windows
  • fixed issue #665: Hash/skiplist combo madness
  • fixed issue #664: ArangoDB installer on windows requires drive c:
  • partly fixed issue #662: ArangoDB on Windows hanging
  • fixed issue #660: updated documentation on indexes

New in ArangoDB 1.4.1 (Nov 12, 2013)

  • Performance improvements for skip-list deletes

New in ArangoDB 1.4.0 (Nov 1, 2013)

  • fixed issue #648: /batch API is missing from Web Interface API Docummentation (Swagger)
  • fixed issue #647: Icon tooltips missing
  • fixed issue #646: index creation in web interface
  • fixed issue #645: Allow jumping from edge to linked vertices
  • merged PR for issue #643: Some minor corrections and a link to "Downloads"
  • fixed issue #642: Completion of error handling
  • fixed issue #639: compiling v1.4 on maverick produces warnings on -Wstrict-null-sentinel
  • fixed issue #634: Web interface bug: Escape does not always propagate
  • fixed issue #620: added startup option `--server.default-api-compatibility` This adds the following changes to the ArangoDB server and clients: the server provides a new startup option `--server.default-api-compatibility`. This option can be used to determine the compatibility of (some) server API return values. The value for this parameter is a server version number, calculated as follows: `10000 major + 100 minor` (e.g. `10400` for ArangoDB 1.3). The default value is `10400` (1.4), the minimum allowed value is `10300` (1.3). When setting this option to a value lower than the current server version, the server might respond with old-style results to "old" clients, increasing compatibility with "old" (non-up-to-date) clients.
  • the server will on each incoming request check for an HTTP header `x-arango-version`. Clients can optionally set this header to the API version number they support. For example, if a client sends the HTTP header`x-arango-version: 10300`, the server will pick this up and might send ArangoDB1.3-style responses in some situations.
  • Setting either the startup parameter or using the HTTP header (or both) allows running "old" clients with newer versions of ArangoDB, without having to adjust the clients too much.
  • the `location` headers returned by the server for the APIs `/_api/document/...` and `/_api/collection/...` will have different values depending on the used API version. If the API compatibility is `10300`, the `location` headers returned will look like this: location: /_api/document/.... whereas when an API compatibility of `10400` or higher is used, the `location` headers will look like this: location: /_db//_api/document/... Please note that even in the presence of this, old API versions still may not be supported forever by the server.
  • fixed issue #643: Some minor corrections and a link to "Downloads" by @frankmayer
  • started issue #642: Completion of error handling
  • fixed issue #639: compiling v1.4 on maverick produces warnings on -Wstrict-null-sentinel
  • fixed issue #621: Standard Config needs to be fixed
  • added function to manage indexes (web interface)
  • improved server shutdown time by signalling shutdown to applicationserver, logging, cleanup and compactor threads
  • added foxx-manager `replace` command
  • added foxx-manager `installed` command (a more intuitive alias for `list`)
  • fixed issue #617: Swagger API is missing '/_api/version'
  • fixed issue #615: Swagger API: Some commands have no parameter entry forms
  • fixed issue #614: API : Typo in : Request URL /_api/database/current
  • fixed issue #609: Graph viz tool - different background color
  • fixed issue #608: arangosh config files - eventually missing in the manual
  • fixed issue #607: Admin interface: no core documentation
  • fixed issue #603: Aardvark Foxx App Manager
  • fixed a bug in type-mapping between AQL user functions and the AQL layer.
  • create less system collections when creating a new database

New in ArangoDB 1.4.0 Alpha 2 (Sep 11, 2013)

  • Introduced `--server.database` option for arangosh, arangoimp, and arangob.
  • Added basic multi database support (alpha)
  • Foxx now excludes files starting with . (dot) when bundling assets
  • Made the web interface a Foxx application
  • Changed User-Agent value sent by arangoimp, arangosh, and arangod from "VOC-Agent" to "ArangoDB"
  • Changed journal file creation behavior as follows:
  • Added method `collection.rotate()`
  • Changed compaction to merge small datafiles together (up to 3 datafiles are merged in a compaction run)added AQL MINUS function
  • Added AQL UNION_DISTINCT function (more efficient than combination of `UNIQUE(UNION())`)
  • Updated mruby to 2013-08-22
  • Issue #587: Add db._create() in help for startup arangosh
  • Issue #586: Share a link on installation instructions in the User Manual
  • Issue #585: Bison 2.4 missing on Mac for custom build
  • Issue #584: Web interface images broken in devel
  • Issue #583: Small documentation update
  • Issue #581: Parameter binding for attributes
  • Issue #580: Small improvements (by @guidoreina)
  • Issue #577: Missing documentation for collection figures in implementor manual
  • Issue #576: Get disk usage for collections and graphsIssue #575: installing devel version on mac (low prio)
  • Issue #574: Documentation (POST /_admin/routing/reload)
  • Issue #558: HTTP cursors, allow count to ignore LIMIT

New in ArangoDB 1.3.3 (Aug 29, 2013)

  • updated mruby to 2013-08-22
  • fixed HTTP basic authentication with password containing the special characters ':' and '\'
  • issue #570: updateFishbowl() fails once
  • updated and fixed generated examples
  • issue #559: added Foxx documentation to user manual
  • added missing error reporting for errors that happened during import of edges

New in ArangoDB 1.4.0 Alpha 1 (Aug 5, 2013)

  • dded replication. check online manual for details.
  • added server startup options `--server.disable-replication-logger` and `--server.disable-replication-applier`
  • removed action deployment tool, this now handled with Foxx and its manager or by kaerus node utility
  • fixed a server crash when using byExample / firstExample inside a transaction and the collection contained a usable hash/skiplist index for the example
  • defineHttp now only expects a single context
  • added collection detail dialog (web interface). Shows collection properties, figures (datafiles, journals, attributes, etc.) and indexes.
  • added documents filter (web interface): Allows searching for documents based on attribute values. One or many filter conditions can be defined, using comparison operators such as '==', '

New in ArangoDB 1.3.2 (Aug 5, 2013)

  • Features and improvements:
  • Changes to the Datafile Structure
  • Rapid API Development with FOXX
  • Transactions: ArangoDB provides server-side transactions that allow executing multi-document and even multi-collection operations with ACID guarantees.
  • New Administration Interface: ArangoDB 1.3 comes with a new administration front-end. The front-end is now based on backbone and uses repl.it, which allows for instance line editing when using the browser based ArangoDB shell.
  • New Server Statistics
  • AQL extensions: It is now possible to extend AQL with user-defined functions. These functions need to be written in Javascript, and be registered before usage in an AQL query.
  • Node Modules and Packages: ArangoDB 1.3 supports some of modules and packages from node. The most important module is maybe the Buffer support, which allows to handle binary data in JavaScript.
  • Miscelleanous changes:
  • Added server startup option --database.force-sync-properties to force syncing of collection properties on collection creation, deletion and on collection properties change.
  • ArangoDB will now reject saving documents with an invalid "type".
  • Changed return value of REST API method /_admin/log,
  • Extended output of server version and components for REST APIs /_admin/version and /_api/version.
  • Extended output for REST API /_api/collection//figures.

New in ArangoDB 1.3.2 (Jun 22, 2013)

  • fixed memleak in internal.download()
  • made the shape-collection journal size adaptive: if too big shapes come in, a shape journal will be created with a big-enough size automatically. the maximum size of a shape journal is still restricted, but to a very big value that should never be reached in practice.
  • fixed a segfault that occurred when inserting documents with a shape size bigger than the default shape journal size (2MB)
  • fixed a locking issue in collection.truncate()
  • fixed value overflow in accumulated filesizes reported by collection.figures()
  • issue #545: AQL FILTER unnecessary (?) loop
  • issue #549: wrong return code with --daemon

New in ArangoDB 1.3.1 (May 25, 2013)

  • removed currently unused _ids collection
  • issue #530: ReferenceError: ArangoError is not a constructor
  • issue #535: Problem with AQL user functions javascript API
  • set --javascript.app-path for test execution to prevent startup error
  • issue #532: Graph _edgesCache returns invalid data?
  • issue #531: Arangod errors
  • issue #529: Really weird transaction issue
  • fixed usage of --temp-path in aranogd and arangosh

New in ArangoDB 1.3.0 (May 11, 2013)

  • fixed problem on restart ("datafile-xxx is not sealed") when server was killed during a compaction run
  • fixed leak when using cursors with very small batchSize
  • issue #508: `unregistergroup` function not mentioned in http interface docs
  • issue #507: GET /_api/aqlfunction returns code inside parentheses
  • fixed issue #489: Bug in aal.install
  • fixed issue 505: statistics not populated on Mac OS

New in ArangoDB 1.3.0 RC 1 (Apr 25, 2013)

  • updated documentation for 1.3.0
  • added node modules and npm packages

New in ArangoDB 1.3.0 Alpha 2 (Apr 15, 2013)

  • added transaction support
  • switched to semantic versioning (at least for alpha & alpha naming)
  • added saveOrReplace() for server-side JS

New in ArangoDB 1.2.2 (Apr 13, 2013)

  • fixed save of objects with common sub-objects
  • issue #459: fulltext internal memory allocation didn't scale well This fix improves loading times for collections with fulltext indexes that have lots of equal words indexed.
  • issue #212: auto-increment support
  • issue #457: invalid string value in web interface
  • fixed `ArangoStatement.explain()` method with bind variables
  • fixed misleading "cursor not found" error message in arangosh that occurred when `count()` was called for client-side cursors
  • fixed handling of empty attribute names, which may have crashed the server under certain circumstances before
  • fixed usage of invalid pointer in error message output when index description could not be opened

New in ArangoDB 1.3 Alpha 1 (Apr 6, 2013)

  • cleanup of Module, Package, ArangoApp and modules "internal", "fs", "console"
  • use Error instead of string in throw to allow stack-trace
  • issue #454: error while creation of Collection
  • make `collection.count()` not recalculate the number of documents on the fly, but use some internal document counters. This will work at least for non-transactional collections.
  • issue #457: invalid string value in web interface
  • make datafile id (datafile->_fid) identical to the numeric part of the filename. E.g. the datafile `journal-123456.db` will now have a datafile marker with the same fid (i.e. `123456`) instead of a different value. This change will only affect datafiles that are created with 1.3 and not any older files. The intention behind this change is to make datafile debugging easier.
  • consistently discard document attributes with reserved names (system attributes) but without any known meaning, for example `_test`, `_foo`, ... Previously, these attributes were saved with the document regularly in some cases, but were discarded in other cases. Now these attributes are discarded consistently. "Real" system attributes such as `_key`, `_from`, `_to` are not affected and will work as before. Additionally, attributes with an empty name (``) are discarded when documents are saved. Though using reserved or empty attribute names in documents was not really and consistently supported in previous versions of ArangoDB, this change might cause an incompatibility for clients that rely on this feature.
  • added server startup flag `--database.force-sync-properties` to force syncing of collection properties on collection creation, deletion and on property update. The default value is true to mimic the behavior of previous versions of ArangoDB. If set to false, collection properties are written to disk but no call to sync() is made.
  • added detailed output of server version and components for REST APIs `/_admin/version` and `/_api/version`. To retrieve this extended information, call the REST APIs with URL parameter `details=true`.
  • issue #443: For git-based builds include commit hash in version
  • adjust startup log output to be more compact, less verbose
  • set the required minimum number of file descriptors to 256. On server start, this number is enforced on systems that have rlimit. If the limit cannot be enforced, starting the server will fail. Note: 256 is considered to be the absolute minimum value. Depending on the use case for ArangoDB, a much higher number of file descriptors should be used. To avoid checking & potentially changing the number of maximum open files, use the startup option `--server.descriptors-minimum 0`
  • fixed shapedjson to json conversion for special numeric values (NaN, +inf, -inf). Before, "NaN", "inf", or "-inf" were written into the JSONified output, but these values are not allowed in JSON. Now, "null" is written to the JSONified output as required.
  • added AQL functions VARIANCE_POPULATION(), VARIANCE_SAMPLE(), STDDEV_POPULATION(), STDDEV_SAMPLE(), AVERAGE(), MEDIAN() to calculate stastical values for lists
  • added AQL SQRT() function
  • added AQL TRIM(), LEFT() and RIGHT() string functions
  • fixed issue #436: GET /_api/document on edge make AQL REVERSE() and LENGTH() functions work on strings, too
  • disabled DOT generation in `make doxygen`. this speeds up docs generation
  • renamed startup option `--dispatcher.report-intervall` to `--dispatcher.report-interval`
  • renamed startup option `--scheduler.report-intervall` to `--scheduler.report-interval`
  • slightly changed output of REST API method /_admin/log. Previously, the log messages returned also contained the date and log level, now they will only contain the log message, and no date and log level information. This information can be re-created by API users from the `timestamp` and `level` attributes of the result.
  • removed configure option `--enable-zone-debug` memory zone debugging is now automatically turned on when compiling with ArangoDB `--enable-maintainer-mode`
  • removed configure option `--enable-arangob` arangob is now always included in the build

New in ArangoDB 1.2.1 (Mar 16, 2013)

  • issue #444: please darken light color in arangosh
  • issue #442: pls update post install info on osx
  • fixed conversion of special double values (NaN, -inf, +inf) when converting from shapedjson to JSON
  • fixed compaction of markers (location of _key was not updated correctly in memory, leading to _keys pointing to undefined memory after datafile rotation)
  • fixed edge index key pointers to use document master pointer plus offset instead of direct _key address
  • fixed case when server could not create any more journal or compactor files. Previously a wrong status code may have been returned, and not being able to create a new compactor file may have led to an infinite loop with error message "could not create compactor".
  • fixed value truncation for numeric filename parts when renaming datafiles/journals

New in ArangoDB 1.2.0 (Mar 2, 2013)

  • by default statistics are now switch off; in order to enable comment outthe "disable-statistics = yes" line in "arangod.conf"
  • fixed issue #435: csv parser skips data at buffer border
  • added server startup option `--server.disable-statistics` to turn off statisticsgathering without recompilation of ArangoDB.This partly addresses issue #432.
  • fixed dropping of indexes without collection name, e.g.`db.xxx.dropIndex("123456");`Dropping an index like this failed with an assertion error.
  • fixed issue #426: arangoimp should be able to import edges into edge collections
  • fixed issue #425: In case of conflict ArangoDB returns HTTP 400 Bad request (with 1207 Error) instead of HTTP 409 Conflict
  • fixed too greedy token consumption in AQL for negative values:e.g. in the statement `RETURN { a: 1 -2 }` the minus token was consumed as part of the value `-2`, and not interpreted as the binary arithmetic operator

New in ArangoDB 1.1.2 (Mar 1, 2013)

  • upgraded to mruby 2013-01-20 583983385b81c21f82704b116eab52d606a609f4
  • fixed issue #357: Some spelling and grammar errors
  • fixed issue #355: fix quotes in pdf manual
  • fixed issue #351: Strange arangosh error message for long running query
  • fixed randomly hanging connections in arangosh on MacOS
  • added "any" query method: this returns a random document from a collection. It is also available via REST HTTP at /_api/simple/any.
  • added deployment tool
  • added getPeerVertex
  • small fix for logging of long messages: the last character of log messages longer than 256 bytes was not logged.
  • fixed truncation of human-readable log messages for web interface: the trailing \0 byte was not appended for messages longer than 256 bytes
  • fixed issue #341: ArangoDB crashes when stressed with Batch jobs Contrary to the issue title, this did not have anything to do with batch jobs but with too high memory usage. The memory usage of ArangoDB is now reduced for cases when there are lots of small collections with few documents each
  • started with issue #317: Feature Request (from Google Groups): DATE handling
  • backported issue #300: Extend arangoImp to Allow importing resultset-like (list of documents) formatted files
  • fixed issue #337: "WaitForSync" on new collection does not work on Win/X64
  • fixed issue #336: Collections REST API docs
  • fixed issue #335: mmap errors due to wrong memory address calculation
  • fixed issue #332: arangoimp --use-ids parameter seems to have no impact
  • added option '--server.disable-authentication' for arangosh as well. No more passwd prompts if not needed
  • fixed issue #330: session logging for arangosh
  • fixed issue #329: Allow passing script file(s) as parameters for arangosh to run
  • fixed issue #328: 1.1 compile warnings
  • fixed issue #327: Javascript parse errors in front end

New in ArangoDB 1.0.0 (Sep 26, 2012)

  • fix for issue #194: potential race condition between creating and dropping collections
  • fix for issue #193: REST API HEAD request returns a message body on 404
  • fix for issue #188: intermittent issues with 1.0.0
  • fix for issue #163: server cannot create collection because of abandoned files
  • fix for issue #150: call V8 garbage collection on server periodically