Reconfiguration with a Minority Up If the majority of servers in a set has been permanently lost, you can now force a reconfiguration of the set to bring it back online. 

For more information see Reconfigure a Replica Set with Unavailable Members (page 638). 

Primary Checks for a Caught up Secondary before Stepping Down To minimize time without a primary , the rs.stepDown() method will now fail if the primary does not see a secondary within 10 seconds of its latest optime. You can force the primary to step down anyway, but by default it will return an error message. 

See also Force a Member to Become Primary (page 631). 

Extended Shutdown on the Primary to Minimize Interruption When you call the shutdown command, the primary will refuse to shut down unless there is a secondary whose optime is within 10 seconds of the primary. If such a secondary isn’t available, the primary will step down and wait up to a minute for the secondary to be fully caught up before shutting down. 

Note that to get this behavior, you must issue the shutdown command explicitly; sending a signal to the process will not trigger this behavior. 

You can also force the primary to shut down, even without an up-to-date secondary available. 

Maintenance Mode When repair or compact runs on a secondary , the secondary will automatically drop into “recovering” mode until the operation finishes. This prevents clients from trying to read from it while it’s busy. 

## Geospatial Features 

Multi-Location Documents Indexing is now supported on documents which have multiple location objects, em- bedded either inline or in embedded documents. Additional command options are also supported, allowing results to return with not only distance but the location used to generate the distance. 

For more information, see Multi-location Documents for 2d Indexes (page 499). 

Polygon searches Polygonal $within queries are also now supported for simple polygon shapes. For details, see the $within operator documentation. 

## Journaling Enhancements 

• Journaling is now enabled by default for 64-bit platforms. Use the --nojournal command line option to disable it. 

• The journal is now compressed for faster commits to disk. 

• A new --journalCommitInterval run-time option exists for specifying your own group commit interval. The default settings do not change. 

• A new { getLastError: { j: true } } option is available to wait for the group commit. The group commit will happen sooner when a client is waiting on {j: true} . If journaling is disabled, {j: true} is a no-op. 

