1
0
Fork 0

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

This commit is contained in:
Frank Celler 2016-02-24 19:29:01 +01:00
commit da7955e417
70 changed files with 875 additions and 719 deletions

View File

@ -514,3 +514,4 @@ add_subdirectory(lib)
add_subdirectory(arangosh)
add_subdirectory(arangod)
add_subdirectory(UnitTests)
add_subdirectory(Documentation)

View File

@ -0,0 +1,38 @@
# -*- mode: CMAKE; -*-
set(MAN_NAMES
man1/arangob.1
man1/arangodump.1
man1/arangoimp.1
man1/arangorestore.1
man1/arangosh.1
man8/rcarangod.8
man8/arangod.8
man8/arango-dfdb.8
man8/foxx-manager.8
)
set(MAN_FILES)
foreach (m IN LISTS MAN_NAMES)
set(msrc ${CMAKE_SOURCE_DIR}/Documentation/${m})
set(mdst ${CMAKE_SOURCE_DIR}/Documentation/man/${m})
add_custom_command(
OUTPUT
${mdst}
COMMAND
${CMAKE_SOURCE_DIR}/utils/manPages.sh ${msrc} ${mdst} ${ARANGODB_VERSION}
DEPENDS
${msrc}
WORKING_DIRECTORY
${CMAKE_BINARY_DIR}
COMMENT
"Building manpage ${mdst}"
VERBATIM
)
list(APPEND MAN_FILES ${mdst})
endforeach ()
add_custom_target(man ALL DEPENDS ${MAN_FILES})

View File

@ -3,14 +3,18 @@
/SYNOPSIS/s/^\(.*\)$/\.SH \1/
/DESCRIPTION/s/^\(.*\)$/\.SH \1/
/OPTIONS/s/^\(.*\)$/\.SH \1/
/\<EXAMPLES\>/s/^\(.*\)$/\.SH \1/
/EXAMPLES/s/^\(.*\)$/\.SH \1/
/FILES/s/^\(.*\)$/\.SH \1/
/AUTHOR/s/^\(.*\)$/\.SH \1/
/AUTHOR/s/^\(.*\)$/\.SH AUTHOR/
/SEE ALSO/s/^\(.*\)$/\.SH \1/
s/\<OPTION\>/\.IP/g
s/\<ENDOPTION\>//g
s/\<EXAMPLE\>/\.EX\nshell>/g
s/\<ENDEXAMPLE\>/\n\.EE\n/g
s/\<EXAMPLE\> \(.*\)/\.nf\
shell> \1\
\.fi\
/g
s/\<ENDEXAMPLE\>/\
/g
/SEE ALSO/,/AUTHOR/{
/^[a-z]/s/^\(.*\)$/\.BR \1/
s/(\([1-9]\))/ "(\1), "/g
@ -19,5 +23,5 @@ s/\<ENDEXAMPLE\>/\n\.EE\n/g
i\
a\
Copyright triAGENS GmbH, Cologne, Germany
Copyright ArangoDB GmbH, Cologne, Germany
}

View File

@ -1,4 +1,4 @@
.TH arangob 1 "Do 23. Jan 09:57:20 CET 2014" "" "ArangoDB"
.TH arangob 1 "23 Feb 2016" "3.0.0-devel" "ArangoDB"
.SH NAME
arangob - the ArangoDB benchmark and test tool
.SH SYNOPSIS
@ -7,68 +7,48 @@ arangob [options]
The arangob binary can be used to issue test requests to the
ArangoDB database. It can be used for benchmarks or server function
testing. It supports parallel querying and batch requests.
arangob currently only supports a few common test cases out of the box.
More test cases might be added later.
.SH OPTIONS
For a complete list of options, please refer to the ArangoDB
online manual, available at http://www.arangodb.org/
The most important startup options are:
.IP "--configuration <string>"
read configuration from file <string>
.IP "--batch-size <int32>"
number of operations to send per batch (use 0 to disable batching)
.IP "--collection <string>"
name of collection to use in test (only relevant for tests that invoke collections)
.IP "--concurrency <int32>"
number of parallel threads that will issue requests (default is 1 thread)
.IP "--requests <int32>"
total number of requests to perform
.IP "--test-case <string>"
name of test case to perform (possible values: "version" and "document")
.IP "--complexity <int32>"
complexity value for test case (meaning depends on test case)
.IP "--server.endpoint <string>"
server endpoint to connect to, consisting of protocol, ip address and port
.IP "--server.database <string>"
database name to use when connection (default: "_system")
.IP "--server.username <string>"
username to use when connecting (default "root")
.IP "--server.password <string>"
password to use when connecting. Don't specify this option to get a password prompt
.IP "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server
.SH EXAMPLES
.EX
shell> arangob
starts arangob with the default user and server endpoint
.EE
.EX
shell> arangob --test-case version --requests 1000 --concurrency 1
runs the 'version' test case with 1000 requests, without concurrency
.EE
.EX
shell> arangob --test-case document --requests 1000 --concurrency 2
runs the 'document' test case with 2000 requests, with concurrency 2
.EE
.EX
shell> arangob --test-case document --requests 1000 --concurrency 2 --async true
runs the 'document' test case with 2000 requests, with concurrency 2, with async requests
.EE
.EX
shell> arangob --test-case document --requests 1000 --concurrency 2 --batch-size 10
runs the 'document' test case with 2000 requests, with concurrency 2, using batch requests
.EE
OPTION "--configuration <string>"
read configuration from file <string> ENDOPTION
OPTION "--batch-size <int32>"
number of operations to send per batch (use 0 to disable batching) ENDOPTION
OPTION "--collection <string>"
name of collection to use in test (only relevant for tests that invoke collections) ENDOPTION
OPTION "--concurrency <int32>"
number of parallel threads that will issue requests (default is 1 thread) ENDOPTION
OPTION "--requests <int32>"
total number of requests to perform ENDOPTION
OPTION "--test-case <string>"
name of test case to perform (possible values: version, document, collection,
import-document, hash, skiplist, edge, shapes, shapes-append, random-shapes, crud,
crud-append, crud-write-read, aqltrx, counttrx, multitrx, multi-collection, aqlinsert, aqlv8) ENDOPTION
OPTION "--complexity <int32>"
complexity value for test case (meaning depends on test case) ENDOPTION
OPTION "--server.endpoint <string>"
server endpoint to connect to, consisting of protocol, ip address and port ENDOPTION
OPTION "--server.database <string>"
database name to use when connecting (default: "_system") ENDOPTION
OPTION "--server.username <string>"
username to use when connecting (default "root") ENDOPTION
OPTION "--server.password <string>"
password to use when connecting. Don't specify this option to get a password prompt ENDOPTION
OPTION "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server ENDOPTION
EXAMPLES
EXAMPLE arangob
starts arangob with the default user and server endpoint ENDEXAMPLE
EXAMPLE arangob --test-case version --requests 1000 --concurrency 1
runs the 'version' test case with 1000 requests, without concurrency ENDEXAMPLE
EXAMPLE arangob --test-case document --requests 1000 --concurrency 2
runs the 'document' test case with 2000 requests, with concurrency 2 ENDEXAMPLE
EXAMPLE arangob --test-case document --requests 1000 --concurrency 2 --async true
runs the 'document' test case with 2000 requests, with concurrency 2, with async requests ENDEXAMPLE
EXAMPLE arangob --test-case document --requests 1000 --concurrency 2 --batch-size 10
runs the 'document' test case with 2000 requests, with concurrency 2, using batch requests ENDEXAMPLE
.SH AUTHOR
Copyright triAGENS GmbH, Cologne, Germany
Copyright ArangoDB GmbH, Cologne, Germany

View File

@ -1,4 +1,4 @@
.TH arangodump 1 "Do 23. Jan 09:57:20 CET 2014" "" "ArangoDB"
.TH arangodump 1 "23 Feb 2016" "3.0.0-devel" "ArangoDB"
.SH NAME
arangodump - a tool to create logical dumps of an ArangoDB database
.SH SYNOPSIS
@ -27,34 +27,33 @@ online manual, available at http://www.arangodb.org/
The most important startup options are:
.IP "--configuration <string>"
read configuration from file <string>
.IP "--collection <string>"
OPTION "--configuration <string>"
read configuration from file <string> ENDOPTION
OPTION "--collection <string>"
name of collection to dump (can be specified multiple times). This can be
used to restrict the dump to certain collections only. If not specified,
all collections will be dumped
.IP "--dump-data <bool>"
when set to "true" will dump the data (documents) of the collection
.IP "--include-system-collections <bool>"
when set to "true" will also dump system collections, otherwise they will be excluded
.IP "--output-directory <string>"
all collections will be dumped ENDOPTION
OPTION "--dump-data <bool>"
when set to "true" will dump the data (documents) of the collection ENDOPTION
OPTION "--include-system-collections <bool>"
when set to "true" will also dump system collections, otherwise they will be excluded ENDOPTION
OPTION "--output-directory <string>"
directory in which all dump files will be created. If the directory already exists,
arangodump will refuse to work unless started with option "--overwrite true"
.IP "--overwrite <bool>"
when set to "true", will overwrite any files in an existing output directory
.IP "--progress <bool>"
when set to "true", will display progress information
.IP "--server.endpoint <string>"
server endpoint to connect to, consisting of protocol, ip address and port
.IP "--server.database <string>"
database name to use when connection (default: "_system")
.IP "--server.username <string>"
username to use when connecting (default "root")
.IP "--server.password <string>"
password to use when connecting. Don't specify this option to get a password prompt
.IP "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server
.SH EXAMPLES
arangodump will refuse to work unless started with option "--overwrite true" ENDOPTION
OPTION "--overwrite <bool>"
when set to "true", will overwrite any files in an existing output directory ENDOPTION
OPTION "--progress <bool>"
when set to "true", will display progress information ENDOPTION
OPTION "--server.endpoint <string>"
server endpoint to connect to, consisting of protocol, ip address and port ENDOPTION
OPTION "--server.database <string>"
database name to use when connection (default: "_system") ENDOPTION
OPTION "--server.username <string>"
username to use when connecting (default "root") ENDOPTION
OPTION "--server.password <string>"
password to use when connecting. Don't specify this option to get a password prompt ENDOPTION
OPTION "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server ENDOPTION
EXAMPLES
.SH AUTHOR
Copyright triAGENS GmbH, Cologne, Germany
Copyright ArangoDB GmbH, Cologne, Germany

View File

@ -1,4 +1,4 @@
.TH arangoimp 1 "Do 23. Jan 09:57:20 CET 2014" "" "ArangoDB"
.TH arangoimp 1 "23 Feb 2016" "3.0.0-devel" "ArangoDB"
.SH NAME
arangoimp - a bulk importer for the ArangoDB database
.SH SYNOPSIS
@ -15,50 +15,40 @@ online manual, available at http://www.arangodb.org/
The most important startup options are:
.IP "--batch-size <uint64>"
maximum size of data batches that are sent to the server
.IP "--configuration <string>"
read configuration from file <string>
.IP "--collection <string>"
name of collection to import into
.IP "--create-collection <bool>"
set to "true" if collection should be created by the import
.IP "--file <string>"
input file with the data to import
.IP "--overwrite <bool>"
set to "true" to remove all data from the collection prior to the import
.IP "--quote <string>"
optional quote character to be used
.IP "--separator <string>"
separator character or string to be used. the default value is ","
.IP "--type <string>"
set to "json", "tsv" or "csv", depending on the input file format
.IP "--server.endpoint <string>"
server endpoint to connect to, consisting of protocol, ip address and port
.IP "--server.database <string>"
database name to use when connection (default: "_system")
.IP "--server.username <string>"
username to use when connecting (default "root")
.IP "--server.password <string>"
password to use when connecting. Don't specify this option to get a password prompt
.IP "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server
.SH EXAMPLES
.EX
shell> arangoimp --file heroes.json --type json --collection superheroes --create-collection true
imports JSON data from file heroes.json into collection superhoeres. creates the collection if it does not exist
.EE
.EX
shell> arangoimp --file export.csv --type csv --collection mydata
imports CSV data from export.csv into existing collection mydata
.EE
.EX
shell> arangoimp --file values.json --collection mydata --server.endpoint tcp://127.0.0.1:8529 --server.database mydb
imports JSON data from file values.json into collection mydata, using a different server endpoint and database
.EE
OPTION "--batch-size <uint64>"
maximum size of data batches that are sent to the server ENDOPTION
OPTION "--configuration <string>"
read configuration from file <string> ENDOPTION
OPTION "--collection <string>"
name of collection to import into ENDOPTION
OPTION "--create-collection <bool>"
set to "true" if collection should be created by the import ENDOPTION
OPTION "--file <string>"
input file with the data to import ENDOPTION
OPTION "--overwrite <bool>"
set to "true" to remove all data from the collection prior to the import ENDOPTION
OPTION "--quote <string>"
optional quote character to be used ENDOPTION
OPTION "--separator <string>"
separator character or string to be used. the default value is "," ENDOPTION
OPTION "--type <string>"
set to "json", "tsv" or "csv", depending on the input file format ENDOPTION
OPTION "--server.endpoint <string>"
server endpoint to connect to, consisting of protocol, ip address and port ENDOPTION
OPTION "--server.database <string>"
database name to use when connection (default: "_system") ENDOPTION
OPTION "--server.username <string>"
username to use when connecting (default "root") ENDOPTION
OPTION "--server.password <string>"
password to use when connecting. Don't specify this option to get a password prompt ENDOPTION
OPTION "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server ENDOPTION
EXAMPLES
EXAMPLE arangoimp --file heroes.json --type json --collection superheroes --create-collection true
imports JSON data from file heroes.json into collection superhoeres. creates the collection if it does not exist ENDEXAMPLE
EXAMPLE arangoimp --file export.csv --type csv --collection mydata
imports CSV data from export.csv into existing collection mydata ENDEXAMPLE
EXAMPLE arangoimp --file values.json --collection mydata --server.endpoint tcp://127.0.0.1:8529 --server.database mydb
imports JSON data from file values.json into collection mydata, using a different server endpoint and database ENDEXAMPLE
.SH AUTHOR
Copyright triAGENS GmbH, Cologne, Germany
Copyright ArangoDB GmbH, Cologne, Germany

