diff --git a/CHANGELOG b/CHANGELOG index 077fb0bc9d..e0fdc48db8 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,13 +4,15 @@ devel * --server.maximal-queue-size is now an absolute maximum. If the queue is full, then 503 is returned. Setting it to 0 means "no limit". -* fixed issue #2450 -* fixed issue #2453 +v3.2.alpha4 (2017-04-25) +------------------------ -* fixed issue #2448 +* fixed issue #2450: Bad optimization plan on simple query -* fixed issue #2442 +* fixed issue #2448: ArangoDB Web UI takes no action when Delete button is clicked + +* fixed issue #2442: Frontend shows already deleted databases during login * added 'x-content-type-options: nosniff' to avoid MSIE bug @@ -81,6 +83,10 @@ devel Enabling this option activated some proprietary timers for only selected events in arangod. Instead better use `perf` to gather timings. + +v3.2.alpha3 (2017-03-22) +------------------------ + * increase default collection lock timeout from 30 to 900 seconds * added function `db._engine()` for retrieval of storage engine information at @@ -118,7 +124,7 @@ devel when unused. Waiting for an unused V8 context will now also abort if no V8 context can be - acquired/created after 60 seconds. + acquired/created after 120 seconds. * improved diagnostic messages written to logfiles by supervisor process @@ -235,7 +241,7 @@ v3.2.alpha1 (2017-02-05) * fix potential port number over-/underruns * added startup option `--log.shorten-filenames` for controlling whether filenames - in log message should be shortened to just the filename with the absolute path + in log messages should be shortened to just the filename with the absolute path * removed IndexThreadFeature, made `--database.index-threads` option obsolete @@ -245,18 +251,27 @@ v3.2.alpha1 (2017-02-05) * generated Foxx services now use swagger tags + v3.1.19 (XXXX-XX-XX) -------------------- - * Fixed a StackOverflow issue in Traversal and ShortestPath. Occured if many (>1000) input values in a row do not return any result. Fixes issue: #2445 -v3.1.19 (XXXX-XX-XX) --------------------- +* fixed issue #2448 + +* fixed issue #2442 + +* added 'x-content-type-options: nosniff' to avoid MSIE bug + +* fixed issue #2441 * fixed issue #2440 +* Fixed a StackOverflow issue in Traversal and ShortestPath. Occured if many (>1000) input + values in a row do not return any result. Fixes issue: #2445 + +* fix occasional hanging shutdowns on OS X v3.1.18 (2017-04-18) diff --git a/Documentation/Books/Manual/ReleaseNotes/UpgradingChanges32.mdpp b/Documentation/Books/Manual/ReleaseNotes/UpgradingChanges32.mdpp index b92662dda5..e8e1c1558e 100644 --- a/Documentation/Books/Manual/ReleaseNotes/UpgradingChanges32.mdpp +++ b/Documentation/Books/Manual/ReleaseNotes/UpgradingChanges32.mdpp @@ -4,11 +4,80 @@ Incompatible changes in ArangoDB 3.2 It is recommended to check the following list of incompatible changes **before** upgrading to ArangoDB 3.2, and adjust any client programs if necessary. +AQL +--- + +* AQL breaking change in cluster: + The SHORTEST_PATH statement using edge-collection names instead + of a graph name now requires to explicitly name the vertex-collection names + within the AQL query in the cluster. It can be done by adding `WITH ` + at the beginning of the query. + + Example: + ``` + FOR v,e IN OUTBOUND SHORTEST_PATH @start TO @target edges [...] + ``` + + Now has to be: + + ``` + WITH vertices + FOR v,e IN OUTBOUND SHORTEST_PATH @start TO @target edges [...] + ``` + + This change is due to avoid dead-lock sitations in clustered case. + An error stating the above is included. + + +REST API +-------- + +* Removed undocumented internal HTTP API: + * PUT _api/edges + + The documented GET _api/edges and the undocumented POST _api/edges remains unmodified. + +* change undocumented behaviour in case of invalid revision ids in + `If-Match` and `If-None-Match` headers from returning HTTP status code 400 (bad request) + to returning HTTP status code 412 (precondition failed). + + +JavaScript API +-------------- + +* change undocumented behaviour in case of invalid revision ids in + JavaScript document operations from returning error code 1239 ("illegal document revision") + to returning error code 1200 ("conflict"). + + Foxx ---- -JWT token issued by the built-in [JWT session storage](../Foxx/Sessions/Storages/JWT.md) now correctly specify the `iat` and `exp` values in seconds rather than milliseconds as specified in the JSON Web Token standard. +* JWT tokens issued by the built-in [JWT session storage](../Foxx/Sessions/Storages/JWT.md) now correctly specify the `iat` and `exp` values in seconds rather than milliseconds as specified in the JSON Web Token standard. -This may result in previously expired tokens using milliseconds being incorrectly accepted. For this reason it is recommended to replace the signing `secret` or set the new `maxExp` option to a reasonable value that is smaller than the oldest issued expiration timestamp. + This may result in previously expired tokens using milliseconds being incorrectly accepted. For this reason it is recommended to replace the signing `secret` or set the new `maxExp` option to a reasonable value that is smaller than the oldest issued expiration timestamp. -For example setting `maxExp` to `10**12` would invalidate all incorrectly issued tokens before 9 September 2001 without impairing new tokens until the year 33658 (at which point these tokens are hopefully no longer relevant). + For example setting `maxExp` to `10**12` would invalidate all incorrectly issued tokens before 9 September 2001 without impairing new tokens until the year 33658 (at which point these tokens are hopefully no longer relevant). + + +Command-line options changed +---------------------------- + +* --server.maximal-queue-size is now an absolute maximum. If the queue is + full, then 503 is returned. Setting it to 0 means "no limit". The default + value for this option is now `0`. + +* the default value for `--ssl.protocol` has been changed from `4` (TLSv1) to `5` (TLSv1.2). + +* the startup options `--database.revision-cache-chunk-size` and + `--database.revision-cache-target-size` are now obsolete and do nothing + +* the startup option `--database.index-threads` option is now obsolete + +* the option `--javascript.v8-contexts` is now an absolute maximum. The server + may start less V8 contexts for JavaScript execution at startup. If at some + point the server needs more V8 contexts it may start them dynamically, until + the number of V8 contexts reaches the value of `--javascript.v8-contexts`. + + the minimum number of V8 contexts to create at startup can be configured via + the new startup option `--javascript.v8-contexts-minimum`. diff --git a/LES-TODOS b/LES-TODOS deleted file mode 100644 index 258f5fc18e..0000000000 --- a/LES-TODOS +++ /dev/null @@ -1,101 +0,0 @@ -done ----- -- create new branch -- factor out transactions from LogfileManager -- concept "collection locks" - - 3 states: READ / WRITE / EXCLUSIVE for locks -- index implementations => moved & renamed to StorageEngine -- move engine files into MMFiles directory -- split IndexElement -- rename *IndexElement to MMFiles* -- move fulltext & geoindex & skiplist helper code into MMFiles -- rename "RocksDBIndex" to "PersistentIndex" -- Delete OperationCursor->getMore. Replace by getMoreTokens -- remove ReadCache -- Index API -- Indexes always return std::vector -- Rename OperationCursor->getMoreMptr => getMoreTokens, "returns" std::vector& -- GeoIndex hands out TRI_revision instead of Tokens -- FulltextIndex hands out TRI_revision instead of Tokens -- trx::InvokeOnAllElements : uses SimpleIndexLookupElements => Has to use Tokens instead? -- remove TransactionState include from Transaction.h -MMFiles reference removals from files: -* arangod/V8Server/v8-query.cpp -- StorageEngine specific IndexFactory: - - create indexes from VPack - - enhance/validate given VPack index definitions (set default values, reject illegal ones) -- Implement new IndexIterator API next(callback, limit) - - Primary - - Hash - - Skiplist - - Persistent - - Geo - - Fulltext -- index API -- StorageEngine specific AQL functions - - Register for specific function names => branches to StorageEngine impl - - Storage Engine can implement these functions with specific code and interna - - e.g.: Geo, Fulltext -- Replace Usage of new callback-based IndexIterator -- move engine-specific parts of transaction.cpp into engine -- Logical => Physical - - keyGenerator - - dropIndex(p) => phys->dropIndex(p, true) -- DML API -- DDL API -- StorageEngineAPI readDocument requires 2 functions: - - void readDocument(TOKEN id, VPackBuilder& result) => Collects the document and inserts it asis into result. Does NOT clear result. - - void readDocument(TOKEN id, std::vector const& attributePath, VPackBuilder& result) => Collects the document and writes only the value at the given attributePath (e.g. `a.b.c`) into result. Does NOT clear result. -in progress - ------------ -- check for illegal includes -- fix includes during API conversion - -to do ------ -- rename TRI_df_marker_* to something storage-engine specific -- applyForTickRange has to be moved to MMFilesCollection (used in replication-dump) -- add new serialization RW lock to LogicalCollection. all DML ops must acquire it in read mode, the explicit lock command must acquire it in write mode. -- AqlValue needs a (lazy evaluated) type TOKEN that handles collection ID and TOKEN inplace. - - slice() => looksup the value in the Database - - We need to keep in mind the cluster. If a DBServer creates this token-type it has to be translated BEFORE the register is teleported to coordinator -- Remove temporary wrapper LogCol::readDocument() -- InitialySyncer.cpp knows details of StorageEngine MMFiles - -MMFiles are known to the following files: -* arangod/Replication/InitialSyncer.cpp -* arangod/RestHandler/RestExportHandler.cpp -* arangod/RestHandler/RestWalHandler.cpp -* arangod/RestHandler/RestReplicationHandler.cpp -* arangod/RestServer/arangod.cpp -* arangod/StorageEngine/EngineSelectorFeature.cpp -* arangod/Utils/CollectionExport.cpp -* arangod/Utils/CollectionKeys.cpp -* arangod/V8Server/v8-replication.cpp -* arangod/V8Server/v8-collection.cpp -* arangod/V8Server/v8-vocbase.cpp -* arangod/VocBase/replication-dump.cpp -* arangod/VocBase/vocbase.cpp - -- IndexFactory needs a function to stringifyIndexes and rename idxFoo => IdxZirkusBar - -- Implement new IndexIterator API nextExtra(callback, limit) - - Geo - -- OperationOptions - - recovoryMarker -- re-enable RocksDB storage engine (e.g arangod.cpp) -- implement RocksDB storage engine - -Questions ---------- -* For GeoIndex `ignoreNull: true` and `constraint: false` are only set in Cluster mode. Is that art or can it go away? - -OpenIssues Hacki ----------------- -* HashIndex Lookup into a still local buffer, could be replaced by callback as well. -* SingleServerTraverser API does NOT takeover responsibility for slice data. getMore() hopes slices to not go away - * This API can be improved if we make better use of those callbacks. -* ShortestPathBlock does assume that slices do not walk away. -* EdgeCollectionInfos in ShortestPath could share one conditionBuilder.