Navigation

flushRouterConfig

Definition

flushRouterConfig

flushRouterConfig marks the cached routing table for a sharded cluster as stale, causing the next operation that requests the routing table to refresh the cache. Management of the routing table cache is generally handled automatically by the cluster. You should only need to run the flushRouterConfig command manually in specific instances, as indicated under Considerations.

Note

Starting in MongoDB 4.4, running flushRouterConfig is no longer required after executing the movePrimary or dropDatabase commands. These two commands now automatically refresh a sharded cluster’s routing table as needed when run.

Syntax

Starting in MongoDB 4.0.6 (and 3.6.11), the flushRouterConfig is available on both mongos and mongod instances, and has the following syntax:

  • Flush the cache for a specified collection when passed in a collection namespace parameter:

    db.adminCommand({ flushRouterConfig: "<db.collection>" } )
    
  • Flush the cache for a specified database and all of its collections when passed in a database namespace parameter:

    db.adminCommand({ flushRouterConfig: "<db>" } )
    
  • Flush the cache for all databases and their collections when run without a parameter or passed in a non-string scalar value (e.g. 1):

    db.adminCommand("flushRouterConfig")
    db.adminCommand( { flushRouterConfig: 1 } )
    

Note

In MongoDB 4.0.5 and earlier (and 3.6.10 and earlier), flushRouterConfig is only available for mongos instances and can only flush the cache for all databases and their collections:

db.adminCommand("flushRouterConfig")
db.adminCommand( { flushRouterConfig: 1 } )

Considerations

Generally, a sharded cluster’s routing table is automatically refreshed as needed as part of normal operation. However, you should manually issue the flushRouterConfig command in the following instances:

  • If running MongoDB 4.2 or earlier, after executing the movePrimary or dropDatabase commands.
  • If running MongoDB 4.2.2 or earlier (or 4.0.14 or earlier), after manually clearing the jumbo flag from a chunk that could not be split (i.e. an indivisible chunk). See Clear jumbo Flag for more information.
  • Before running the db.collection.getShardDistribution() command. This ensures that the command returns the most up-to-date information.