Previously, all datafiles/journals that were initially mapped were mapped with PROT_READ only, and later the memory protection was changed to PROT_READ | PROT_WRITE using mprotect().
However, on filesystems that are mounted with NOEXEC, changing the protection from PROT_READ to PROT_READ | PROT_WRITE later may fail. This has been reported in issue #2220.
This change now maps all datafiles/journals with PROT_READ | PROT_WRITE in the beginning, and will later change the mapping to PROT_READ if no writes are required
added more memory diagnostics for memory usage:
- collection.figures() now returns a "readCache" attribute which contains the
number of and memory usage of entries in the document revisions cache for the
collection, and a "revisions" attribute with the number and memory usage
of entries in the storage engine's revision lookup table for the collection
- the default value for --database.revision-cache-target-size was changed from
75% of RAM to 30% of RAM
- this sets option CURLOPT_PATH_AS_IS to keep ".." and other special components in paths
- this also changes the behavior of StringUtils::urlEncode() to always encode the "."
character to "%2e"
...and also deprecated in newer versions of libc:
http://man7.org/linux/man-pages/man3/readdir_r.3.html
That man page recommends to use plain readdir() because it can be expected
to be thread-safe in reality, and newer versions of POSIX may require its
thread-safety formally, and in addition obsolete readdir_r() altogether