Converting updates to upserts during replication was added for version 2.2.0.
This code was dependent on all operators being idempotent.
Some operators in 2.0.x are not fully idempotent, so if we are reading an
oplog generated by a 2.0.x node, we shouldn't activate this new feature.
Remove the fixup of the user's index specification that was converting
it into a default-style index name. Adjust comments in code and help text
to describe how to use db.collectionName.dropIndex().
The previous implementation was not recursively following the LIBDEPS hierarchy, looking for SYSLIBDEPS
to add. Instead, it was trying to walk a hierachy like LIBDEPS rooted in the SYSLIBDEPS variable. This
isn't really a meaningful behavior, since SYSLIBDEPS always list system libraries, which are always leaf
nodes in the dependency graph for our build system.
Prevent errors on Azure Storage drives that occur when a memory-mapped
data file is modified in memory while it is being flushed to disk with
FlushViewOfFile. Use a SimpleMutex (Critical Section on Windows) to
prevent these two routines from running at the same time.
Call _snprintf on Windows or snprintf on other platforms directly instead
of through a statically initialized function pointer. Windows code was
calling sprintf_s, but _snprintf works fine and is already used in other
places in the code.
Checks added to the validate command:
1) The 'xprev' pointer in each extent in the extent list should point
to the previous extent, or be null for the first extent
2) The 'lastExtent' pointer in NamespaceDetails should point to the last extent
3) If an exception is thrown while counting extents, identify the failing extent
4) If an exception is thrown while counting extents, report the count
5) If an exception is thrown while counting extents, the first extent should be
validated and the check for 'xprev' in the first extent being null should be done
6) If an invalid signature is found in an extent, report the value found and
identify the extent
7) The "self-pointer" 'myLoc' in an extent should be validated
8) The extent size should be compared with Extent::minSize(), not zero
Move the Extent::validates() routine from pdfile.h to pdfile.cpp, make
it return messages for errors it finds, call it for every extent instead
of just for the first extent. Check extent DiskLoc against 'myLoc'.
Versions of Windows prior to Windows Vista send a CTRL_LOGOFF_EVENT
to services (at the handler set by SetConsoleCtrlHandler) when the
interactive user logs off. Return FALSE from this notification and
don't run consoleTerminate().