ArangoDB v2.8 reached End of Life (EOL) and is no longer supported.
This documentation is outdated. Please see the most recent version here: Try latest
Write-ahead log
This module provides functionality for administering the write-ahead logs.
Configuration
internal.wal.properties()
Retrieves the configuration of the write-ahead log. The result is a JSON
array with the following attributes:
- allowOversizeEntries: whether or not operations that are bigger than a single logfile can be executed and stored
- logfileSize: the size of each write-ahead logfile
- historicLogfiles: the maximum number of historic logfiles to keep
- reserveLogfiles: the maximum number of reserve logfiles that ArangoDB allocates in the background
- syncInterval: the interval for automatic synchronization of not-yet synchronized write-ahead log data (in milliseconds)
- throttleWait: the maximum wait time that operations will wait before they get aborted if case of write-throttling (in milliseconds)
- throttleWhenPending: the number of unprocessed garbage-collection
operations that, when reached, will activate write-throttling. A value of
0 means that write-throttling will not be triggered.
Examples
arangosh> require("internal").wal.properties();
{
"allowOversizeEntries" : true,
"logfileSize" : 33554432,
"historicLogfiles" : 10,
"reserveLogfiles" : 1,
"syncInterval" : 100,
"throttleWait" : 15000,
"throttleWhenPending" : 0,
"error" : false,
"code" : 200
}
arangosh> require("internal").wal.properties();
internal.wal.properties(properties)
Configures the behavior of the write-ahead log. properties must be a JSON
JSON object with the following attributes:
- allowOversizeEntries: whether or not operations that are bigger than a single logfile can be executed and stored
- logfileSize: the size of each write-ahead logfile
- historicLogfiles: the maximum number of historic logfiles to keep
- reserveLogfiles: the maximum number of reserve logfiles that ArangoDB allocates in the background
- throttleWait: the maximum wait time that operations will wait before they get aborted if case of write-throttling (in milliseconds)
- throttleWhenPending: the number of unprocessed garbage-collection
operations that, when reached, will activate write-throttling. A value of
0 means that write-throttling will not be triggered.
Specifying any of the above attributes is optional. Not specified attributes will be ignored and the configuration for them will not be modified.
Examples
arangosh> require("internal").wal.properties({ allowOverSizeEntries: true, logfileSize: 32 * 1024 * 1024 });
{
"allowOversizeEntries" : true,
"logfileSize" : 33554432,
"historicLogfiles" : 10,
"reserveLogfiles" : 1,
"syncInterval" : 100,
"throttleWait" : 15000,
"throttleWhenPending" : 0,
"error" : false,
"code" : 200
}
arangosh> require("internal").wal.properties({ allowOverSizeEntries: true, logfileSize: 32 * 1024 * 1024 });
Flushing
internal.wal.flush(waitForSync, waitForCollector)
Flushes the write-ahead log. By flushing the currently active write-ahead
logfile, the data in it can be transferred to collection journals and
datafiles. This is useful to ensure that all data for a collection is
present in the collection journals and datafiles, for example, when dumping
the data of a collection.
The waitForSync option determines whether or not the operation should
block until the not-yet synchronized data in the write-ahead log was
synchronized to disk.
The waitForCollector operation can be used to specify that the operation
should block until the data in the flushed log has been collected by the
write-ahead log garbage collector. Note that setting this option to true
might block for a long time if there are long-running transactions and
the write-ahead log garbage collector cannot finish garbage collection.
Examples
arangosh> require("internal").wal.flush();