Transactions with local readConcern perform untimestamped reads and do not check the min visible snapshot for collections, so they can access collections whose catalog information does not match the state of the collection in the transaction's snapshot. We will write a concurrency test to exercise this behavior and ensure it cannot cause crashes.
Transaction thread: This thread must perform transactions using local readConcern. It starts the transaction with an operation on a collection startcoll. Then it performs operations on a collection ddlcoll, which may have had catalog changes since the transaction's snapshot was opened. These operations must include all operations that are supported in transactions (except killCursors, which does not touch data) and must make use of indexes:
- find (collection scan)
- find (index scan on _id)
- find (index scan on secondary index)
DDL thread: This thread must perform the following operations on ddlcoll:
- Create secondary index