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

Changelog History
Page 22

  • v2.0.1 Changes

    March 31, 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.

    • 🛠 fixed isses 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

    • ➕ 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 #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

  • v2.0.0 Changes

    March 10, 2014
    • 🚀 first 2.0 release
  • v2.0.0-rc2 Changes

    March 07, 2014
    • 🛠 fixed cluster authorization
  • v2.0.0-rc1 Changes

    February 28, 2014
    • ➕ added sharding :-)

    • ➕ added collection._dbName attribute to query the name of the database from a collection

    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 (e.g. >=, >, <=, <) 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/<username>

    • 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 2.0 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

    • 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(<name>) 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

    • 0️⃣ use pretty-printing in --console mode by default

    • 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 2.0, 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"
  • v1.4.16 Changes

    • 🛠 fixed too eager datafile deletion

    this issue could have caused a crash when the compaction had marked datafiles as obsolete and they were removed while "old" temporary query results still pointed to the old datafile positions

    • 🛠 fixed issue #826: Replication fails when a collection's configuration changes
  • v1.4.15 Changes

    April 19, 2014
    • 🛠 bugfix for AQL query optimizer

    the following type of query was too eagerly optimized, leading to errors in code-generation:

      LET a = (FOR i IN [] RETURN i) LET b = (FOR i IN [] RETURN i) RETURN 1
    

    the problem occurred when both lists in the subqueries were empty. In this case invalid code was generated and the query couldn't be executed.

  • v1.4.14 Changes

    April 05, 2014
    • 🛠 fixed race conditions during shape / attribute insertion

    A race condition could have led to spurious cannot find attribute #xx or cannot find shape #xx (where xx is a number) warning messages being logged by the server. This happened when a new attribute was inserted and at the same time was queried by another thread.

    Also fixed a race condition that may have occurred when a thread tried to access the shapes / attributes hash tables while they were resized. In this cases, the shape / attribute may have been hashed to a wrong slot.

    • 🛠 fixed a memory barrier / cpu synchronization problem with libev, affecting Windows with Visual Studio 2013 (probably earlier versions are affected, too)

    The issue is described in detail here: http://lists.schmorp.de/pipermail/libev/2014q1/002318.html

  • v1.4.13 Changes

    March 14, 2014
    • ➕ added diagnostic output for Foxx application upload

    • 👍 allow dump & restore from ArangoDB 1.4 with an ArangoDB 2.0 server

    • 👍 allow startup options temp-path and default-language to be specified from the arangod configuration file and not only from the command line

    • 🛠 fixed too eager compaction

    The compaction will now wait for several seconds before trying to re-compact the same collection. Additionally, some other limits have been introduced for the compaction.

  • v1.4.12 Changes

    March 05, 2014
    • 🛠 fixed display bug in web interface which caused the following problems:

      • documents were displayed in web interface as being empty
      • document attributes view displayed many attributes with content "undefined"
      • document source view displayed many attributes with name "TYPEOF" and value "undefined"
      • an alert popping up in the browser with message "Datatables warning..."
    • 💅 re-introduced old-style read-write locks to supports Windows versions older than Windows 2008R2 and Windows 7. This should re-enable support for Windows Vista and Windows 2008.

  • v1.4.11 Changes

    February 27, 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. A custom distance function can be registered as an AQL user function to make the distance calculation use any document attributes or custom logic:

      RETURN SHORTEST_PATH(cities, motorways, "cities/CGN", "cities/MUC", "outbound", {
        paths: true,
        distance: "myfunctions::citydistance"
      })
    
      // using the following custom distance function
      var aqlfunctions = require("org/arangodb/aql/functions");
      aqlfunctions.register("myfunctions::distance", function (config, vertex1, vertex2, edge) {
        return Math.sqrt(Math.pow(vertex1.x - vertex2.x) + Math.pow(vertex1.y - vertex2.y));
      }, false);
    
    • 🛠 fixed bug in Graph.pathTo function

    • 🛠 fixed small memleak in AQL optimizer

    • 🛠 fixed access to potentially uninitialized variable when collection had a cap constraint