1
0
Fork 0

updated docs

This commit is contained in:
Jan Steemann 2013-05-10 12:26:15 +02:00
parent e98a22a31c
commit ebad0130ea
31 changed files with 368 additions and 456 deletions

View File

@ -1,89 +0,0 @@
unix> curl --dump - http://localhost:8529/_admin/statistics
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
{
"system" : {
"minorPageFaults" : 18666,
"majorPageFaults" : 57,
"userTime" : 1.162991,
"systemTime" : 0.464635,
"numberThreads" : 0,
"residentSize" : 34525184,
"virtualSize" : 0
},
"client" : {
"httpConnections" : 1,
"connectionTime" : {
"count" : 0,
"counts" : [
0,
0,
0,
0
]
},
"totalTime" : {
"count" : 54,
"counts" : [
51,
0,
0,
0,
0,
0,
3
]
},
"requestTime" : {
"count" : 54,
"counts" : [
51,
0,
0,
0,
0,
0,
3
]
},
"queueTime" : {
"count" : 53,
"counts" : [
53,
0,
0,
0,
0,
0,
0
]
},
"bytesSent" : {
"count" : 54,
"counts" : [
13,
27,
13,
1,
0,
0
]
},
"bytesReceived" : {
"count" : 54,
"counts" : [
52,
2,
0,
0,
0,
0
]
}
},
"error" : false,
"code" : 200
}

View File

@ -1,179 +0,0 @@
unix> curl --dump - http://localhost:8529/_admin/statistics-description
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
{
"groups" : [
{
"group" : "system",
"name" : "Process Statistics",
"description" : "Statistics about the ArangoDB process"
},
{
"group" : "client",
"name" : "Client Statistics",
"description" : "Statistics about the clients connecting to the server."
}
],
"figures" : [
{
"group" : "system",
"identifier" : "userTime",
"name" : "User Time",
"description" : "Amount of time that this process has been scheduled in user mode, measured in clock ticks divided by sysconf(_SC_CLK_TCK) aka seconds.",
"type" : "accumulated",
"units" : "seconds"
},
{
"group" : "system",
"identifier" : "systemTime",
"name" : "System Time",
"description" : "Amount of time that this process has been scheduled in kernel mode, measured in clock ticks divided by sysconf(_SC_CLK_TCK) aka seconds.",
"type" : "accumulated",
"units" : "seconds"
},
{
"group" : "system",
"identifier" : "numberOfThreads",
"name" : "Number of Threads",
"description" : "Number of threads in this process.",
"type" : "current",
"units" : "number"
},
{
"group" : "system",
"identifier" : "residentSize",
"name" : "Resident Set Size",
"description" : "The number of pages the process has in real memory. This is just the pages which count toward text, data, or stack space. This does not include pages which have not been demand-loaded in, or which are swapped out.",
"type" : "current",
"units" : "bytes"
},
{
"group" : "system",
"identifier" : "virtualSize",
"name" : "Virtual Memory Size",
"description" : "The size of the virtual memory the process is using.",
"type" : "current",
"units" : "bytes"
},
{
"group" : "system",
"identifier" : "minorPageFaults",
"name" : "Minor Page Faults",
"description" : "The number of minor faults the process has made which have not required loading a memory page from disk.",
"type" : "accumulated",
"units" : "number"
},
{
"group" : "system",
"identifier" : "majorPageFaults",
"name" : "Major Page Faults",
"description" : "The number of major faults the process has made which have required loading a memory page from disk.",
"type" : "accumulated",
"units" : "number"
},
{
"group" : "client",
"identifier" : "httpConnections",
"name" : "HTTP Client Connections",
"description" : "The number of http connections that are currently open.",
"type" : "current",
"units" : "number"
},
{
"group" : "client",
"identifier" : "totalTime",
"name" : "Total Time",
"description" : "Total time needed to answer a request.",
"type" : "distribution",
"cuts" : [
0.01,
0.05,
0.1,
0.2,
0.5,
1
],
"units" : "seconds"
},
{
"group" : "client",
"identifier" : "requestTime",
"name" : "Request Time",
"description" : "Request time needed to answer a request.",
"type" : "distribution",
"cuts" : [
0.01,
0.05,
0.1,
0.2,
0.5,
1
],
"units" : "seconds"
},
{
"group" : "client",
"identifier" : "queueTime",
"name" : "Queue Time",
"description" : "Queue time needed to answer a request.",
"type" : "distribution",
"cuts" : [
0.01,
0.05,
0.1,
0.2,
0.5,
1
],
"units" : "seconds"
},
{
"group" : "client",
"identifier" : "bytesSent",
"name" : "Bytes Sent",
"description" : "Bytes sents for a request.",
"type" : "distribution",
"cuts" : [
250,
1000,
2000,
5000,
10000
],
"units" : "bytes"
},
{
"group" : "client",
"identifier" : "bytesReceived",
"name" : "Bytes Received",
"description" : "Bytes receiveds for a request.",
"type" : "distribution",
"cuts" : [
250,
1000,
2000,
5000,
10000
],
"units" : "bytes"
},
{
"group" : "client",
"identifier" : "connectionTime",
"name" : "Connection Time",
"description" : "Total connection time of a client.",
"type" : "distribution",
"cuts" : [
0.1,
1,
60
],
"units" : "seconds"
}
],
"error" : false,
"code" : 200
}

