Add more tracing to move keys locking events

This commit is contained in:
Jingyu Zhou 2019-09-24 13:08:18 -07:00
parent f13039e6d4
commit 2bbc6d68ba

View File

@ -67,12 +67,11 @@ ACTOR Future<MoveKeysLock> takeMoveKeysLock( Database cx, UID ddId ) {
loop { loop {
try { try {
state MoveKeysLock lock; state MoveKeysLock lock;
state UID txnId;
tr.setOption(FDBTransactionOptions::PRIORITY_SYSTEM_IMMEDIATE); tr.setOption(FDBTransactionOptions::PRIORITY_SYSTEM_IMMEDIATE);
if( !g_network->isSimulated() ) { if( !g_network->isSimulated() ) {
UID id(deterministicRandom()->randomUniqueID()); txnId = deterministicRandom()->randomUniqueID();
TraceEvent("TakeMoveKeysLockTransaction", ddId) tr.debugTransaction(txnId);
.detail("TransactionUID", id);
tr.debugTransaction( id );
} }
{ {
Optional<Value> readVal = wait( tr.get( moveKeysLockOwnerKey ) ); Optional<Value> readVal = wait( tr.get( moveKeysLockOwnerKey ) );
@ -83,6 +82,11 @@ ACTOR Future<MoveKeysLock> takeMoveKeysLock( Database cx, UID ddId ) {
lock.prevWrite = readVal.present() ? BinaryReader::fromStringRef<UID>(readVal.get(), Unversioned()) : UID(); lock.prevWrite = readVal.present() ? BinaryReader::fromStringRef<UID>(readVal.get(), Unversioned()) : UID();
} }
lock.myOwner = deterministicRandom()->randomUniqueID(); lock.myOwner = deterministicRandom()->randomUniqueID();
TraceEvent("TakeMoveKeysLockTransaction", ddId)
.detail("TransactionUID", txnId)
.detail("PrevOwner", lock.prevOwner.toString())
.detail("PrevWrite", lock.prevWrite.toString())
.detail("MyOwner", lock.myOwner.toString());
tr.set(moveKeysLockOwnerKey, BinaryWriter::toValue(lock.myOwner, Unversioned())); tr.set(moveKeysLockOwnerKey, BinaryWriter::toValue(lock.myOwner, Unversioned()));
wait(tr.commit()); wait(tr.commit());
return lock; return lock;
@ -111,11 +115,19 @@ ACTOR Future<Void> checkMoveKeysLock( Transaction* tr, MoveKeysLock lock, bool i
} }
// Take the lock // Take the lock
if(isWrite) { if (isWrite) {
BinaryWriter wrMyOwner(Unversioned()); wrMyOwner << lock.myOwner; BinaryWriter wrMyOwner(Unversioned());
tr->set( moveKeysLockOwnerKey, wrMyOwner.toValue() ); wrMyOwner << lock.myOwner;
BinaryWriter wrLastWrite(Unversioned()); wrLastWrite << deterministicRandom()->randomUniqueID(); tr->set(moveKeysLockOwnerKey, wrMyOwner.toValue());
tr->set( moveKeysLockWriteKey, wrLastWrite.toValue() ); BinaryWriter wrLastWrite(Unversioned());
UID lastWriter = deterministicRandom()->randomUniqueID();
wrLastWrite << lastWriter;
tr->set(moveKeysLockWriteKey, wrLastWrite.toValue());
TraceEvent("CheckMoveKeysLock")
.detail("PrevOwner", lock.prevOwner.toString())
.detail("PrevWrite", lock.prevWrite.toString())
.detail("MyOwner", lock.myOwner.toString())
.detail("Writer", lastWriter.toString());
} }
return Void(); return Void();