Any diagram to help developers understand the complicated relation among kinds of timestamps?

The timestamps in mongodb is so complicated !

I know in db/repl/ there’re some explanations, but it seems not to be quite useful for understanding. As far as I known, there’re the following timestamps in mongo kernel (timestamp in WiredTiger internal not included):

  • commit_timestamp
  • all_committed
  • all_durable
  • oldest_timestamp
  • stable_timestamp
  • prepare_timestamp
  • currentCommittedSnapshot(ReplicationCoordinatorImpl)
  • comittedSnapshot(WiredTigerSnapshotManager)
  • lastCommittedOpTime
  • oplogReadTimestamp(WiredTigerOplogManager)
  • recovery
  • lastApplied
  • lastDurable

There’re really difficulty in making sense of all these stuffs and their relations. Could experts in Mongodb kernel give us some kind of illustration with diagram instead of plain text in different common situations ?

I sketch something like the following, but I don’t have the whole picture in my mind.

I know it may sound time-consuming to draw such diagram, but I do believe it will help for external developers understand the timestamp mechanism. Any guidance is appreciated !