View File

@ -1,8 +0,0 @@
{
"_id" : "_users/1589671",
"_rev" : "1589671",
"_key" : "1589671",
"active" : true,
"user" : "root",
"password" : "$1$e0d13aed$328469fc501398de5c3626dcc0a5a567e01b4bafbc06d89c0a5cf2b09872ca14"
}

View File

@ -1,16 +0,0 @@
{
"firstName" : "Hugo",
"lastName" : "Schlonz",
"address" : {
"city" : "Hier",
"street" : "Strasse 1"
},
"hobbies" : [
"swimming",
"biking",
"programming"
],
"_id" : "demo/schlonz",
"_rev" : "12468647",
"_key" : "schlonz"
}

View File

@ -1,15 +0,0 @@
unix> curl -X POST --data @- --dump - http://localhost:8529/_api/document?collection=products
{ "Hello": "World" }
HTTP/1.1 202 Accepted
content-type: application/json; charset=utf-8
etag: "21316007"
location: /_api/document/products/21316007
{
"error" : false,
"_id" : "products/21316007",
"_rev" : "21316007",
"_key" : "21316007"
}

View File

@ -1,13 +0,0 @@
unix> curl -X POST --data @- --dump - http://localhost:8529/_api/document?collection=products
{ 1: "World" }
HTTP/1.1 400 Bad Request
content-type: application/json; charset=utf-8
{
"error" : true,
"errorMessage" : "expecting attribute name",
"code" : 400,
"errorNum" : 600
}

View File

@ -1,15 +0,0 @@
unix> curl -X POST --data @- --dump - http://localhost:8529/_api/document?collection=products
{ "Hello": "World" }
HTTP/1.1 201 Created
content-type: application/json; charset=utf-8
etag: "17973671"
location: /_api/document/products/17973671
{
"error" : false,
"_id" : "products/17973671",
"_rev" : "17973671",
"_key" : "17973671"
}

View File

@ -1,15 +0,0 @@
unix> curl -X POST --data @- --dump - http://localhost:8529/_api/document?collection=products&createCollection=true
{ "Hello": "World" }
HTTP/1.1 202 Accepted
content-type: application/json; charset=utf-8
etag: "29049255"
location: /_api/document/products/29049255
{
"error" : false,
"_id" : "products/29049255",
"_rev" : "29049255",
"_key" : "29049255"
}

View File

@ -1,13 +0,0 @@
unix> curl -X POST --data @- --dump - http://localhost:8529/_api/document?collection=products
{ "Hello": "World" }
HTTP/1.1 404 Not Found
content-type: application/json; charset=utf-8
{
"error" : true,
"errorMessage" : "collection /_api/collection/products not found",
"code" : 404,
"errorNum" : 1203
}

View File

@ -1,15 +0,0 @@
unix> curl -X POST --data @- --dump - http://localhost:8529/_api/document?collection=products&waitForSync=true
{ "Hello": "World" }
HTTP/1.1 201 Created
content-type: application/json; charset=utf-8
etag: "19743143"
location: /_api/document/products/19743143
{
"error" : false,
"_id" : "products/19743143",
"_rev" : "19743143",
"_key" : "19743143"
}

View File

