1
0
Fork 0

Merge branch 'devel' of https://github.com/arangodb/arangodb into devel

This commit is contained in:
Simon Grätzer 2017-04-26 13:32:17 +02:00
commit b5c7906dce
3 changed files with 96 additions and 113 deletions

View File

@ -4,13 +4,15 @@ devel
* --server.maximal-queue-size is now an absolute maximum. If the queue is * --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". 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 * 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 Enabling this option activated some proprietary timers for only selected
events in arangod. Instead better use `perf` to gather timings. 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 * increase default collection lock timeout from 30 to 900 seconds
* added function `db._engine()` for retrieval of storage engine information at * added function `db._engine()` for retrieval of storage engine information at
@ -118,7 +124,7 @@ devel
when unused. when unused.
Waiting for an unused V8 context will now also abort if no V8 context can be 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 * 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 * fix potential port number over-/underruns
* added startup option `--log.shorten-filenames` for controlling whether filenames * 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 * 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 * generated Foxx services now use swagger tags
v3.1.19 (XXXX-XX-XX) v3.1.19 (XXXX-XX-XX)
-------------------- --------------------
* Fixed a StackOverflow issue in Traversal and ShortestPath. Occured if many (>1000) input * 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 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 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) v3.1.18 (2017-04-18)

View File

@ -4,11 +4,80 @@ Incompatible changes in ArangoDB 3.2
It is recommended to check the following list of incompatible changes **before** It is recommended to check the following list of incompatible changes **before**
upgrading to ArangoDB 3.2, and adjust any client programs if necessary. 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 <name>`
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 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`.

101
LES-TODOS
View File

@ -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<TOKEN>
- Rename OperationCursor->getMoreMptr => getMoreTokens, "returns" std::vector<TOKEN>&
- 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<std::string> 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.