mirror of https://gitee.com/bigwinds/arangodb
Merge branch 'devel' of https://github.com/arangodb/arangodb into devel
This commit is contained in:
commit
b5c7906dce
33
CHANGELOG
33
CHANGELOG
|
@ -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)
|
||||||
|
|
|
@ -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
101
LES-TODOS
|
@ -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.
|
|
Loading…
Reference in New Issue