@ -1,13 +0,0 @@
unix> curl --dump - http://localhost:8529/_api/document/products/24265127
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
etag: "24265127"
{
"hallo" : "world",
"_id" : "products/24265127",
"_rev" : "24265127",
"_key" : "24265127"
}

View File

@ -1,13 +0,0 @@
unix> curl --dump - http://localhost:8529/_api/document/?collection=products
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
{
"documents" : [
"/_api/document/products/31408551",
"/_api/document/products/31146407",
"/_api/document/products/30622119"
]
}

View File

@ -1,6 +0,0 @@
unix> curl -X HEAD --dump - http://localhost:8529/_api/document/products/37306791
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
etag: "37306791"

View File

@ -1,2 +0,0 @@
unix> curl --header 'if-none-match: "34292135"' --dump - http://localhost:8529/_api/document/products/34292135

View File

@ -1,12 +0,0 @@
unix> curl --dump - http://localhost:8529/_api/document/products/unknownhandle
HTTP/1.1 404 Not Found
content-type: application/json; charset=utf-8
{
"error" : true,
"errorMessage" : "document /_api/document/products/unknownhandle not found",
"code" : 404,
"errorNum" : 1202
}

View File

@ -1,3 +0,0 @@
unix> curl -X PUT --data @- --dump - http://localhost:8529/_api/document/products/32653735
{}

View File

@ -1,3 +0,0 @@
unix> curl -X PUT --data @- --dump - http://localhost:8529/_api/document/products/27410855
{}

View File

@ -1,3 +0,0 @@
unix> curl -X PUT --data @- --dump - http://localhost:8529/_api/document/products/22757799
{}

View File

@ -1,3 +0,0 @@
unix> curl -X PUT --data @- --dump - http://localhost:8529/_api/document/products/25903527
{}

View File

@ -1,3 +0,0 @@
unix> curl -X PUT --data @- --dump - http://localhost:8529/_api/document/products/35799463
{}

View File

@ -126,6 +126,7 @@ WIKI = \
NamingConventions \
NewFeatures11 \
NewFeatures12 \
NewFeatures13 \
RefManual \
RefManualArangoErrors \
RestDocument \
@ -134,6 +135,7 @@ WIKI = \
Transactions \
Upgrading11 \
Upgrading12 \
Upgrading13 \
UserManual \
UserManualActions \
UserManualArangosh \

View File