View File

@ -1,4 +1,5 @@
.TH arangorestore 1 "Do 23. Jan 09:57:20 CET 2014" "" "ArangoDB"
.TH arangorestore 1 "23 Feb 2016" "3.0.0-devel" "ArangoDB"
arangorestore SECTION "DATE" "" "ArangoDB"
.SH NAME
arangorestore - a data restore tool for the ArangoDB database
.SH SYNOPSIS
@ -16,36 +17,35 @@ online manual, available at http://www.arangodb.org/
The most important startup options are:
.IP "--configuration <string>"
read configuration from file <string>
.IP "--collection <string>"
OPTION "--configuration <string>"
read configuration from file <string> ENDOPTION
OPTION "--collection <string>"
name of collection to restore (can be specified multiple times). This can be
used to restrict the restore operation to certain collections only. If not
specified, all collections from the "--input-directory" will be restored
.IP "--create-collection <bool>"
set to "true" if collections should be created
.IP "--import-data <bool>"
when set to "true" will restore the data (documents) of the collection
.IP "--include-system-collections <bool>"
specified, all collections from the "--input-directory" will be restored ENDOPTION
OPTION "--create-collection <bool>"
set to "true" if collections should be created ENDOPTION
OPTION "--import-data <bool>"
when set to "true" will restore the data (documents) of the collection ENDOPTION
OPTION "--include-system-collections <bool>"
when set to "true" will also restore system collections, otherwise they will be
excluded
.IP "--input-directory <string>"
input directory in which to look for dump files.
.IP "--overwrite <bool>"
when set to "true", will drop an existing collection before re-creating it
.IP "--progress <bool>"
when set to "true", will display progress information
.IP "--server.endpoint <string>"
server endpoint to connect to, consisting of protocol, ip address and port
.IP "--server.database <string>"
database name to use when connection (default: "_system")
.IP "--server.username <string>"
username to use when connecting (default "root")
.IP "--server.password <string>"
password to use when connecting. Don't specify this option to get a password prompt
.IP "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server
.SH EXAMPLES
excluded ENDOPTION
OPTION "--input-directory <string>"
input directory in which to look for dump files. ENDOPTION
OPTION "--overwrite <bool>"
when set to "true", will drop an existing collection before re-creating it ENDOPTION
OPTION "--progress <bool>"
when set to "true", will display progress information ENDOPTION
OPTION "--server.endpoint <string>"
server endpoint to connect to, consisting of protocol, ip address and port ENDOPTION
OPTION "--server.database <string>"
database name to use when connection (default: "_system") ENDOPTION
OPTION "--server.username <string>"
username to use when connecting (default "root") ENDOPTION
OPTION "--server.password <string>"
password to use when connecting. Don't specify this option to get a password prompt ENDOPTION
OPTION "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server ENDOPTION
EXAMPLES
.SH AUTHOR
Copyright triAGENS GmbH, Cologne, Germany
Copyright ArangoDB GmbH, Cologne, Germany

View File

@ -1,4 +1,4 @@
.TH arangosh 1 "Do 23. Jan 09:57:20 CET 2014" "" "ArangoDB"
.TH arangosh 1 "23 Feb 2016" "3.0.0-devel" "ArangoDB"
.SH NAME
arangosh - the ArangoDB shell
.SH SYNOPSIS
@ -15,50 +15,65 @@ The most important startup options are:
.IP "--audit-log <string>"
log input and output to audit log file <string>
.IP "--configuration <string>"
read configuration from file <string>
.IP "--log.level <string>"
set the log level (possible values: "fatal", "error", "warning", "info", "debug", "trace")
.IP "--server.endpoint <string>"
server endpoint to connect to, consisting of protocol, ip address and port
.IP "--server.database <string>"
database name to use when connection (default: "_system")
.IP "--server.username <string>"
username to use when connecting (default "root")
.IP "--server.password <string>"
password to use when connecting. Don't specify this option to get a password prompt
.IP "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server
.SH EXAMPLES
.EX
.nf
shell> arangosh
.fi
starts arangosh with the default user and server endpoint
.EE
.EX
.nf
shell> arangosh --server.username fuchsia
.fi
starts arangosh with a specific user. Password prompt will follow if --server.disable-authentication is true.
.EE
.EX
.nf
shell> arangosh --server.username fuchsia --server.password "abcd@34"
.fi
starts arangosh with a specific user and password given on command line
.EE
.EX
.nf
shell> arangosh --server.endpoint tcp://192.168.173.13:8529
.fi
starts arangosh connecting to a specific server
.EE
.EX
.nf
shell> arangosh --server.endpoint ssl://192.168.173.13:8530
.fi
starts arangosh connecting to a specific server using an SSL connection
.EE
.SH AUTHOR
Copyright triAGENS GmbH, Cologne, Germany
Copyright ArangoDB GmbH, Cologne, Germany

View File

@ -1,24 +1,20 @@
.TH arango-dfdb 8 "Do 23. Jan 09:57:20 CET 2014" "" "ArangoDB"
.TH COMMAND SECTION "DATE" "" "ArangoDB"
.SH NAME
arango-dfdb - a datafile debugger for ArangoDB
COMMAND - a datafile debugger for ArangoDB
.SH SYNOPSIS
arango-dfdb options
COMMAND options
.SH DESCRIPTION
The arango-dfdb binary can be used to verify the datafiles of an
The COMMAND binary can be used to verify the datafiles of an
ArangoDB database server. The script must be run with exclusive
access to the server's data directory, meaning the ArangoDB
server must not be running and accessing the datafiles in the
specified data directory.
More specific instructions are displayed when the program is invoked.
.SH OPTIONS
.IP "--database.directory <string>"
path to the database directory
.SH EXAMPLES
.EX
shell> arango-dfdb --database.directory /data/arangodb
starts the debugger with database directory /data/arangodb
.EE
OPTION "--database.directory <string>"
path to the database directory ENDOPTION
EXAMPLES
EXAMPLE COMMAND --database.directory /data/arangodb
starts the debugger with database directory /data/arangodb ENDEXAMPLE
.SH AUTHOR
Copyright triAGENS GmbH, Cologne, Germany
Copyright triAGENS GmbH, Cologne, Germany

View File

@ -1,10 +1,10 @@
.TH arangod 8 "Do 23. Jan 09:57:20 CET 2014" "" "ArangoDB"
.TH COMMAND SECTION "DATE" "" "ArangoDB"
.SH NAME
arangod - the ArangoDB database server
COMMAND - the ArangoDB database server
.SH SYNOPSIS
arangod [options] database-directory
COMMAND [options] database-directory
.SH DESCRIPTION
The arangod binary can be used to start the ArangoDB database
The COMMAND binary can be used to start the ArangoDB database
server. By default, the server will run in a mode that allows
clients to connect to it via the network. The server also has
an emergency console mode that can be used for any sort of
@ -13,59 +13,40 @@ server does not allow any clients to connect.
The server can be stopped gracefully at any time by pressing
CTRL-C or by sending the SIGINT signal to the process.
.SH OPTIONS
The arangod binary has many options that can be used to control
The COMMAND binary has many options that can be used to control
its behavior.
For a complete list of options, please refer to the ArangoDB
online manual, available at http://www.arangodb.org/
The most important startup options are:
.IP "--configuration <string>"
read configuration from file <string>
.IP "--console"
do not start as server, start an emergency console instead
.IP "--log.file <string>"
log to file <string>
.IP "--log.level <string>"
set the log level (possible values: "fatal", "error", "warning", "info", "debug", "trace")
.IP "--server.endpoint <string>"
listen endpoint for client requests, consisting of protocol, ip address and port
.IP "--server.disable-authentication <boolean>"
disable authentication for all clients
.IP "--database.directory <string>"
path to the database directory
.SH EXAMPLES
.EX
shell> arangod /data/arangodb
starts the server with database directory /data/arangodb
.EE
.EX
shell> arangod --database.directory /data/arangodb
same, but uses --database.directory option instead
.EE
.EX
shell> arangod --log.level debug /data/arangodb
starts server with log level "debug"
.EE
.EX
shell> arangod --server.endpoint tcp://127.0.0.1:8529 /data/arangodb
starts server listening on port 8529 of IP 127.0.0.1
.EE
.EX
shell> arangod --server.endpoint tcp://192.168.173.13:8529
OPTION "--configuration <string>"
read configuration from file <string> ENDOPTION
OPTION "--console"
do not start as server, start an emergency console instead ENDOPTION
OPTION "--log.file <string>"
log to file <string> ENDOPTION
OPTION "--log.level <string>"
set the log level (possible values: "fatal", "error", "warning", "info", "debug", "trace") ENDOPTION
OPTION "--server.endpoint <string>"
listen endpoint for client requests, consisting of protocol, ip address and port ENDOPTION
OPTION "--server.disable-authentication <boolean>"
disable authentication for all clients ENDOPTION
OPTION "--database.directory <string>"
path to the database directory ENDOPTION
EXAMPLES
EXAMPLE COMMAND /data/arangodb
starts the server with database directory /data/arangodb ENDEXAMPLE
EXAMPLE COMMAND --database.directory /data/arangodb
same, but uses --database.directory option instead ENDEXAMPLE
EXAMPLE COMMAND --log.level debug /data/arangodb
starts server with log level "debug" ENDEXAMPLE
EXAMPLE COMMAND --server.endpoint tcp://127.0.0.1:8529 /data/arangodb
starts server listening on port 8529 of IP 127.0.0.1 ENDEXAMPLE
EXAMPLE COMMAND --server.endpoint tcp://192.168.173.13:8529
--server.endpoint ssl://192.168.173.13:8530 /data/arangodb
starts server with two endpoints: port 8529 for unencrypted requests and 8530 for ssl-encrypted requests
.EE
.EX
shell> arangod --console /data/arangodb
starts the emergency console
.EE
starts server with two endpoints: port 8529 for unencrypted requests and 8530 for ssl-encrypted requests ENDEXAMPLE
EXAMPLE COMMAND --console /data/arangodb
starts the emergency console ENDEXAMPLE
.SH AUTHOR
Copyright triAGENS GmbH, Cologne, Germany
Copyright triAGENS GmbH, Cologne, Germany

View File

@ -1,47 +1,34 @@
.TH foxx-manager 8 "Do 23. Jan 09:57:20 CET 2014" "" "ArangoDB"
.TH COMMAND SECTION "DATE" "" "ArangoDB"
.SH NAME
foxx-manager - a Foxx application manager for ArangoDB
COMMAND - a Foxx application manager for ArangoDB
.SH SYNOPSIS
foxx-manager options
COMMAND options
.SH DESCRIPTION
The foxx-manager binary can be used to manage Foxx applications in the
The COMMAND binary can be used to manage Foxx applications in the
ArangoDB database server. Foxx applications can be installed and
uninstalled.
More specific instructions are displayed when the program is invoked.
.SH OPTIONS
.IP "--server.database <string>"
database name to use when connection (default: "_system")
.IP "--server.username <string>"
username to use when connecting (default "root")
.IP "--server.password <string>"
password to use when connecting. Don't specify this option to get a password prompt
.IP "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server
.SH EXAMPLES
.EX
shell> foxx-manager search "foobar"
searches the central repository for an application "foobar"
.EE
.EX
shell> foxx-manager update
OPTION "--server.database <string>"
database name to use when connecting (default: "_system") ENDOPTION
OPTION "--server.username <string>"
username to use when connecting (default "root") ENDOPTION
OPTION "--server.password <string>"
password to use when connecting. Don't specify this option to get a password prompt ENDOPTION
OPTION "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server ENDOPTION
EXAMPLES
EXAMPLE COMMAND search "foobar"
searches the central repository for an application "foobar"ENDEXAMPLE
EXAMPLE COMMAND update
updates the local repository with applications from the central repositoryENDEXAMPLE
.EX
shell> foxx-manager list
EXAMPLE COMMAND list
list all installed Foxx applicationsENDEXAMPLE
.EX
shell> foxx-manager install "hello-foxx" "/hello"
installs the "hello-foxx" application under the mount point "/hello"
.EE
.EX
shell> foxx-manager uninstall "/hello"
uninstalls the application that is mounted under "/hello"
.EE
.EX
shell> foxx-manager help
EXAMPLE COMMAND install "hello-foxx" "/hello"
installs the "hello-foxx" application under the mount point "/hello"ENDEXAMPLE
EXAMPLE COMMAND uninstall "/hello"
uninstalls the application that is mounted under "/hello"ENDEXAMPLE
EXAMPLE COMMAND help
shows the help pageENDEXAMPLE
.SH AUTHOR
Copyright triAGENS GmbH, Cologne, Germany
Copyright triAGENS GmbH, Cologne, Germany

