You can now simultaneously RW and RO map a dataset because all the RO
mappings use copies (clones) of a snapshot. Only a single RW mapping
of course.
When the RW mapping swaps out it automatically creates a new snapshot.
So there is currently no user control over when a version of the dataset
is "published", it just happens everytime you swapout an experiment with
a RW mapping.
A new RW mapping does not affect current RO mappings of course as they
continue to use whatever snapshot they were created with. New RO mappings
with get the most recent snapshot, which we currently track in the DB via
the per-lease attribute "last_snapshot".
You can also now declare a lease to be "exclusive use" by setting the
"exclusive_use" lease attribute (via modlease). This means that it follows
the old semantics of only one mapping at a time, whether it be RO or RW.
This is an alternative to the "simultaneous_ro_datasets" sitevar which
enforces the old behavior globally. Primarily, I put this attribute in to
prevent an unexpected failure in the snapshot/clone path from wreaking
havoc over time. I don't know if there is any value in exposing this to
the user.