@ -22,14 +22,17 @@ for various languages including the Big-P (PHP, Python, Perl) and Ruby.
Please contact @S_EXTREF_S{http://www.arangodb.org/connect,us} if you have any
questions.
Upgrading to ArangoDB 1.2 {#ArangoDBUpgrading12}
Upgrading to ArangoDB 1.3 {#ArangoDBUpgrading13}
================================================
- @BOOK_REF{NewFeatures13}
- @BOOK_REF{Upgrading13}
Older Releases:
- @BOOK_REF{NewFeatures12}
- @BOOK_REF{Upgrading12}
Older Releases:
- @BOOK_REF{NewFeatures11}
- @BOOK_REF{Upgrading11}

View File

@ -23,7 +23,7 @@ Rapid API Development with FOXX{#NewFeatures13Foxx}
A preview of the forthcoming Foxx is contained in 1.3. Please note
that this is not the final version, Foxx is still experimental.
Foxx is a lightweight Javascript “micro framework” which allows you to
Foxx is a lightweight Javascript "micro framework" which allows you to
build applications directly on top of ArangoDB and therefore skip the
middleman (Rails, Django, Symfony or whatever your favorite web
framework is). Inspired by frameworks like Sinatra Foxx is designed
@ -37,9 +37,105 @@ explains how to use Foxx.
Transactions{#NewFeatures13Transactions}
----------------------------------------
ArangoDB provides server-side transactions that allow executing multi-
document and even multi-collection operations with ACID guarantees.
Transactions in ArangoDB are defined by providing a JavaScript object
which needs to contain the transaction code, and some declarations about
the collections involved in the transaction.
The transaction code will be executed by the server en bloc. If
execution of any statement in the transaction code fails for whatever reason,
the entire transaction will be aborted and rolled back.
Data modifications done by transactions become visible to following
transactions only when a transaction succeeds. Data modifications that
are performed by a still-ongoing transaction are not exposed to other
parallel transactions. In fact, transactions on the same collection will
be executed serially.
Please refer to @ref Transactions for more details and examples on
transaction usage in ArangoDB.
New Administration Interface{#NewFeatures13Admin}
-------------------------------------------------
TODO
New Server Statistics{#NewFeatures13Statistics}
-----------------------------------------------
The server statistics provided by ArangoDB have been changed in 1.3.
Before version 1.3, the server provided a multi-level history of request
and connection statistics. Values for each incoming request and connection
were kept individually and mapped to the chronological period they appeared
in. The server then provided aggregated values for different periods,
which was implemented using a constant recalculation of the aggregation
values.
To lower ArangoDB's CPU usage, the constant recalculation has been removed
in 1.3. Instead, the server will now only keep aggregate values per figure
reported, but will not provide any chronological values.
Request and connection statistics values are 0 at server start, and will be
increased with each incoming request or connection. Clients querying the
statistics will see the accumulated values only. They can calculate the
values for a period of time by querying the statistics twice and calculating
the difference between the values themselves.
The REST APIs for the statistics in ArangoDB 1.3 can be found at:
/_admin/statistics
/_admin/statistics-description
The `/_admin/statistics-description` API can be used by clients to get
descriptions for the figures reported by `/_admin/statistics`. The description
will contain a textual description, the unit used for the value(s) and the
boundary of slot values used.
The previoulsy available APIs
/_admin/request-statistics
/_admin/connection-statistics
are not available in ArangoDB 1.3 anymore.
AQL extensions{#NewFeatures13AQL}
---------------------------------
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.
arangosh> var aqlfunctions = require("org/arangodb/aql/functions");
arangosh> aqlfunctions.register("myfunctions:double", function (value) { return value * 2; }, true);
false
arangosh> db._query("RETURN myfunctions:double(4)").toArray();
[ 8 ]
Please refer to @ref ExtendingAql for more details on this.
There have been the following additional changes to AQL in ArangoDB 1.3:
* added AQL statistical functions `VARIANCE_POPULATION`, `VARIANCE_SAMPLE`,
`STDDEV_POPULATION`, `STDDEV_SAMPLE`, `AVERAGE`, `MEDIAN`. These functions
work on lists.
* added AQL numeric function `SQRT` to calculate square-roots.
* added AQL string functions `TRIM`, `LEFT` and `RIGHT` for easier string and
substring handling.
* the AQL functions `REVERSE` and `LENGTH` now work on string values, too.
Previously they were allowed for lists only.
* made "limit" an optional parameter in the `NEAR` function. The "limit" parameter
can now be either omitted completely, or set to 0. If so, an internal
default value (currently 100) will be applied for the limit.
Please refer to @ref AqlFunctions for detailed information on the AQL functions.
Node Modules and Packages{#NewFeatures13Node}
---------------------------------------------
@ -57,7 +153,7 @@ which allows to handle binary data in JavaScript.
Supplying the Buffer class makes it possible to use other interesting modules
like punycode. It enables us to support some of NPM packages available - for
instance CoffeScript.
instance CoffeeScript.
arangosh> var cs = require("coffee-script");
arangosh> cs.compile("a = 1");
@ -89,3 +185,69 @@ The node packages can be installed using npm in the "share/npm"
directory. If you find out, that a node package is also working
under ArangoDB, please share your findings with us and other
users.
Miscelleanous changes{#NewFeatures13Misc}
-----------------------------------------
* added `db._saveOrReplace()` method for server-side JavaScript.
TODO
* Added server startup option `--database.force-sync-properties` to force syncing of
collection properties on collection creation, deletion and on collection properties
change.
The default value is `true` to mimic the behavior of previous versions of ArangoDB.
If set to `false`, collection properties are still written to disk but no immediate
system call to sync() is made.
Setting the `--database.force-sync-properties` to `false` may speed up running
test suites on systems where sync() is expensive, but is discouraged for regular
use cases.
* ArangoDB will now reject saving documents with an invalid "type".
Previous versions of ArangoDB didn't reject documents that were just scalar values
without any attribute names.
Starting with version 1.3, each document saved in ArangoDB must be a JSON object
consisting of attribute name / attribute value pairs.
Storing the following types of documents will be rejected by the server:
[ "foo", "bar" ]
1.23
"test"
Of course such values can be stored inside valid documents, e.g.
{ "data" : [ "foo", "bar" ] }
{ "number" : 1.23 }
{ "value" : "test" }
User-defined document attribute names must also start with a letter or a number.
It is disallowed to use user-defined attribute names starting with an underscore.
This is due to name starting with an underscore being reserved for ArangoDB's
internal use.
* Changed return value of REST API method `/_admin/log`:
Previously, the log messages returned by the API in the `text` attribute also
contained the date and log level, which was redundant.
In ArangoDB 1.3, the values in the `text` attribute contain only the mere log
message, and no date and log level. Dates and log levels for the individual
messages are still available in the separate `timestamp` and `level` attributes.
* Extended output of server version and components for REST APIs `/_admin/version`
and `/_api/version`:
To retrieve the extended information, the REST APIs can be called with the URL
parameter `details=true`. This will provide a list of server version details in
the `details` attribute of the result.
* Extended output for REST API `/_api/collection/<name>/figures`:
The result will now contain an attribute `attributes` with a sub-attribute `count`.
This value provides the number of different attributes that are or have been used
in the collection.

View File

@ -0,0 +1,12 @@
TOC {#NewFeatures13TOC}
=======================
- @ref NewFeatures13Introduction
- @ref NewFeatures13Datafile
- @ref NewFeatures13Foxx
- @ref NewFeatures13Transactions
- @ref NewFeatures13Admin
- @ref NewFeatures13Statistics
- @ref NewFeatures13AQL
- @ref NewFeatures13Node
- @ref NewFeatures13Misc

View File

@ -430,7 +430,7 @@ Removed Functionality {#Upgrading12RemovedFunctionality}
The global `edges` variable has been removed in `arangosh`. In ArangoDB 1.1 and
before this variable could be used to create and access edge collections.
Since ArangoDb 1.1, all collections can be accessed using the `db` variable, and
Since ArangoDB 1.1, all collections can be accessed using the `db` variable, and
there was no need to keep the `edges` variable any longer.
### arangoimp

View File

@ -17,23 +17,170 @@ Existing users of ArangoDB 1.2 should read the list carefully and make sure they
have undertaken all necessary steps and precautions before upgrading from
ArangoDB 1.2 to ArangoDB 1.3. Please also check @ref Upgrading13Troubleshooting.
Database Directory Version Check and Upgrade {#Upgrading13VersionCheck}
-----------------------------------------------------------------------
Starting with ArangoDB 1.1, _arangod_ will perform a database version check at
startup. This has not changed in ArangoDB 1.3.
The version check will look for a file named _VERSION_ in its database
directory. If the file is not present, _arangod_ in version 1.3 will perform an
auto-upgrade (can also be considered a database "initialisation"). This
auto-upgrade will create the system collections necessary to run ArangoDB, and
it will also create the VERSION file with a version number like `1.3` inside.
If the _VERSION_ file is present but is from a non-matching version of ArangoDB
(e.g. ArangoDB 1.2 if you upgrade), _arangod_ will refuse to start. Instead, it
will ask you start the server with the option `--upgrade`. Using the
`--upgrade` option will make the server trigger any required upgrade tasks to
migrate data from ArangoDB 1.2 to ArangoDB 1.3.
This manual invocation of an upgrade shall ensure that users have full control
over when they perform any updates/upgrades of their data, and do not risk
running an incompatible tandem of server and database versions.
If you try starting an ArangoDB 1.3 server with a database created by an earlier
version of ArangoDB, and did not invoke the upgrade procedure, the output of
ArangoDB will look like this:
> bin/arangod --server.endpoint tcp://127.0.0.1:8529 --database.directory /tmp/12
...
2013-05-10T08:35:59Z [9017] ERROR Database directory version (1.2) is lower than server version (1.3).
2013-05-10T08:35:59Z [9017] ERROR It seems like you have upgraded the ArangoDB binary. If this is what you wanted to do, please restart with the --upgrade option to upgrade the data in the database directory.
2013-05-10T08:35:59Z [9017] FATAL Database version check failed. Please start the server with the --upgrade option
...
So it is really necessary to forcefully invoke the upgrade procedure. Please
create a backup of your database directory before upgrading. Please also make
sure that the database directory and all subdirectories and files in it are
writeable for the user you run ArangoDB with.
As mentioned, invoking the upgrade procedure can be done by specifying the
additional command line option `--upgrade` as follows:
> bin/arangod --server.endpoint tcp://127.0.0.1:8529 --database.directory /tmp/12 --upgrade
...
2013-05-10T08:38:41Z [9039] INFO Starting upgrade from version 1.2 to 1.3
2013-05-10T08:38:41Z [9039] INFO Found 20 defined task(s), 8 task(s) to run
...
2013-05-10T08:38:43Z [9039] INFO Upgrade successfully finished
2013-05-10T08:38:43Z [9039] INFO database version check passed
...
The upgrade procecure will execute the defined tasks to run _arangod_ with all
new features and data formats. It should normally run without problems and
indicate success at its end. If it detects a problem that it cannot fix, it will
halt on the first error and warn you.
Re-starting arangod with the `--upgrade` option will execute only the previously
failed and not yet executed tasks.
Upgrading from ArangoDB 1.2 to ArangoDB 1.3 will rewrite data in the collections'
datafiles. The upgrade procedure will create a backup of all files it processes,
in case something goes wrong.
In case the upgrade did not produce any problems and ArangoDB works well for you
after the upgrade, you may want to remove these backup files manually.
All collection datafiles will be backed up in the original collection
directories in the database directory. You can easily detect the backup files
because they have a filename ending in `.old`.
Upgrade a binary package {#Upgrading13BinaryPackage}
---------------------------------------------------
Linux:
- Upgrade ArangoDB by package manager (Example `zypper update arangodb`)
- check configuration file: `/etc/arangodb/arangod.conf`
- Upgrade database files with `/etc/init.d/arangodb upgrade`
Mac OS X binary package
- You can find the new Mac OS X packages here: `http://www.arangodb.org/repositories/MacOSX`
- check configuration file: `/etc/arangodb/arangod.conf`
- Upgrade database files `/usr/sbin/arangod --upgrade'
Mac OS X with homebrew
- Upgrade ArangoDB by `brew upgrade arangodb'
- check configuration file: `/usr/local/Cellar/1.X.Y/etc/arangodb/arangod.conf`
- Upgrade database files `/usr/local/sbin/arangod --upgrade`
In case you upgrade from a previous version of ArangoDB, please make sure you
perform the changes to the configuration file as described in @ref Upgrading13Options.
Otherwise ArangoDB 1.3 will not start properly.
New and Changed Command-Line Options{#Upgrading13Options}
---------------------------------------------------------
In order to support node modules and packages, a new command-line options was
In order to support node modules and packages, a new command-line option was
introduced:
--javascript.package-path <directory>
must be used to specify the directory containing the NPM packages. This is option
is presented in the pre-defined configuration files. In case a created your own
configuration, you need to add this option and make sure that
configuration, you need to add this option and also make sure that
--javascript.modules-path <directories>
also contains the new node directory.
contains the new `node` directory.
Example values for `--javascript.modules-path` and `--javascript.package-path` are:
--javascript.modules-path = DIR/js/server/modules;DIR/js/common/modules;DIR/js/node
--javascript.package-path = DIR/js/npm
where `DIR` is the directory that contains the shared data installed by ArangoDB
during installation. It might be `/usr/local/share/arangodb`, but the actual value is
system-dependent.
Not adding the `node` directory to `--javascript.modules-path` or not setting
`--javascript.package-path` will result in server startup errors.
The configuration options `--scheduler.report-intervall` and `--dispatcher.report-intervall`
have been renamed to `--scheduler.report-interval` and `--dispatcher.report-interval`.
These are rarely used debugging options that are not contained in any of the configuration
files shipped with ArangoDB, so the changed name should not have an effect for end users.
Removed Features{#Upgrading13RemovedFeatures}
---------------------------------------------
The configure options `--enable-zone-debug` and `--enable-arangob` have been removed.
These should not have been used by end users anyway, so this change should not have
an effect.
Troubleshooting{#Upgrading13Troubleshooting}
============================================
If the server does not start after an upgrade, please check that your configuration
contains the `node` directory in the `--javascript.modules-path`, and that the
parameter `--javascript.package-path` is set.
On systems with rlimit, ArangoDB 1.3 will also require the minimum number of file
descriptors it can use to be 256. If the limit is set to a lower value, ArangoDB will
try to increase the limit to 256. If raising the limit does fail, ArangoDB will refuse
to start, and fail with an error message like
2013-05-10T09:00:40Z [11492] FATAL cannot raise the file descriptor limit to 256, got 'Operation not permitted'
In this case the number of file descriptors should be increased. Please note that 256
is a minimum value and that you should allow ArangoDB to use much more file descriptors
if you afford it.
To avoid the file descriptor check on startup in an emergency case, you can use the
startup option
--server.descriptors-minimum 0
Please also check the logfile written by ArangoDB for further errors messages.

View File

@ -2,5 +2,7 @@ TOC {#Upgrading13TOC}
=====================
- @ref Upgrading13Introduction
- @ref Upgrading13VersionCheck
- @ref Upgrading13BinaryPackage
- @ref Upgrading13Options
- @ref Upgrading13Troubleshooting

View File

@ -997,6 +997,16 @@ AQL supports the following functions to operate on list values:
are ignored. If the list is empty or only `null` values are contained in the list,
the function will return `null`.
- @FN{STDDEV_POPULATION(@FA{list})}: returns the population standard deviation of the
values in @FA{list}. This requires the elements in @FA{list} to be numbers. `null`
values are ignored. If the list is empty or only `null` values are contained in the list,
the function will return `null`.
- @FN{STDDEV_SAMPLE(@FA{list})}: returns the sample standard deviation of the values in
@FA{list}. This requires the elements in @FA{list} to be numbers. `null` values
are ignored. If the list is empty or only `null` values are contained in the list,
the function will return `null`.
- @FN{REVERSE(@FA{list})}: returns the elements in @FA{list} in reversed order.
- @FN{FIRST(@FA{list})}: returns the first element in @FA{list} or `null` if the

View File

@ -42,6 +42,9 @@ User functions can take any number of input arguments and should
provide one result. They should be kept purely functional and thus free of
side effects and state.
Especially it is unsupported to modify any global variables, or to change
data of a collection from an AQL user function.
User function code is late-bound, and may thus not rely on any variables
that existed at the time of declaration. If user function code requires
access to any external data, it must take care to set up the data by

View File

@ -79,7 +79,7 @@ attribute of the object passed to the `_executeTransaction` function. The
db._executeTransaction({
collections: {
write: [ "users", "logins" ],
read: [ "recommendations" ],
read: [ "recommendations" ]
},
...
});
@ -93,7 +93,7 @@ single collection name (as a string):
db._executeTransaction({
collections: {
write: "users",
read: "recommendations",
read: "recommendations"
},
...
});
@ -114,7 +114,7 @@ attribute:
db._executeTransaction({
collections: {
write: "users",
write: "users"
},
action: function () {
/* all operations go here */
@ -128,7 +128,7 @@ of a Javascript function:
db._executeTransaction({
collections: {
write: "users",
write: "users"
},
action: "function () { /* all operations go here */ }"
});
@ -141,7 +141,7 @@ Instead, any variables used inside `action` should be defined inside `action` it
db._executeTransaction({
collections: {
write: "users",
write: "users"
},
action: function () {
var db = require(...).db;
@ -159,7 +159,7 @@ be thrown and not caught inside the transaction:
db._executeTransaction({
collections: {
write: "users",
write: "users"
},
action: function () {
var db = require("internal").db;
@ -178,7 +178,7 @@ case, the user can return any legal Javascript value from the function:
db._executeTransaction({
collections: {
write: "users",
write: "users"
},
action: function () {
var db = require("internal").db;
@ -574,7 +574,7 @@ from inside a running transaction, the server will throw error `1651 (nested
transactions detected`).
It is also disallowed to execute user transaction on some of ArangoDB's own system
collections. This shouldn't be problem for regular usage as system collections will
collections. This shouldn't be a problem for regular usage as system collections will
not contain user data and there is no need to access them from within a user
transaction.

View File

@ -592,6 +592,16 @@ bool ApplicationV8::prepare () {
LOGGER_ERROR("specified dev-app-path '" << _devAppPath << "' does not exist.");
// TODO: decide if we want to abort server start here
}
// check whether package-path exist
if (! _packagePath.empty() && ! FileUtils::isDirectory(_packagePath.c_str())) {
LOGGER_ERROR("specified package-path '" << _packagePath << "' does not exist.");
// TODO: decide if we want to abort server start here
}
else if (_packagePath.empty()) {
LOGGER_ERROR("--javascript.package-path option was not specified. this may cause follow-up errors.");
// TODO: decide if we want to abort server start here
}
_startupLoader.setDirectory(_startupPath);