View File

@ -1,17 +1,16 @@
.TH rcarangod 8 "Do 23. Jan 09:57:20 CET 2014" "" "ArangoDB"
.TH COMMAND SECTION "DATE" "" "ArangoDB"
.SH NAME
rcarangod - control script for the ArangoDB database server
COMMAND - control script for the ArangoDB database server
.SH SYNOPSIS
rcarangod start|stop
COMMAND start|stop
.SH DESCRIPTION
The rcarangod script controls the operation of the ArangoDB
database server daemon running on the system. The rcarangod script
The COMMAND script controls the operation of the ArangoDB
database server daemon running on the system. The COMMAND script
is normally run at system boot time with the "start" argument, and
at system shutdown time with the "stop" argument.
It can also be invoked manually at any time to start or stop the
ArangoDB database server.
.SH SEE ALSO
.BR arangod "(8), "
.SH AUTHOR
Copyright triAGENS GmbH, Cologne, Germany
Copyright triAGENS GmbH, Cologne, Germany

View File

@ -1,8 +1,8 @@
COMMAND SECTION "DATE" "" "ArangoDB"
<COMMAND> <SECTION> "<DATE>" "<VERSION>" "ArangoDB"
NAME
COMMAND - the ArangoDB benchmark and test tool
<COMMAND> - the ArangoDB benchmark and test tool
SYNOPSIS
COMMAND [options]
<COMMAND> [options]
DESCRIPTION
The arangob binary can be used to issue test requests to the
ArangoDB database. It can be used for benchmarks or server function
@ -40,14 +40,14 @@ password to use when connecting. Don't specify this option to get a password pro
OPTION "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server ENDOPTION
EXAMPLES
EXAMPLE COMMAND
starts COMMAND with the default user and server endpoint ENDEXAMPLE
EXAMPLE COMMAND --test-case version --requests 1000 --concurrency 1
EXAMPLE <COMMAND>
starts <COMMAND> with the default user and server endpoint ENDEXAMPLE
EXAMPLE <COMMAND> --test-case version --requests 1000 --concurrency 1
runs the 'version' test case with 1000 requests, without concurrency ENDEXAMPLE
EXAMPLE COMMAND --test-case document --requests 1000 --concurrency 2
EXAMPLE <COMMAND> --test-case document --requests 1000 --concurrency 2
runs the 'document' test case with 2000 requests, with concurrency 2 ENDEXAMPLE
EXAMPLE COMMAND --test-case document --requests 1000 --concurrency 2 --async true
EXAMPLE <COMMAND> --test-case document --requests 1000 --concurrency 2 --async true
runs the 'document' test case with 2000 requests, with concurrency 2, with async requests ENDEXAMPLE
EXAMPLE COMMAND --test-case document --requests 1000 --concurrency 2 --batch-size 10
EXAMPLE <COMMAND> --test-case document --requests 1000 --concurrency 2 --batch-size 10
runs the 'document' test case with 2000 requests, with concurrency 2, using batch requests ENDEXAMPLE
AUTHOR

View File

@ -1,10 +1,10 @@
COMMAND SECTION "DATE" "" "ArangoDB"
<COMMAND> <SECTION> "<DATE>" "<VERSION>" "ArangoDB"
NAME
COMMAND - a tool to create logical dumps of an ArangoDB database
<COMMAND> - a tool to create logical dumps of an ArangoDB database
SYNOPSIS
COMMAND [options]
<COMMAND> [options]
DESCRIPTION
The COMMAND binary can be used to create logical dumps of collection
The <COMMAND> binary can be used to create logical dumps of collection
meta information and collection data (documents) of an ArangoDB database.
By default, all non-system collections of the specified ArangoDB database
will be dumped with structural information and data.
@ -13,11 +13,11 @@ For each collection, a file named "<collection>.structure.json" will be
created with information about the collection. When data is also dumped,
an additional file "<collection>.data.json" will also be created.
All dump files will be placed in a directory, which will be created by
COMMAND when run. If the directory already exists, COMMAND will refuse to
<COMMAND> when run. If the directory already exists, <COMMAND> will refuse to
work unless started with the option "--overwrite true".
COMMAND will work on the specified database only. If no database name
is specified, COMMAND will work on the default database ("_system").
<COMMAND> will work on the specified database only. If no database name
is specified, <COMMAND> will work on the default database ("_system").
The dumped files can be re-stored in an ArangoDB database using the
arangorestore tool.
@ -39,7 +39,7 @@ OPTION "--include-system-collections <bool>"
when set to "true" will also dump system collections, otherwise they will be excluded ENDOPTION
OPTION "--output-directory <string>"
directory in which all dump files will be created. If the directory already exists,
COMMAND will refuse to work unless started with option "--overwrite true" ENDOPTION
<COMMAND> will refuse to work unless started with option "--overwrite true" ENDOPTION
OPTION "--overwrite <bool>"
when set to "true", will overwrite any files in an existing output directory ENDOPTION
OPTION "--progress <bool>"

View File

@ -1,10 +1,10 @@
COMMAND SECTION "DATE" "" "ArangoDB"
<COMMAND> <SECTION> "<DATE>" "<VERSION>" "ArangoDB"
NAME
COMMAND - a bulk importer for the ArangoDB database
<COMMAND> - a bulk importer for the ArangoDB database
SYNOPSIS
COMMAND [options]
<COMMAND> [options]
DESCRIPTION
The COMMAND binary can be used to bulk import data from a file into the
The <COMMAND> binary can be used to bulk import data from a file into the
ArangoDB database. Input data be present in the input file in either CSV
format with column headlines, or in JSON format. If JSON format is used,
each line in the input file must contain exactly one JSON document with
@ -44,10 +44,10 @@ password to use when connecting. Don't specify this option to get a password pro
OPTION "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server ENDOPTION
EXAMPLES
EXAMPLE COMMAND --file heroes.json --type json --collection superheroes --create-collection true
EXAMPLE <COMMAND> --file heroes.json --type json --collection superheroes --create-collection true
imports JSON data from file heroes.json into collection superhoeres. creates the collection if it does not exist ENDEXAMPLE
EXAMPLE COMMAND --file export.csv --type csv --collection mydata
EXAMPLE <COMMAND> --file export.csv --type csv --collection mydata
imports CSV data from export.csv into existing collection mydata ENDEXAMPLE
EXAMPLE COMMAND --file values.json --collection mydata --server.endpoint tcp://127.0.0.1:8529 --server.database mydb
EXAMPLE <COMMAND> --file values.json --collection mydata --server.endpoint tcp://127.0.0.1:8529 --server.database mydb
imports JSON data from file values.json into collection mydata, using a different server endpoint and database ENDEXAMPLE
AUTHOR

View File

@ -1,10 +1,11 @@
COMMAND SECTION "DATE" "" "ArangoDB"
<COMMAND> <SECTION> "<DATE>" "<VERSION>" "ArangoDB"
<COMMAND> SECTION "DATE" "" "ArangoDB"
NAME
COMMAND - a data restore tool for the ArangoDB database
<COMMAND> - a data restore tool for the ArangoDB database
SYNOPSIS
COMMAND [options]
<COMMAND> [options]
DESCRIPTION
The COMMAND binary can be used to restore data from logical dumps created
The <COMMAND> binary can be used to restore data from logical dumps created
with the arangodump tool.
ArangoDB database. Input data be present in the input file in either CSV
format with column headlines, or in JSON format. If JSON format is used,

View File

@ -1,43 +0,0 @@
COMMAND SECTION "DATE" "" "ArangoDB"
NAME
COMMAND - the ArangoDB shell
SYNOPSIS
COMMAND [options]
DESCRIPTION
The arangosh binary can be used to establish an interactive
client connection to the ArangoDB database. When the connection
is established, it can be used to execute actions on the server.
OPTIONS
For a complete list of options, please refer to the ArangoDB
online manual, available at http://www.arangodb.org/
The most important startup options are:
OPTION "--audit-log <string>"
log input and output to audit log file <string> ENDOPTION
OPTION "--configuration <string>"
read configuration from file <string> ENDOPTION
OPTION "--log.level <string>"
set the log level (possible values: "fatal", "error", "warning", "info", "debug", "trace") ENDOPTION
OPTION "--server.endpoint <string>"
server endpoint to connect to, consisting of protocol, ip address and port ENDOPTION
OPTION "--server.database <string>"
database name to use when connection (default: "_system") ENDOPTION
OPTION "--server.username <string>"
username to use when connecting (default "root") ENDOPTION
OPTION "--server.password <string>"
password to use when connecting. Don't specify this option to get a password prompt ENDOPTION
OPTION "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server ENDOPTION
EXAMPLES
EXAMPLE COMMAND
starts COMMAND with the default user and server endpoint ENDEXAMPLE
EXAMPLE COMMAND --server.username fuchsia
starts COMMAND with a specific user. Password prompt will follow if --server.disable-authentication is true. ENDEXAMPLE
EXAMPLE COMMAND --server.username fuchsia --server.password "abcd@34"
starts COMMAND with a specific user and password given on command line ENDEXAMPLE
EXAMPLE COMMAND --server.endpoint tcp://192.168.173.13:8529
starts COMMAND connecting to a specific server ENDEXAMPLE
EXAMPLE COMMAND --server.endpoint ssl://192.168.173.13:8530
starts COMMAND connecting to a specific server using an SSL connection ENDEXAMPLE
AUTHOR

View File

@ -0,0 +1,58 @@
<COMMAND> <SECTION> "<DATE>" "<VERSION>" "ArangoDB"
NAME
<COMMAND> - the ArangoDB shell
SYNOPSIS
<COMMAND> [options]
DESCRIPTION
The arangosh binary can be used to establish an interactive
client connection to the ArangoDB database. When the connection
is established, it can be used to execute actions on the server.
OPTIONS
For a complete list of options, please refer to the ArangoDB
online manual, available at http://www.arangodb.org/
The most important startup options are:
<OPTION> "--audit-log <string>"
log input and output to audit log file <string>
<ENDOPTION>
<OPTION> "--configuration <string>"
read configuration from file <string>
<ENDOPTION>
<OPTION> "--log.level <string>"
set the log level (possible values: "fatal", "error", "warning", "info", "debug", "trace")
<ENDOPTION>
<OPTION> "--server.endpoint <string>"
server endpoint to connect to, consisting of protocol, ip address and port
<ENDOPTION>
<OPTION> "--server.database <string>"
database name to use when connection (default: "_system")
<ENDOPTION>
<OPTION> "--server.username <string>"
username to use when connecting (default "root")
<ENDOPTION>
<OPTION> "--server.password <string>"
password to use when connecting. Don't specify this option to get a password prompt
<ENDOPTION>
<OPTION> "--server.disable-authentication <boolean>"
disable the password prompt and authentication when connecting to the server
<ENDOPTION>
EXAMPLES
<EXAMPLE> <COMMAND>
starts <COMMAND> with the default user and server endpoint
<ENDEXAMPLE>
<EXAMPLE> <COMMAND> --server.username fuchsia
starts <COMMAND> with a specific user. Password prompt will follow if --server.disable-authentication is true.
<ENDEXAMPLE>
<EXAMPLE> <COMMAND> --server.username fuchsia --server.password "abcd@34"
starts <COMMAND> with a specific user and password given on command line
<ENDEXAMPLE>
<EXAMPLE> <COMMAND> --server.endpoint tcp://192.168.173.13:8529
starts <COMMAND> connecting to a specific server
<ENDEXAMPLE>
<EXAMPLE> <COMMAND> --server.endpoint ssl://192.168.173.13:8530
starts <COMMAND> connecting to a specific server using an SSL connection
<ENDEXAMPLE>
AUTHOR

View File

