Datastore: avoid creating nested transactions
Datastore: avoid creating nested transactions

Some driver functions need to run in a transacion, but the caller
might have already set up one for us, so we need to take that
into account because the datastore does not support nesting
transactions.

rainycape/gondola,rainycape/gondola,rainycape/gondola,rainycape/gondola