What does these mean by logs?

I found these error message in log.
But, I don’t know what these mean.
Plz, help me.

2021-11-05T02:23:32.779+0900 I QUERY [conn12779876] Unable to establish remote cursors - {error: StaleConfig{ ns: “flo.psn_member_chnl”, vReceived: Timestamp(588, 0), vReceivedEpoch: ObjectId(‘5e8ac33072eaa684d76b4f52’), vWanted: Timestamp(589, 0), vWantedEpoch: ObjectId(‘5e8ac33072eaa684d76b4f52’) }: version mismatch detected for flo.psn_member_chnl, numActiveRemotes: 2}
2021-11-05T02:23:32.783+0900 I SH_REFR [ConfigServerCatalogCacheLoader-41232] Refresh for collection flo.psn_member_chnl from version 588|1||5e8ac33072eaa684d76b4f52 to version 589|1||5e8ac33072eaa684d76b4f52 took 3 ms

These came from Mongos.
And it appears repeatedly over several collections.

I found the cause of this error message.

This is because the version of chunk required by mongos and the version of chunk received are different.

But I don’t know the cause.

Hi @Kim_Hakseon,

This is an informational log message (severity level is I) indicating that a mongos had an older view of the cached config data to refresh.

This is an expected outcome of sharded cluster balancing.

Chunks are versioned based on:

  • a major version (incremented on chunk migration, which means data has moved to a new shard)
  • a minor version (incremented on chunk splits, which do not change the shard location of data)
  • an epoch (ObjectID distinguishing a unique instance of a collection)

mongos processes use a lazy refresh so they only update cached config data when necessary. A change in the major version or epoch means the cached config/routing data is “stale” and must be refreshed so mongos targets the correct shards for requests.

When a mongos makes requests the associated cached chunk version is included for context. If that config data is stale (older than the major version or epoch on the config servers), the mongos will automatically fetch updated config data. A lazy refresh minimises the amount of coordination required every time a chunk moves: mongos processes don’t need to verify routing until a relevant request is made.

Your first log line shows that the cached config data is stale and needs to be refreshed; the second shows the outcome of the refresh request:

Refresh for collection flo.psn_member_chnl from version 588|1||5e8ac33072eaa684d76b4f52 to version 589|1||5e8ac33072eaa684d76b4f52 took 3 ms

The original mongos request was sent with chunk version 588|1||5e8ac33072eaa684d76b4f52 (major, minor, epoch) which turned out to be a stale version. The config data was automatically refreshed to chunk version 589|1||5e8ac33072eaa684d76b4f52. The major version changed from 588 to 589, so this chunk was recently migrated. As data in this chunk is accessed by other mongos processes, they will have similar refresh of their cached data based on relevant requests.

There is no user action required for these informational messages.

Regards,
Stennie

2 Likes

Thank you for your detailed answer really quickly.

1 Like

This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.