@ -46,9 +46,7 @@ struct PermutationState {
: value(value), current(0), n(n) {}
arangodb::aql::AstNode const* getValue() const {
if (value->type == arangodb::aql::NODE_TYPE_OPERATOR_BINARY_AND ||
value->type == arangodb::aql::NODE_TYPE_OPERATOR_BINARY_OR ||
value->type == arangodb::aql::NODE_TYPE_OPERATOR_NARY_AND ||
if (value->type == arangodb::aql::NODE_TYPE_OPERATOR_BINARY_OR ||
value->type == arangodb::aql::NODE_TYPE_OPERATOR_NARY_OR) {
TRI_ASSERT(current < n);
return value->getMember(current);

View File

@ -567,7 +567,7 @@ bool AgencyComm::tryInitializeStructure() {
VPackSlice trueSlice = trueBuilder.slice();
AgencyCommResult result;
result = casValue("Init", trueSlice, false, 10.0, 0.0);
result = casValue("Init", trueSlice, false, 120.0, 0.0);
if (!result.successful()) {
// mop: we couldn"t aquire a lock. so somebody else is already initializing
return false;
@ -685,8 +685,13 @@ bool AgencyComm::initFromVPackSlice(std::string key, VPackSlice s) {
if (!key.empty()) {
result = createDirectory(key);
if (!result.successful()) {
ret = false;
return ret;
// mop: forbidden will be thrown if directory already exists
// need ability to recover in a case where the agency was half
// initialized
if (result.httpCode() != arangodb::rest::HttpResponse::FORBIDDEN) {
ret = false;
return ret;
}
}
}

View File

@ -68,7 +68,8 @@ HeartbeatThread::HeartbeatThread(
_numFails(0),
_numDispatchedJobs(0),
_lastDispatchedJobResult(false),
_versionThatTriggeredLastJob(0) {
_versionThatTriggeredLastJob(0),
_ready(false) {
TRI_ASSERT(_dispatcher != nullptr);
}
@ -76,7 +77,7 @@ HeartbeatThread::HeartbeatThread(
/// @brief destroys a heartbeat thread
////////////////////////////////////////////////////////////////////////////////
HeartbeatThread::~HeartbeatThread() {shutdown();}
HeartbeatThread::~HeartbeatThread() { shutdown(); }
////////////////////////////////////////////////////////////////////////////////
/// @brief heartbeat main loop
@ -121,7 +122,7 @@ void HeartbeatThread::runDBServer() {
uint64_t agencyIndex = 0;
while (!_stop) {
while (!isStopping()) {
LOG(TRACE) << "sending heartbeat to agency";
double const start = TRI_microtime();
@ -130,7 +131,7 @@ void HeartbeatThread::runDBServer() {
// we don't care if this fails
sendState();
if (_stop) {
if (isStopping()) {
break;
}
@ -144,7 +145,7 @@ void HeartbeatThread::runDBServer() {
}
}
if (_stop) {
if (isStopping()) {
break;
}
@ -216,16 +217,12 @@ void HeartbeatThread::runDBServer() {
handlePlanChangeDBServer(lastPlanVersionNoticed);
}
if (_stop) {
if (isStopping()) {
break;
}
}
}
// another thread is waiting for this value to appear in order to shut down
// properly
_stop = 2;
// Wait until any pending job is finished
int count = 0;
while (count++ < 10000) {
@ -237,6 +234,7 @@ void HeartbeatThread::runDBServer() {
}
usleep(1000);
}
LOG(TRACE) << "stopped heartbeat thread (DBServer version)";
}
@ -269,7 +267,7 @@ void HeartbeatThread::runCoordinator() {
setReady();
while (!_stop) {
while (!isStopping()) {
LOG(TRACE) << "sending heartbeat to agency";
double const start = TRI_microtime();
@ -278,7 +276,7 @@ void HeartbeatThread::runCoordinator() {
// we don't care if this fails
sendState();
if (_stop) {
if (isStopping()) {
break;
}
@ -292,7 +290,7 @@ void HeartbeatThread::runCoordinator() {
}
}
if (_stop) {
if (isStopping()) {
break;
}
@ -381,10 +379,6 @@ void HeartbeatThread::runCoordinator() {
}
}
// another thread is waiting for this value to appear in order to shut down
// properly
_stop = 2;
LOG(TRACE) << "stopped heartbeat thread";
}
@ -402,25 +396,6 @@ bool HeartbeatThread::init() {
return true;
}
////////////////////////////////////////////////////////////////////////////////
/// @brief whether or not the thread is ready
////////////////////////////////////////////////////////////////////////////////
bool HeartbeatThread::isReady() {
MUTEX_LOCKER(mutexLocker, _statusLock);
return _ready;
}
////////////////////////////////////////////////////////////////////////////////
/// @brief set the thread status to ready
////////////////////////////////////////////////////////////////////////////////
void HeartbeatThread::setReady() {
MUTEX_LOCKER(mutexLocker, _statusLock);
_ready = true;
}
////////////////////////////////////////////////////////////////////////////////
/// @brief decrement the counter for dispatched jobs
////////////////////////////////////////////////////////////////////////////////

View File

@ -63,13 +63,13 @@ class HeartbeatThread : public Thread {
/// @brief whether or not the thread is ready
//////////////////////////////////////////////////////////////////////////////
bool isReady();
bool isReady() const { return _ready.load(); }
//////////////////////////////////////////////////////////////////////////////
/// @brief set the thread status to ready
//////////////////////////////////////////////////////////////////////////////
void setReady();
void setReady() { _ready.store(true); }
//////////////////////////////////////////////////////////////////////////////
/// @brief decrement the counter for a dispatched job, the argument is true
@ -237,13 +237,7 @@ class HeartbeatThread : public Thread {
/// @brief whether or not the thread is ready
//////////////////////////////////////////////////////////////////////////////
bool _ready;
//////////////////////////////////////////////////////////////////////////////
/// @brief stop flag
//////////////////////////////////////////////////////////////////////////////
volatile sig_atomic_t _stop;
std::atomic<bool> _ready;
//////////////////////////////////////////////////////////////////////////////
/// @brief whether or not the heartbeat thread has run at least once

View File

@ -499,7 +499,7 @@ TRI_voc_rid_t RestVocbaseBaseHandler::extractRevision(char const* header,
--e;
}
TRI_voc_rid_t rid;
TRI_voc_rid_t rid = 0;
try {
rid = StringUtils::uint64_check(s, e - s);
@ -516,7 +516,7 @@ TRI_voc_rid_t RestVocbaseBaseHandler::extractRevision(char const* header,
etag = _request->value(parameter, found);
if (found) {
TRI_voc_rid_t rid;
TRI_voc_rid_t rid = 0;
try {
rid = StringUtils::uint64_check(etag);

View File

@ -256,8 +256,7 @@ static TRI_col_file_structure_t ScanCollectionDirectory(char const* path) {
FileUtils::remove(filename);
LOG_TOPIC(WARN, Logger::DATAFILES)
<< "removing left-over compaction file '" << filename.c_str()
<< "'";
<< "removing left-over compaction file '" << filename << "'";
continue;
} else {
@ -271,9 +270,7 @@ static TRI_col_file_structure_t ScanCollectionDirectory(char const* path) {
if (res != TRI_ERROR_NO_ERROR) {
LOG_TOPIC(ERR, Logger::DATAFILES)
<< "unable to rename compaction file '" << filename.c_str()
<< "'";
<< "unable to rename compaction file '" << filename << "'";
continue;
}
}
@ -285,15 +282,15 @@ static TRI_col_file_structure_t ScanCollectionDirectory(char const* path) {
// temporary file, we can delete it!
else if (filetype == "temp") {
LOG_TOPIC(WARN, Logger::DATAFILES)
<< "found temporary file '" << filename.c_str()
<< "found temporary file '" << filename
<< "', which is probably a left-over. deleting it";
TRI_UnlinkFile(filename.c_str());
FileUtils::remove(filename);
}
// ups, what kind of file is that
else {
LOG_TOPIC(ERR, Logger::DATAFILES) << "unknown datafile type '"
<< file.c_str() << "'";
<< file << "'";
}
}
}
@ -365,12 +362,13 @@ static bool CheckCollection(TRI_collection_t* collection, bool ignoreErrors) {
// file is dead
// .............................................................................
if (!isDead.empty()) {
if (isDead == "dead") {
if (filetype == "temp") {
FileUtils::remove(filename);
continue;
}
if (!isDead.empty() || filetype == "temp") {
if (isDead == "dead" || filetype == "temp") {
LOG_TOPIC(TRACE, Logger::DATAFILES)
<< "found temporary file '" << filename
<< "', which is probably a left-over. deleting it";
FileUtils::remove(filename);
continue;
} else {
LOG_TOPIC(DEBUG, Logger::DATAFILES)
<< "ignoring file '" << file
@ -746,7 +744,7 @@ TRI_collection_t* TRI_CreateCollection(
TRI_set_errno(TRI_ERROR_ARANGO_COLLECTION_DIRECTORY_ALREADY_EXISTS);
LOG(ERR) << "cannot create collection '" << parameters.namec_str()
<< "' in directory '" << dirname.c_str()
<< "' in directory '" << dirname
<< "': directory already exists";
return nullptr;
@ -765,7 +763,7 @@ TRI_collection_t* TRI_CreateCollection(
if (res != TRI_ERROR_NO_ERROR) {
LOG(ERR) << "cannot create collection '" << parameters.namec_str()
<< "' in directory '" << path << "': " << TRI_errno_string(res)
<< " - " << systemError << " - " << errorMessage.c_str();
<< " - " << systemError << " - " << errorMessage;
return nullptr;
}
@ -782,7 +780,7 @@ TRI_collection_t* TRI_CreateCollection(
if (res != TRI_ERROR_NO_ERROR) {
LOG(ERR) << "cannot create collection '" << parameters.namec_str()
<< "' in directory '" << path << "': " << TRI_errno_string(res)
<< " - " << systemError << " - " << errorMessage.c_str();
<< " - " << systemError << " - " << errorMessage;
TRI_RemoveDirectory(tmpname.c_str());
return nullptr;
@ -795,7 +793,7 @@ TRI_collection_t* TRI_CreateCollection(
if (res != TRI_ERROR_NO_ERROR) {
LOG(ERR) << "cannot create collection '" << parameters.namec_str()
<< "' in directory '" << path << "': " << TRI_errno_string(res)
<< " - " << systemError << " - " << errorMessage.c_str();
<< " - " << systemError << " - " << errorMessage;
TRI_RemoveDirectory(tmpname.c_str());
return nullptr;

View File

@ -51,6 +51,7 @@
#include "Wal/LogfileManager.h"
#include "Wal/Marker.h"
using namespace arangodb;
using namespace arangodb::basics;
////////////////////////////////////////////////////////////////////////////////
@ -410,6 +411,7 @@ static int OpenDatabases(TRI_server_t* server, bool isUpgrade) {
}
if (!StringUtils::isPrefix(name, "database-") || StringUtils::isSuffix(name, ".tmp")) {
LOG_TOPIC(TRACE, Logger::DATAFILES) << "ignoring file '" << name << "'";
continue;
}

View File

@ -41,6 +41,7 @@
#include "Basics/tri-strings.h"
#include "Basics/threads.h"
#include "Basics/Exceptions.h"
#include "Basics/FileUtils.h"
#include "Utils/CollectionKeysRepository.h"
#include "Utils/CursorRepository.h"
#include "Utils/transactions.h"
@ -307,7 +308,7 @@ static bool UnloadCollectionCallback(TRI_collection_t* col, void* data) {
if (res != TRI_ERROR_NO_ERROR) {
std::string const colName(collection->name());
LOG(ERR) << "failed to close collection '" << colName.c_str()
LOG(ERR) << "failed to close collection '" << colName
<< "': " << TRI_last_error();
collection->_status = TRI_VOC_COL_STATUS_CORRUPTED;
@ -359,7 +360,7 @@ static bool DropCollectionCallback(TRI_collection_t* col, void* data) {
TRI_EVENTUAL_WRITE_LOCK_STATUS_VOCBASE_COL(collection);
if (collection->_status != TRI_VOC_COL_STATUS_DELETED) {
LOG(ERR) << "someone resurrected the collection '" << name.c_str() << "'";
LOG(ERR) << "someone resurrected the collection '" << name << "'";
TRI_WRITE_UNLOCK_STATUS_VOCBASE_COL(collection);
regfree(&re);
@ -377,7 +378,7 @@ static bool DropCollectionCallback(TRI_collection_t* col, void* data) {
res = TRI_CloseDocumentCollection(document, false);
if (res != TRI_ERROR_NO_ERROR) {
LOG(ERR) << "failed to close collection '" << name.c_str()
LOG(ERR) << "failed to close collection '" << name
<< "': " << TRI_last_error();
TRI_WRITE_UNLOCK_STATUS_VOCBASE_COL(collection);
@ -461,24 +462,24 @@ static bool DropCollectionCallback(TRI_collection_t* col, void* data) {
<< collection->pathc_str() << "' to '" << newFilename << "'";
if (res != TRI_ERROR_NO_ERROR) {
LOG(ERR) << "cannot rename dropped collection '" << name.c_str()
LOG(ERR) << "cannot rename dropped collection '" << name
<< "' from '" << collection->pathc_str() << "' to '"
<< newFilename << "': " << TRI_errno_string(res);
} else {
LOG(DEBUG) << "wiping dropped collection '" << name.c_str()
LOG(DEBUG) << "wiping dropped collection '" << name
<< "' from disk";
res = TRI_RemoveDirectory(newFilename);
if (res != TRI_ERROR_NO_ERROR) {
LOG(ERR) << "cannot wipe dropped collection '" << name.c_str()
LOG(ERR) << "cannot wipe dropped collection '" << name
<< "' from disk: " << TRI_errno_string(res);
}
}
TRI_FreeString(TRI_CORE_MEM_ZONE, newFilename);
} else {
LOG(ERR) << "cannot rename dropped collection '" << name.c_str()
LOG(ERR) << "cannot rename dropped collection '" << name
<< "': unknown path '" << collection->pathc_str() << "'";
}
}
@ -785,20 +786,13 @@ static int ScanPath(TRI_vocbase_t* vocbase, char const* path, bool isUpgrade,
for (auto const& name : files) {
TRI_ASSERT(!name.empty());
if (!StringUtils::isSuffix(name, "collection-")) {
if (!StringUtils::isPrefix(name, "collection-") ||
StringUtils::isSuffix(name, ".tmp")) {
// no match, ignore this file
continue;
}
char* filePtr = TRI_Concatenate2File(path, name.c_str());
if (filePtr == nullptr) {
LOG(FATAL) << "out of memory";
FATAL_ERROR_EXIT();
}
std::string file = filePtr;
TRI_FreeString(TRI_CORE_MEM_ZONE, filePtr);
std::string file = FileUtils::buildFilename(path, name);
if (TRI_IsDirectory(file.c_str())) {
if (!TRI_IsWritable(file.c_str())) {
@ -807,7 +801,7 @@ static int ScanPath(TRI_vocbase_t* vocbase, char const* path, bool isUpgrade,
// this can cause serious trouble so we will abort the server start if
// we
// encounter this situation
LOG(ERR) << "database subdirectory '" << file.c_str()
LOG(ERR) << "database subdirectory '" << file
<< "' is not writable for current user";
return TRI_set_errno(TRI_ERROR_ARANGO_DATADIR_NOT_WRITABLE);
@ -826,7 +820,7 @@ static int ScanPath(TRI_vocbase_t* vocbase, char const* path, bool isUpgrade,
// we found a collection that is marked as deleted.
// deleted collections should be removed on startup. this is the
// default
LOG(DEBUG) << "collection '" << name.c_str()
LOG(DEBUG) << "collection '" << name
<< "' was deleted, wiping it";
res = TRI_RemoveDirectory(file.c_str());
@ -880,7 +874,7 @@ static int ScanPath(TRI_vocbase_t* vocbase, char const* path, bool isUpgrade,
if (c == nullptr) {
LOG(ERR) << "failed to add document collection from '"
<< file.c_str() << "'";
<< file << "'";
return TRI_set_errno(TRI_ERROR_ARANGO_CORRUPTED_COLLECTION);
}
@ -899,31 +893,29 @@ static int ScanPath(TRI_vocbase_t* vocbase, char const* path, bool isUpgrade,
}
LOG(DEBUG) << "added document collection '" << info.namec_str()
<< "' from '" << file.c_str() << "'";
<< "' from '" << file << "'";
}
} catch (arangodb::basics::Exception const& e) {
char* tmpfile = TRI_Concatenate2File(file.c_str(), ".tmp");
std::string tmpfile = FileUtils::buildFilename(file, ".tmp");
if (TRI_ExistsFile(tmpfile)) {
if (TRI_ExistsFile(tmpfile.c_str())) {
LOG(TRACE) << "ignoring temporary directory '" << tmpfile << "'";
TRI_Free(TRI_CORE_MEM_ZONE, tmpfile);
// temp file still exists. this means the collection was not created
// fully
// and needs to be ignored
continue; // ignore this directory
}
TRI_Free(TRI_CORE_MEM_ZONE, tmpfile);
res = e.code();
LOG(ERR) << "cannot read collection info file in directory '"
<< file.c_str() << "': " << TRI_errno_string(res);
<< file << "': " << TRI_errno_string(res);
return TRI_set_errno(res);
}
} else {
LOG(DEBUG) << "ignoring non-directory '" << file.c_str() << "'";
LOG(DEBUG) << "ignoring non-directory '" << file << "'";
}
}
@ -1082,7 +1074,7 @@ static int LoadCollectionVocBase(TRI_vocbase_t* vocbase,
std::string const colName(collection->name());
LOG(ERR) << "unknown collection status " << collection->_status << " for '"
<< colName.c_str() << "'";
<< colName << "'";
TRI_WRITE_UNLOCK_STATUS_VOCBASE_COL(collection);
return TRI_set_errno(TRI_ERROR_INTERNAL);

View File

@ -2265,7 +2265,7 @@ window.StatisticsCollection = Backbone.Collection.extend({
}
else {
$("#" + a).html('<br/><span class="dashboard-figurePer" style="color: '
+ "#000" +';">' + "data not ready yet" + '</span>');
+ "#000" +';">' + '<p class="dataNotReadyYet">data not ready yet</p>' + '</span>');
}
});
},
@ -2662,7 +2662,7 @@ window.StatisticsCollection = Backbone.Collection.extend({
if ($('.dataNotReadyYet').length === 0) {
$('#dataTransferDistribution').prepend('<p class="dataNotReadyYet"> data not ready yet </p>');
$('#totalTimeDistribution').prepend('<p class="dataNotReadyYet"> data not ready yet </p>');
$('.dashboard-bar-chart-title').prepend('<p class="dataNotReadyYet"> data not ready yet </p>');
$('.dashboard-bar-chart-title').append('<p class="dataNotReadyYet"> data not ready yet </p>');
}
},

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -2583,6 +2583,8 @@ div.footer-right {
color: #fff;
margin-left: 10px;
padding: 5px 16px; }
.button-neutral:focus, .button-primary:focus, .button-notification:focus, .button-success:focus, .button-danger:focus, .button-warning:focus, .button-inactive:focus, .button-close:focus {
outline: none; }
.button-header {
margin-top: 5px; }
@ -3147,7 +3149,11 @@ div .bigtile {
@media (max-width: 970px) {
#documentsDiv #totalDocuments {
display: none; } }
display: none; }
.navmenu {
padding-left: 20px;
padding-top: 0;
position: absolute; } }
@media (min-width: 739px) and (max-width: 1041px) {
#arangoCollectionUl a {
@ -5424,6 +5430,8 @@ div.headerBar {
padding-left: 5px;
padding-right: 5px;
position: relative; }
div.headerBar select:focus {
outline: none; }
div.headerBar .infoField {
background-color: #fff;
border: 1px solid rgba(140, 138, 137, 0.25);
@ -5474,7 +5482,7 @@ div.headerBar {
.headerBar a.arangoHeader {
color: #000;
font-size: 13pt;
font-size: 11.5pt;
font-weight: 100;
left: 0;
position: relative;
@ -5492,7 +5500,7 @@ div.headerBar {
.breadcrumb .disabledBread {
color: #666;
float: left;
font-size: 13pt;
font-size: 11.5pt;
font-weight: 100;
padding-right: 5px;
position: relative; }
@ -5502,7 +5510,7 @@ div.headerBar {
.breadcrumb .activeBread {
color: #8aa051;
float: left;
font-size: 13pt;
font-size: 11.5pt;
font-weight: 100; }
.breadcrumb #app-development-path {
background-color: #fff;
@ -5760,6 +5768,9 @@ div.headerBar {
.modal-footer {
border-top: 0 !important;
padding-right: 17px; }
.modal-footer .button-close {
margin-left: 20px;
margin-right: 10px; }
.modal-header {
margin-left: 5px;
@ -6224,8 +6235,9 @@ div .bigtile {
top: 6px; }
.dataNotReadyYet {
color: #faa732;
font-family: 'Open Sans', sans-serif;
font-size: 20px;
font-size: 14px;
font-weight: 100;
text-align: center; }
@ -6459,7 +6471,11 @@ div .bigtile {
@media (max-width: 970px) {
#documentsDiv #totalDocuments {
display: none; } }
display: none; }
.navmenu {
padding-left: 20px;
padding-top: 0;
position: absolute; } }
@media (min-width: 739px) and (max-width: 1041px) {
#arangoCollectionUl a {

View File

@ -6108,28 +6108,28 @@ function PreviewAdapter(nodes, edges, viewer, config) {
self.requestCentralityChildren = function(nodeId, callback) {};
self.createEdge = function (edgeToAdd, callback) {
window.alert("Server-side: createEdge was triggered.");
arangoHelper.arangoError("Server-side", "createEdge was triggered.");
};
self.deleteEdge = function (edgeToRemove, callback) {
window.alert("Server-side: deleteEdge was triggered.");
arangoHelper.arangoError("Server-side", "deleteEdge was triggered.");
};
self.patchEdge = function (edgeToPatch, patchData, callback) {
window.alert("Server-side: patchEdge was triggered.");
arangoHelper.arangoError("Server-side", "patchEdge was triggered.");
};
self.createNode = function (nodeToAdd, callback) {
window.alert("Server-side: createNode was triggered.");
arangoHelper.arangoError("Server-side", "createNode was triggered.");
};
self.deleteNode = function (nodeToRemove, callback) {
window.alert("Server-side: deleteNode was triggered.");
window.alert("Server-side: onNodeDelete was triggered.");
arangoHelper.arangoError("Server-side", "deleteNode was triggered.");
arangoHelper.arangoError("Server-side", "onNodeDelete was triggered.");
};
self.patchNode = function (nodeToPatch, patchData, callback) {
window.alert("Server-side: patchNode was triggered.");
arangoHelper.arangoError("Server-side", "patchNode was triggered.");
};
self.setNodeLimit = function (pLimit, callback) {
@ -8079,7 +8079,7 @@ function GraphViewerUI(container, adapterConfig, optWidth, optHeight, viewerConf
},
alertError = function(msg) {
window.alert(msg);
arangoHelper.arangoError("Graph", msg);
},
resultCB = function(res) {
@ -8188,7 +8188,7 @@ function GraphViewerUI(container, adapterConfig, optWidth, optHeight, viewerConf
},
alertError = function(msg) {
window.alert(msg);
arangoHelper.arangoError("Graph", msg);
},
resultCB2 = function(res) {
@ -8685,7 +8685,7 @@ function GraphViewerUI(container, adapterConfig, optWidth, optHeight, viewerConf
var size = $('#graphSize').find(":selected").val();
graphViewer.loadGraphWithRandomStart(function(node) {
if (node && node.errorCode) {
window.alert("Sorry your graph seems to be empty");
arangoHelper.arangoError("Graph", "Sorry your graph seems to be empty");
}
}, size);
});
@ -8696,7 +8696,7 @@ function GraphViewerUI(container, adapterConfig, optWidth, optHeight, viewerConf
} else {
graphViewer.loadGraphWithRandomStart(function(node) {
if (node && node.errorCode) {
window.alert("Sorry your graph seems to be empty");
arangoHelper.arangoError("Graph", "Sorry your graph seems to be empty");
}
});
}
@ -17326,7 +17326,7 @@ window.Users = Backbone.Model.extend({
case 3:
return 'loaded';
case 4:
return 'in the process of being unloaded';
return 'unloading';
case 5:
return 'deleted';
case 6:
@ -18560,7 +18560,7 @@ window.ArangoUsers = Backbone.Collection.extend({
/*jshint browser: true */
/*jshint unused: false */
/*global window, Backbone, alert, $ */
/*global window, Backbone, $ */
(function() {
"use strict";
window.FoxxCollection = Backbone.Collection.extend({
@ -19551,7 +19551,7 @@ window.ArangoUsers = Backbone.Collection.extend({
else {
$(this.el).removeClass('locked');
}
if (this.model.get("status") === 'loading') {
if (this.model.get("status") === 'loading' || this.model.get("status") === 'unloading') {
$(this.el).addClass('locked');
}
$(this.el).html(this.template.render({
@ -21055,7 +21055,7 @@ window.ArangoUsers = Backbone.Collection.extend({
}
else {
$("#" + a).html('<br/><span class="dashboard-figurePer" style="color: '
+ "#000" +';">' + "data not ready yet" + '</span>');
+ "#000" +';">' + '<p class="dataNotReadyYet">data not ready yet</p>' + '</span>');
}
});
},
@ -21452,7 +21452,7 @@ window.ArangoUsers = Backbone.Collection.extend({
if ($('.dataNotReadyYet').length === 0) {
$('#dataTransferDistribution').prepend('<p class="dataNotReadyYet"> data not ready yet </p>');
$('#totalTimeDistribution').prepend('<p class="dataNotReadyYet"> data not ready yet </p>');
$('.dashboard-bar-chart-title').prepend('<p class="dataNotReadyYet"> data not ready yet </p>');
$('.dashboard-bar-chart-title').append('<p class="dataNotReadyYet"> data not ready yet </p>');
}
},
@ -23796,7 +23796,7 @@ window.ArangoUsers = Backbone.Collection.extend({
}());
/*jshint browser: true */
/*global $, Joi, _, alert, templateEngine, window*/
/*global $, Joi, _, arangoHelper, templateEngine, window*/
(function() {
"use strict";
@ -23825,10 +23825,10 @@ window.ArangoUsers = Backbone.Collection.extend({
}
switch(res.errorNum) {
case errors.ERROR_APPLICATION_DOWNLOAD_FAILED.code:
alert("Unable to download application from the given repository.");
arangoHelper.arangoError("Services", "Unable to download application from the given repository.");
break;
default:
alert("Error: " + res.errorNum + ". " + res.errorMessage);
arangoHelper.arangoError("Services", res.errorNum + ". " + res.errorMessage);
}
}
};
@ -28653,33 +28653,33 @@ window.ArangoUsers = Backbone.Collection.extend({
name = null,
active = false,
currentUser = null;
if (username) {
if (username !== false) {
currentUser = this.userCollection.findWhere({user: username});
currentUser.set({loggedIn : true});
name = currentUser.get("extra").name;
img = currentUser.get("extra").img;
active = currentUser.get("active");
}
if (! img) {
img = "img/default_user.png";
}
else {
img = "https://s.gravatar.com/avatar/" + img + "?s=24";
}
if (! name) {
name = "";
}
if (! img) {
img = "img/default_user.png";
}
else {
img = "https://s.gravatar.com/avatar/" + img + "?s=24";
}
if (! name) {
name = "";
}
this.$el = $("#userBar");
this.$el.html(this.template.render({
img : img,
name : name,
username : username,
active : active
}));
this.$el = $("#userBar");
this.$el.html(this.template.render({
img : img,
name : name,
username : username,
active : active
}));
this.delegateEvents();
return this.$el;
this.delegateEvents();
return this.$el;
}
}
}.bind(this);

File diff suppressed because one or more lines are too long

View File

@ -1,3 +1,3 @@
<script src="sharedLibs.js?version=1456219613661"></script>
<script src="libs.js?version=1456219613661"></script>
<script src="app.js?version=1456219613661"></script>
<script src="sharedLibs.js?version=1456250172555"></script>
<script src="libs.js?version=1456250172555"></script>
<script src="app.js?version=1456250172555"></script>

View File

@ -803,7 +803,7 @@ if (list.length > 0) {
</a>
<li class="enabled">
<a id="markDocuments" class="headerButton">
<span class="icon_arangodb_edit" title="Edit documents"></span>
<span title="Edit documents"><i class="fa fa-hand-pointer-o"></i></span>
</a>
</li>
<li class="enabled">
@ -813,12 +813,12 @@ if (list.length > 0) {
</li>
<li class="enabled">
<a id="exportCollection" class="headerButton">
<span title="Download documents as JSON file"><i class="fa fa-download"></i></span>
<span title="Download documents as JSON file"><i class="fa fa-download" style="margin-top: 1px;"></i></span>
</a>
</li>
<li class="enabled" style="margin-right: 15px">
<a id="filterCollection" class="headerButton">
<span class="icon_arangodb_filter" title="Filter collection"></span>
<span title="Filter collection"><i class="fa fa-filter"></i></span>
</a>
</li>
</ul>
@ -1395,8 +1395,10 @@ if (list.length > 0) {
</table>
</div>
<div class="index-button-bar index-button-bar2">
<button id="createIndex" class="button-success">Save</button>
<button id="cancelIndex" class="button-close">Back</button>
<button id="createIndex" class="button-success" style="margin-left: 15px;">Create</button>
<button id="cancelIndex" class="button-close" style="margin-left: 0;"><i class="fa fa-arrow-left"></i>
<span style="margin-left: 5px;">Back</span>
</button>
</div>
</div>
</div></script><script id="lineChartDetailView.ejs" type="text/template"><div id="lineChartDetail" class="modal hide fade modal-chart-detail" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display:none">
@ -2363,10 +2365,10 @@ if (list.length > 0) {
</ul></script><script id="progressBase.ejs" type="text/template"><div class="progress-view">
<div class="progress-content">
<div class="progress-text"></div>
<div class="pong-spinner"><i /></div>
</div>
<div class="progress-message">
<div class="progress-text"></div>
<div class="progress-action"></div>
</div>
</div></script><script id="queryManagementViewActive.ejs" type="text/template"><div class="headerBar">
@ -2397,8 +2399,8 @@ if (list.length > 0) {
<div class="tab-content" id="tabContentCustoms">
<div class="tab-pane" id="customs">
<div id="editorToolbar" class="query-toolbar editor-toolbar">
<span class="icon_arangodb" title="Upload your queries." id="import-query"><i class="fa fa-upload"></i></span>
<span class="icon_arangodb" title="Download your listed queries." id="export-query"><i class="fa fa-download"></i></span>
<span class="queryTooltips" title="Upload your queries." id="import-query"><i class="fa fa-upload"></i></span>
<span class="queryTooltips" title="Download your listed queries." id="export-query"><i class="fa fa-download"></i></span>
</div>
<div id="customsDiv" class="query-div">
</div>
@ -2408,11 +2410,11 @@ if (list.length > 0) {
<div class="tab-pane active" id="query">
<div id="queryDiv" class="query-div">
<div id="editorToolbar" class="query-toolbar editor-toolbar">
<span class="icon_arangodb icon_arangodb_trash queryTooltips tooltip-margin" title="Clear" id="clearInput"/>
<span class="icon_arangodb icon_arangodb_adddoc queryTooltips" title="Save current query" id="addAQL"/>
<span class="queryTooltips tooltip-margin" title="Comment" id="commentText"><i class="fa fa-comment"></i></span>
<span class="icon_arangodb icon_arangodb_arrow6 queryTooltips tooltip-margin" title="Redo" id="redoText"/>
<span class="icon_arangodb icon_arangodb_arrow5 queryTooltips tooltip-margin" title="Undo" id="undoText"/>
<span class="queryTooltips" title="Clear" id="clearInput"><i class="fa fa-trash-o"></i></span>
<span class="queryTooltips" title="Save current query" id="addAQL"><i class="fa fa-save"></i></span>
<span class="queryTooltips" title="Comment" id="commentText"><i class="fa fa-comment"></i></span>
<span class="queryTooltips" title="Redo" id="redoText"><i class="fa fa-undo fa-flip-horizontal"></i></span>
<span class="queryTooltips" title="Undo" id="undoText"><i class="fa fa-undo"></i></span>
</div>
<div id="aqlEditor" class='aql-editor'></div>
@ -2465,7 +2467,7 @@ if (list.length > 0) {
<div class="tab-pane" id="result">
<div id="outputToolbar" class="query-toolbar output-toolbar">
<!--
<span class="icon_arangodb icon_arangodb_trash queryTooltips tooltip-margin" title="Clear" id="clearOutput"></span>
<span class="icon_arangodb icon_arangodb_trash queryTooltips " title="Clear" id="clearOutput"></span>
<span class="icon_arangodb icon_arangodb_arrow1 queryTooltips" title="Unfold" id="bigOutput"></span>
-->
</div>
@ -2555,7 +2557,7 @@ var cutByResolution = function (str) {
<th class="sorting_disabled docsFirstCol" role="columnheader" rowspan="1" colspan="1">Content</th>
<th class="sorting_disabled docsSecCol" role="columnheader" rowspan="1" colspan="1">_key</th>
<th class="sorting_disabled docsThirdCol" role="columnheader" rowspan="1" colspan="1">
<a id="addDocumentButton" class="pull-right addButton"><span class="arangoicon icon_arangodb_roundplus" title="Add a document"></span></a>
<a id="addDocumentButton" class="pull-right addButton"><span title="Add a document"><i class="fa fa-plus-circle"></i></span></a>
</th>
</tr>
</thead>
@ -2749,4 +2751,4 @@ var cutByResolution = function (str) {
</div>
<div id="workMonitorContent" class="innerContent">
</div></script></head><body><nav class="navbar"><div class="resizecontainer"><div class="navlogo"><a class="logo" href="#"><img class="arangodbLogo" src="img/arangodb_logo_small.png"></a></div><div id="progressPlaceholderIcon"></div><div class="statmenu" id="statisticBar"></div><div class="usermenu" id="userBar" style="float:right"></div><div class="notificationmenu" id="notificationBar" style="float:right"></div><div class="navmenu" id="navigationBar"></div></div></nav><div class="centralRow resizecontainer"><div id="content" class="centralContent"></div></div><div id="modalPlaceholder"></div><div id="progressPlaceholder" style="display:none"></div><footer class="footer"><div class="resizecontainer" id="footerBar"></div></footer><div class="arangoFrame" style=""><div class="outerDiv"><div class="innerDiv"></div></div></div><script src="sharedLibs.js?version=1456219613661"></script><script src="libs.js?version=1456219613661"></script><script src="app.js?version=1456219613661"></script></body></html>
</div></script></head><body><nav class="navbar"><div class="resizecontainer"><div class="navlogo"><a class="logo" href="#"><img class="arangodbLogo" src="img/arangodb_logo_small.png"></a></div><div id="progressPlaceholderIcon"></div><div class="statmenu" id="statisticBar"></div><div class="usermenu" id="userBar" style="float:right"></div><div class="notificationmenu" id="notificationBar" style="float:right"></div><div class="navmenu" id="navigationBar"></div></div></nav><div class="centralRow resizecontainer"><div id="content" class="centralContent"></div></div><div id="modalPlaceholder"></div><div id="progressPlaceholder" style="display:none"></div><footer class="footer"><div class="resizecontainer" id="footerBar"></div></footer><div class="arangoFrame" style=""><div class="outerDiv"><div class="innerDiv"></div></div></div><script src="sharedLibs.js?version=1456250172555"></script><script src="libs.js?version=1456250172555"></script><script src="app.js?version=1456250172555"></script></body></html>

View File

@ -867,7 +867,7 @@ if (list.length > 0) {
</a>
<li class="enabled">
<a id="markDocuments" class="headerButton">
<span class="icon_arangodb_edit" title="Edit documents"></span>
<span title="Edit documents"><i class="fa fa-hand-pointer-o"></i></span>
</a>
</li>
<li class="enabled">
@ -877,12 +877,12 @@ if (list.length > 0) {
</li>
<li class="enabled">
<a id="exportCollection" class="headerButton">
<span title="Download documents as JSON file"><i class="fa fa-download"></i></span>
<span title="Download documents as JSON file"><i class="fa fa-download" style="margin-top: 1px;"></i></span>
</a>
</li>
<li class="enabled" style="margin-right: 15px">
<a id="filterCollection" class="headerButton">
<span class="icon_arangodb_filter" title="Filter collection"></span>
<span title="Filter collection"><i class="fa fa-filter"></i></span>
</a>
</li>
</ul>
@ -1497,8 +1497,10 @@ if (list.length > 0) {
</table>
</div>
<div class="index-button-bar index-button-bar2">
<button id="createIndex" class="button-success">Save</button>
<button id="cancelIndex" class="button-close">Back</button>
<button id="createIndex" class="button-success" style="margin-left: 15px;">Create</button>
<button id="cancelIndex" class="button-close" style="margin-left: 0;"><i class="fa fa-arrow-left"></i>
<span style="margin-left: 5px;">Back</span>
</button>
</div>
</div>
</div>
@ -2536,10 +2538,10 @@ if (list.length > 0) {
<script id="progressBase.ejs" type="text/template">
<div class="progress-view">
<div class="progress-content">
<div class="progress-text"></div>
<div class="pong-spinner"><i /></div>
</div>
<div class="progress-message">
<div class="progress-text"></div>
<div class="progress-action"></div>
</div>
</div>
@ -2582,8 +2584,8 @@ if (list.length > 0) {
<div class="tab-content" id="tabContentCustoms">
<div class="tab-pane" id="customs">
<div id="editorToolbar" class="query-toolbar editor-toolbar">
<span class="icon_arangodb" title="Upload your queries." id="import-query"><i class="fa fa-upload"></i></span>
<span class="icon_arangodb" title="Download your listed queries." id="export-query"><i class="fa fa-download"></i></span>
<span class="queryTooltips" title="Upload your queries." id="import-query"><i class="fa fa-upload"></i></span>
<span class="queryTooltips" title="Download your listed queries." id="export-query"><i class="fa fa-download"></i></span>
</div>
<div id="customsDiv" class="query-div">
</div>
@ -2593,11 +2595,11 @@ if (list.length > 0) {
<div class="tab-pane active" id="query">
<div id="queryDiv" class="query-div">
<div id="editorToolbar" class="query-toolbar editor-toolbar">
<span class="icon_arangodb icon_arangodb_trash queryTooltips tooltip-margin" title="Clear" id="clearInput"/>
<span class="icon_arangodb icon_arangodb_adddoc queryTooltips" title="Save current query" id="addAQL"/>
<span class="queryTooltips tooltip-margin" title="Comment" id="commentText"><i class="fa fa-comment"></i></span>
<span class="icon_arangodb icon_arangodb_arrow6 queryTooltips tooltip-margin" title="Redo" id="redoText"/>
<span class="icon_arangodb icon_arangodb_arrow5 queryTooltips tooltip-margin" title="Undo" id="undoText"/>
<span class="queryTooltips" title="Clear" id="clearInput"><i class="fa fa-trash-o"></i></span>
<span class="queryTooltips" title="Save current query" id="addAQL"><i class="fa fa-save"></i></span>
<span class="queryTooltips" title="Comment" id="commentText"><i class="fa fa-comment"></i></span>
<span class="queryTooltips" title="Redo" id="redoText"><i class="fa fa-undo fa-flip-horizontal"></i></span>
<span class="queryTooltips" title="Undo" id="undoText"><i class="fa fa-undo"></i></span>
</div>
<div id="aqlEditor" class='aql-editor'></div>
@ -2650,7 +2652,7 @@ if (list.length > 0) {
<div class="tab-pane" id="result">
<div id="outputToolbar" class="query-toolbar output-toolbar">
<!--
<span class="icon_arangodb icon_arangodb_trash queryTooltips tooltip-margin" title="Clear" id="clearOutput"></span>
<span class="icon_arangodb icon_arangodb_trash queryTooltips " title="Clear" id="clearOutput"></span>
<span class="icon_arangodb icon_arangodb_arrow1 queryTooltips" title="Unfold" id="bigOutput"></span>
-->
</div>
@ -2753,7 +2755,7 @@ var cutByResolution = function (str) {
<th class="sorting_disabled docsFirstCol" role="columnheader" rowspan="1" colspan="1">Content</th>
<th class="sorting_disabled docsSecCol" role="columnheader" rowspan="1" colspan="1">_key</th>
<th class="sorting_disabled docsThirdCol" role="columnheader" rowspan="1" colspan="1">
<a id="addDocumentButton" class="pull-right addButton"><span class="arangoicon icon_arangodb_roundplus" title="Add a document"></span></a>
<a id="addDocumentButton" class="pull-right addButton"><span title="Add a document"><i class="fa fa-plus-circle"></i></span></a>
</th>
</tr>
</thead>
@ -3013,9 +3015,9 @@ var cutByResolution = function (str) {
</div>
</div>
<script src="sharedLibs.js?version=1456219613661"></script>
<script src="libs.js?version=1456219613661"></script>
<script src="app.js?version=1456219613661"></script>
<script src="sharedLibs.js?version=1456250172555"></script>
<script src="libs.js?version=1456250172555"></script>
<script src="app.js?version=1456250172555"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -2573,6 +2573,8 @@ div.footer-right {
color: #fff;
margin-left: 10px;
padding: 5px 16px; }
.button-neutral:focus, .button-primary:focus, .button-notification:focus, .button-success:focus, .button-danger:focus, .button-warning:focus, .button-inactive:focus, .button-close:focus, .ajax-file-upload-red:focus, .ajax-file-upload:focus {
outline: none; }
.button-header {
margin-top: 5px; }
@ -3137,7 +3139,11 @@ div .bigtile {
@media (max-width: 970px) {
#documentsDiv #totalDocuments {
display: none; } }
display: none; }
.navmenu {
padding-left: 20px;
padding-top: 0;
position: absolute; } }
@media (min-width: 739px) and (max-width: 1041px) {
#arangoCollectionUl a {
@ -5414,6 +5420,8 @@ div.headerBar {
padding-left: 5px;
padding-right: 5px;
position: relative; }
div.headerBar select:focus {
outline: none; }
div.headerBar .infoField {
background-color: #fff;
border: 1px solid rgba(140, 138, 137, 0.25);
@ -5464,7 +5472,7 @@ div.headerBar {
.headerBar a.arangoHeader {
color: #000;
font-size: 13pt;
font-size: 11.5pt;
font-weight: 100;
left: 0;
position: relative;
@ -5482,7 +5490,7 @@ div.headerBar {
.breadcrumb .disabledBread {
color: #666;
float: left;
font-size: 13pt;
font-size: 11.5pt;
font-weight: 100;
padding-right: 5px;
position: relative; }
@ -5492,7 +5500,7 @@ div.headerBar {
.breadcrumb .activeBread {
color: #8aa051;
float: left;
font-size: 13pt;
font-size: 11.5pt;
font-weight: 100; }
.breadcrumb #app-development-path {
background-color: #fff;
@ -5750,6 +5758,9 @@ div.headerBar {
.modal-footer {
border-top: 0 !important;
padding-right: 17px; }
.modal-footer .button-close {
margin-left: 20px;
margin-right: 10px; }
.modal-header {
margin-left: 5px;
@ -6048,8 +6059,9 @@ div.headerBar {
top: 6px; }
.dataNotReadyYet {
color: #faa732;
font-family: 'Open Sans', sans-serif;
font-size: 20px;
font-size: 14px;
font-weight: 100;
text-align: center; }
@ -6508,9 +6520,12 @@ toolbar {
font-weight: 300;
height: 30px;
line-height: 1;
outline: none;
padding: 5px;
padding-left: 5px !important;
padding-top: 3px !important; }
.styled-select select:focus {
outline: none; }
.querySizeDiv {
height: 30px !important;
@ -6579,9 +6594,6 @@ toolbar {
padding-left: 5px;
padding-right: 5px; }
.tooltip-margin {
margin-top: 1px; }
.query-dropdown-in {
background-color: #fff;
padding: 10px; }
@ -6604,11 +6616,13 @@ toolbar {
#queryContent {
margin-top: 18px; }
#queryContent .arango-tab a {
border-bottom-color: #ddd;
font-weight: 100; }
#queryContent .arango-tab .active {
border-bottom-color: #fff !important; }
#queryContent .arango-tab {
margin-bottom: 5px; }
#queryContent .arango-tab a {
border-bottom-color: #ddd;
font-weight: 100; }
#queryContent .arango-tab .active {
border-bottom-color: #fff !important; }
.query-div {
display: none;
@ -6668,47 +6682,35 @@ toolbar {
.editor-toolbar {
border-color: #a0a0a0;
height: 33px;
margin-top: 5px; }
padding-right: 5px; }
.editor-toolbar span {
border-radius: 3px;
float: right;
height: 18px;
margin-left: 3px;
padding-bottom: 6px;
padding-left: 5px;
padding-right: 0;
padding-top: 3px;
padding: 3px 0 6px 10px;
position: relative;
top: 0;
width: 25px; }
width: 22px; }
.editor-toolbar span:hover,
.editor-toolbar .vars-editor-header i {
background-color: #8aa051;
color: #fff; }
.editor-toolbar i {
margin-right: 5px;
margin-top: 3px; }
.editor-toolbar i:hover {
cursor: pointer; }
.editor-toolbar a:hover,
.editor-toolbar span:hover {
cursor: pointer; }
.editor-toolbar a:hover i,
.editor-toolbar span:hover i {
color: #fff; }
.editor-toolbar i:hover {
color: #fff;
cursor: pointer; }
.editor-toolbar .fa {
color: #666;
margin-left: 1px;
margin-top: 2px; }
.editor-toolbar .fa.fa-upload {
margin-top: 1px; }
.editor-toolbar .icon_arangodb {
color: #666;
font-size: 14pt; }
.editor-toolbar .icon_arangodb:first-child {
margin-right: 10px; }
font-size: 15px; }
.editor-toolbar .fa-comment,
.editor-toolbar .fa-comment-o {
font-size: 15px;
position: relative;
right: -2px;
top: -2px; }
.editor-toolbar .arango-icon-disk {
margin-top: 1px; }
top: -1px; }
.display-none {
display: none; }
@ -7513,12 +7515,13 @@ input.gv-radio-button {
color: #fff;
height: 188px;
left: 50%;
margin: -100px 0 0 -150px;
margin: -150px 0 0 -125px;
position: absolute;
top: 50%;
width: 300px; }
top: 38%;
width: 250px; }
.progress-view .progress-content {
border: 5px solid #fff; }
border: 5px solid #fff;
border-radius: 3px; }
.progress-view .progress-content .fa-spinner {
font-size: 100pt; }
.progress-view .progress-message {
@ -7531,10 +7534,17 @@ input.gv-radio-button {
padding-top: 3px;
text-align: center; }
.progress-view .progress-text {
background: #fff;
color: #000;
float: left;
font-weight: 100;
height: 25px;
left: -5px;
margin-left: 5px;
margin-top: 10px; }
margin-top: 10px;
position: relative;
top: -10px;
width: 100%; }
.progress-view .progress-action {
float: right;
margin-right: 5px;
@ -7554,7 +7564,7 @@ input.gv-radio-button {
width: 200px; }
.pong-spinner i {
animation: ball 2s infinite linear;
background: #fff;
background: #8cdb8b;
border-radius: 10px;
height: 10px;
position: absolute;
@ -7563,7 +7573,7 @@ input.gv-radio-button {
.pong-spinner:before,
.pong-spinner:after {
animation: left-player 2s infinite linear;
background: #fff;
background: #8cdb8b;
content: '';
height: 30px;
position: absolute;

View File

@ -32,7 +32,7 @@
</a>
<li class="enabled">
<a id="markDocuments" class="headerButton">
<span class="icon_arangodb_edit" title="Edit documents"></span>
<span title="Edit documents"><i class="fa fa-hand-pointer-o"></i></span>
</a>
</li>
<li class="enabled">
@ -42,12 +42,12 @@
</li>
<li class="enabled">
<a id="exportCollection" class="headerButton">
<span title="Download documents as JSON file"><i class="fa fa-download"></i></span>
<span title="Download documents as JSON file"><i class="fa fa-download" style="margin-top: 1px;"></i></span>
</a>
</li>
<li class="enabled" style="margin-right: 15px">
<a id="filterCollection" class="headerButton">
<span class="icon_arangodb_filter" title="Filter collection"></span>
<span title="Filter collection"><i class="fa fa-filter"></i></span>
</a>
</li>
</ul>

View File

@ -235,8 +235,10 @@
</table>
</div>
<div class="index-button-bar index-button-bar2">
<button id="createIndex" class="button-success">Save</button>
<button id="cancelIndex" class="button-close">Back</button>
<button id="createIndex" class="button-success" style="margin-left: 15px;">Create</button>
<button id="cancelIndex" class="button-close" style="margin-left: 0;"><i class="fa fa-arrow-left"></i>
<span style="margin-left: 5px;">Back</span>
</button>
</div>
</div>
</div>

View File

@ -1,10 +1,10 @@
<script id="progressBase.ejs" type="text/template">
<div class="progress-view">
<div class="progress-content">
<div class="progress-text"></div>
<div class="pong-spinner"><i /></div>
</div>
<div class="progress-message">
<div class="progress-text"></div>
<div class="progress-action"></div>
</div>
</div>

View File

@ -13,8 +13,8 @@
<div class="tab-content" id="tabContentCustoms">
<div class="tab-pane" id="customs">
<div id="editorToolbar" class="query-toolbar editor-toolbar">
<span class="icon_arangodb" title="Upload your queries." id="import-query"><i class="fa fa-upload"></i></span>
<span class="icon_arangodb" title="Download your listed queries." id="export-query"><i class="fa fa-download"></i></span>
<span class="queryTooltips" title="Upload your queries." id="import-query"><i class="fa fa-upload"></i></span>
<span class="queryTooltips" title="Download your listed queries." id="export-query"><i class="fa fa-download"></i></span>
</div>
<div id="customsDiv" class="query-div">
</div>
@ -24,11 +24,11 @@
<div class="tab-pane active" id="query">
<div id="queryDiv" class="query-div">
<div id="editorToolbar" class="query-toolbar editor-toolbar">
<span class="icon_arangodb icon_arangodb_trash queryTooltips tooltip-margin" title="Clear" id="clearInput"/>
<span class="icon_arangodb icon_arangodb_adddoc queryTooltips" title="Save current query" id="addAQL"/>
<span class="queryTooltips tooltip-margin" title="Comment" id="commentText"><i class="fa fa-comment"></i></span>
<span class="icon_arangodb icon_arangodb_arrow6 queryTooltips tooltip-margin" title="Redo" id="redoText"/>
<span class="icon_arangodb icon_arangodb_arrow5 queryTooltips tooltip-margin" title="Undo" id="undoText"/>
<span class="queryTooltips" title="Clear" id="clearInput"><i class="fa fa-trash-o"></i></span>
<span class="queryTooltips" title="Save current query" id="addAQL"><i class="fa fa-save"></i></span>
<span class="queryTooltips" title="Comment" id="commentText"><i class="fa fa-comment"></i></span>
<span class="queryTooltips" title="Redo" id="redoText"><i class="fa fa-undo fa-flip-horizontal"></i></span>
<span class="queryTooltips" title="Undo" id="undoText"><i class="fa fa-undo"></i></span>
</div>
<div id="aqlEditor" class='aql-editor'></div>
@ -81,7 +81,7 @@
<div class="tab-pane" id="result">
<div id="outputToolbar" class="query-toolbar output-toolbar">
<!--
<span class="icon_arangodb icon_arangodb_trash queryTooltips tooltip-margin" title="Clear" id="clearOutput"></span>
<span class="icon_arangodb icon_arangodb_trash queryTooltips " title="Clear" id="clearOutput"></span>
<span class="icon_arangodb icon_arangodb_arrow1 queryTooltips" title="Unfold" id="bigOutput"></span>
-->
</div>

View File

@ -17,7 +17,7 @@ var cutByResolution = function (str) {
<th class="sorting_disabled docsFirstCol" role="columnheader" rowspan="1" colspan="1">Content</th>
<th class="sorting_disabled docsSecCol" role="columnheader" rowspan="1" colspan="1">_key</th>
<th class="sorting_disabled docsThirdCol" role="columnheader" rowspan="1" colspan="1">
<a id="addDocumentButton" class="pull-right addButton"><span class="arangoicon icon_arangodb_roundplus" title="Add a document"></span></a>
<a id="addDocumentButton" class="pull-right addButton"><span title="Add a document"><i class="fa fa-plus-circle"></i></span></a>
</th>
</tr>
</thead>

View File

@ -59,33 +59,33 @@
name = null,
active = false,
currentUser = null;
if (username) {
if (username !== false) {
currentUser = this.userCollection.findWhere({user: username});
currentUser.set({loggedIn : true});
name = currentUser.get("extra").name;
img = currentUser.get("extra").img;
active = currentUser.get("active");
}
if (! img) {
img = "img/default_user.png";
}
else {
img = "https://s.gravatar.com/avatar/" + img + "?s=24";
}
if (! name) {
name = "";
}
if (! img) {
img = "img/default_user.png";
}
else {
img = "https://s.gravatar.com/avatar/" + img + "?s=24";
}
if (! name) {
name = "";
}
this.$el = $("#userBar");
this.$el.html(this.template.render({
img : img,
name : name,
username : username,
active : active
}));
this.$el = $("#userBar");
this.$el.html(this.template.render({
img : img,
name : name,
username : username,
active : active
}));
this.delegateEvents();
return this.$el;
this.delegateEvents();
return this.$el;
}
}
}.bind(this);

View File

@ -6,6 +6,7 @@ $c-lightgreen-2-bg: #f5f8f0;
$c-lightgreen-transp-bg: #f5f8f0;
$c-lightgreen-2-transp-bg: rgba(245, 248, 240, .95);
$c-pong-green: rgb(140, 219, 139);
$c-positive: #8aa051;
$c-positive-hover: #788f3d;

View File

@ -151,7 +151,7 @@ div.headerBar {
.headerBar a.arangoHeader {
color: $c-black;
font-size: 13pt;
font-size: 11.5pt;
font-weight: 100;
left: 0;
position: relative;
@ -177,7 +177,7 @@ div.headerBar {
.disabledBread {
color: $c-darker-grey;
float: left;
font-size: 13pt;
font-size: 11.5pt;
font-weight: 100;
padding-right: 5px;
position: relative;
@ -192,7 +192,7 @@ div.headerBar {
.activeBread {
color: $c-positive;
float: left;
font-size: 13pt;
font-size: 11.5pt;
font-weight: 100;
}

View File

@ -377,6 +377,11 @@
.modal-footer {
border-top: 0 !important;
padding-right: 17px;
.button-close {
margin-left: 20px;
margin-right: 10px;
}
}
.modal-header {

View File

@ -14,19 +14,18 @@
color: $c-nav-bg;
height: 188px;
left: 50%;
margin: -100px 0 0 -150px;
margin: -150px 0 0 -125px;
position: absolute;
top: 50%;
width: 300px;
top: 38%;
width: 250px;
.progress-content {
border: 5px solid $c-white;
border-radius: 3px;
.fa-spinner {
font-size: 100pt;
}
}
.progress-message {
@ -41,10 +40,17 @@
}
.progress-text {
background: $c-white;
color: $c-black;
float: left;
font-weight: 100;
height: 25px;
left: -5px;
margin-left: 5px;
margin-top: 10px;
position: relative;
top: -10px;
width: 100%;
}
.progress-action {
@ -73,7 +79,7 @@
i {
animation: ball 2s infinite linear;
background: $c-white;
background: $c-pong-green;
border-radius: 10px;
height: 10px;
position: absolute;
@ -84,7 +90,7 @@
.pong-spinner:before,
.pong-spinner:after {
animation: left-player 2s infinite linear;
background: $c-white;
background: $c-pong-green;
content: '';
height: 30px;
position: absolute;

View File

@ -264,10 +264,6 @@ toolbar {
padding-right: 5px;
}
.tooltip-margin {
margin-top: 1px;
}
.query-dropdown-in {
background-color: $c-white;
padding: 10px;
@ -301,6 +297,7 @@ toolbar {
margin-top: 18px;
.arango-tab {
margin-bottom: 5px;
a {
border-bottom-color: $c-tab-bottom-border;
@ -395,20 +392,16 @@ toolbar {
.editor-toolbar {
border-color: $c-editor-toolbar;
height: 33px;
margin-top: 5px;
padding-right: 5px;
span {
border-radius: 3px;
float: right;
height: 18px;
margin-left: 3px;
padding-bottom: 6px;
padding-left: 5px;
padding-right: 0;
padding-top: 3px;
padding: 3px 0 6px 10px;
position: relative;
top: 0;
width: 25px;
width: 22px;
}
span:hover,
@ -417,44 +410,29 @@ toolbar {
color: $c-white;
}
i {
margin-right: 5px;
margin-top: 3px;
a:hover,
span:hover {
cursor: pointer;
i {color: $c-white;}
}
i {
&:hover {
color: $c-white;
cursor: pointer;
}
}
.fa {
color: $c-darker-grey;
margin-left: 1px;
margin-top: 2px;
&.fa-upload {
margin-top: 1px;
}
}
.icon_arangodb {
color: $c-darker-grey;
font-size: 14pt;
&:first-child {
margin-right: 10px;
}
font-size: 15px;
}
.fa-comment,
.fa-comment-o {
font-size: 15px;
position: relative;
right: -2px;
top: -2px;
}
.arango-icon-disk {
margin-top: 1px;
top: -1px;
}
}

View File

@ -39,6 +39,12 @@
display: none;
}
}
.navmenu {
padding-left: 20px;
padding-top: 0;
position: absolute;
}
}

View File

@ -2964,7 +2964,6 @@ const recoveryTests = [
"disk-full-logfile",
"disk-full-logfile-data",
"disk-full-datafile",
"disk-full-datafile",
"collection-drop-recreate",
"create-with-temp",
"create-with-temp-old",
@ -3039,20 +3038,28 @@ testFuncs.recovery = function(options) {
for (let i = 0; i < recoveryTests.length; ++i) {
let test = recoveryTests[i];
let instanceInfo = {};
runArangodRecovery(instanceInfo, options, test, true);
if (options.test === undefined || options.test === test) {
let instanceInfo = {};
runArangodRecovery(instanceInfo, options, test, false);
runArangodRecovery(instanceInfo, options, test, true);
if (instanceInfo.tmpDataDir) {
fs.removeDirectoryRecursive(instanceInfo.tmpDataDir, true);
}
runArangodRecovery(instanceInfo, options, test, false);
results[test] = instanceInfo.pid;
if (instanceInfo.tmpDataDir) {
fs.removeDirectoryRecursive(instanceInfo.tmpDataDir, true);
}
if (!results[test].status) {
status = false;
results[test] = instanceInfo.pid;
if (!results[test].status) {
status = false;
}
} else {
results[test] = {
status: true,
skipped: true
};
}
}

View File

@ -1069,6 +1069,91 @@ function optimizerIndexesTestSuite () {
assertEqual(0, results.stats.scannedFull);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test index usage
////////////////////////////////////////////////////////////////////////////////
testIndexOrMultiplySkiplist : function () {
var query = "FOR i IN " + c.name() + " FILTER (i.value > 1 && i.value < 9) && (i.value2 == null || i.value3 == null) RETURN i.value";
var plan = AQL_EXPLAIN(query).plan;
var nodeTypes = plan.nodes.map(function(node) {
if (node.type === "IndexNode") {
assertEqual("skiplist", node.indexes[0].type);
assertFalse(node.indexes[0].unique);
}
return node.type;
});
assertNotEqual(-1, nodeTypes.indexOf("IndexNode"), query);
var results = AQL_EXECUTE(query);
assertEqual([ 2, 3, 4, 5, 6, 7, 8 ], results.json.sort(), query);
assertTrue(results.stats.scannedIndex > 0);
assertEqual(0, results.stats.scannedFull);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test index usage
////////////////////////////////////////////////////////////////////////////////
testIndexSkiplistMultiple : function () {
c.truncate();
for (var i = 0; i < 10; ++i) {
c.insert({ value1: i, value2: i });
}
c.ensureIndex({ type: "skiplist", fields: [ "value1", "value2" ] });
var query = "FOR i IN " + c.name() + " FILTER (i.value2 > 1 && i.value2 < 9) && (i.value1 == 3) RETURN i.value1";
var plan = AQL_EXPLAIN(query).plan;
var nodeTypes = plan.nodes.map(function(node) {
if (node.type === "IndexNode") {
assertEqual("skiplist", node.indexes[0].type);
assertFalse(node.indexes[0].unique);
}
return node.type;
});
assertNotEqual(-1, nodeTypes.indexOf("IndexNode"), query);
assertEqual(-1, nodeTypes.indexOf("FilterNode"), query);
var results = AQL_EXECUTE(query);
assertEqual([ 3 ], results.json.sort(), query);
assertEqual(1, results.stats.scannedIndex);
assertEqual(0, results.stats.scannedFull);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test index usage
////////////////////////////////////////////////////////////////////////////////
testIndexSkiplistMultiple2 : function () {
c.truncate();
for (var i = 0; i < 10; ++i) {
c.insert({ value1: i, value2: i });
}
c.ensureIndex({ type: "skiplist", fields: [ "value1", "value2" ] });
var query = "FOR i IN " + c.name() + " FILTER (i.value2 > 1 && i.value2 < 9) && (i.value1 == 2 || i.value1 == 3) RETURN i.value1";
var plan = AQL_EXPLAIN(query).plan;
var nodeTypes = plan.nodes.map(function(node) {
if (node.type === "IndexNode") {
assertEqual("skiplist", node.indexes[0].type);
assertFalse(node.indexes[0].unique);
}
return node.type;
});
assertNotEqual(-1, nodeTypes.indexOf("IndexNode"), query);
var results = AQL_EXECUTE(query);
assertEqual([ 2, 3 ], results.json.sort(), query);
assertEqual(2, results.stats.scannedIndex);
assertEqual(0, results.stats.scannedFull);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test index usage
////////////////////////////////////////////////////////////////////////////////

View File

@ -291,7 +291,9 @@ void LogAppenderFile::reopenLog() {
int old = std::atomic_exchange(&_fd, fd);
TRI_CLOSE(old);
if (old > STDERR_FILENO) {
TRI_CLOSE(old);
}
}
void LogAppenderFile::closeLog() {

View File

@ -171,7 +171,8 @@ void Thread::beginShutdown() {
ThreadState state = _state.load();
while (state != ThreadState::STOPPING && state != ThreadState::STOPPED) {
while (state != ThreadState::STOPPING && state != ThreadState::STOPPED &&
state != ThreadState::DETACHED) {
_state.compare_exchange_strong(state, ThreadState::STOPPING);
}
}
@ -202,7 +203,7 @@ void Thread::shutdown() {
}
}
size_t n = 10 * 60 * 5; // * 100ms = 1s * 60 * 5
size_t n = 10 * 60 * 5; // * 100ms = 1s * 60 * 5
for (size_t i = 0; i < n; ++i) {
if (_state.load() == ThreadState::STOPPED) {

View File

@ -118,7 +118,7 @@ WorkMonitor::WorkMonitor() : Thread("WorkMonitor") {}
////////////////////////////////////////////////////////////////////////////////
void WorkMonitor::freeWorkDescription(WorkDescription* desc) {
if (WORK_MONITOR_STOPPED) {
if (WORK_MONITOR_STOPPED.load()) {
deleteWorkDescription(desc, true);
} else {
FREEABLE_WORK_DESCRIPTION.push(desc);
@ -130,6 +130,10 @@ void WorkMonitor::freeWorkDescription(WorkDescription* desc) {
////////////////////////////////////////////////////////////////////////////////
void WorkMonitor::pushThread(Thread* thread) {
if (WORK_MONITOR_STOPPED.load()) {
return;
}
TRI_ASSERT(thread != nullptr);
TRI_ASSERT(Thread::CURRENT_THREAD == nullptr);
Thread::CURRENT_THREAD = thread;
@ -154,6 +158,10 @@ void WorkMonitor::pushThread(Thread* thread) {
////////////////////////////////////////////////////////////////////////////////
void WorkMonitor::popThread(Thread* thread) {
if (WORK_MONITOR_STOPPED.load()) {
return;
}
TRI_ASSERT(thread != nullptr);
WorkDescription* desc = deactivateWorkDescription();
@ -399,7 +407,7 @@ void WorkMonitor::run() {
// indicate that we stopped the work monitor, freeWorkDescription
// should directly delete old entries
WORK_MONITOR_STOPPED = true;
WORK_MONITOR_STOPPED.store(true);
// cleanup old entries
WorkDescription* desc;

View File

@ -41,6 +41,41 @@ if (USE_MAINTAINER_MODE)
)
endif ()
# note that we check-in the generated FLEX/BISON files, therefore they are
# generate inside the source tree
if (USE_MAINTAINER_MODE)
add_custom_command(
OUTPUT
${CMAKE_CURRENT_SOURCE_DIR}/lib/JsonParser/json-parser.cpp
WORKING_DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}
COMMAND
${CMAKE_SOURCE_DIR}/utils/flex-c++.sh
${FLEX_EXECUTABLE}
lib/JsonParser/json-parser.ll
lib/JsonParser/json-parser.cpp
MAIN_DEPENDENCY
${CMAKE_CURRENT_SOURCE_DIR}/lib/JsonParser/json-parser.ll
VERBATIM
)
add_custom_command(
OUTPUT
${CMAKE_CURRENT_SOURCE_DIR}/lib/JsonParser.cpp
WORKING_DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}
COMMAND
${CMAKE_SOURCE_DIR}/utils/flex-c++.sh
${FLEX_EXECUTABLE}
V8/v8-json.ll
V8/v8-json.cpp
MAIN_DEPENDENCY
${CMAKE_CURRENT_SOURCE_DIR}/V8/v8-json.ll
VERBATIM
)
endif ()
################################################################################
## LIB_ARANGO
################################################################################

View File

@ -33,7 +33,7 @@ rm -rf cluster
mkdir cluster
cd cluster
echo Starting agency...
../build/bin/etcd-arango --data-dir cluster/agency > /dev/null 2>&1 &
../build/bin/etcd-arango --data-dir agency > agency.log 2>&1 &
cd ..
sleep 1
@ -156,6 +156,9 @@ testServer() {
done
}
for p in `seq 8629 $PORTTOPDB` ; do
testServer $p
done
for p in `seq 8530 $PORTTOPCO` ; do
testServer $p
done

17
utils/manPages.sh Executable file
View File

@ -0,0 +1,17 @@
#!/bin/bash
IN="$1"
OUT="$2"
VERSION="$3"
section=`echo $IN | sed -e 's:.*\([0-9]\):\1:'`
command=`echo $IN | sed -e 's:.*/\([^\.]*\).[0-9]:\1:'`
sed \
-f `dirname $0`/../Documentation/Scripts/man.sed \
-e "s/<SECTION>/$section/g" \
-e "s/<COMMAND>/$command/g" \
-e "s/<DATE>/`date "+%d %b %Y"`/g" \
-e "s/<VERSION>/$VERSION/g" \
< $IN > $OUT