adjust logs

This commit is contained in:
chrislu 2023-09-21 23:51:32 -07:00
parent 3e23421608
commit 2df70ce95f
2 changed files with 24 additions and 17 deletions

View file

@ -64,13 +64,15 @@ func (lt *LockTable[T]) AcquireLock(intention string, key T, lockType LockType)
// If the lock is held exclusively, wait // If the lock is held exclusively, wait
entry.mu.Lock() entry.mu.Lock()
if len(entry.waiters) > 0 || lockType == ExclusiveLock { if len(entry.waiters) > 0 || lockType == ExclusiveLock {
glog.V(4).Infof("ActiveLock %d %s wait for %+v type=%v with waiters %d active %d.\n", lock.ID, lock.intention, key, lockType, len(entry.waiters), entry.activeLockOwnerCount) if glog.V(4) {
if glog.V(4) && len(entry.waiters) > 0 { fmt.Printf("ActiveLock %d %s wait for %+v type=%v with waiters %d active %d.\n", lock.ID, lock.intention, key, lockType, len(entry.waiters), entry.activeLockOwnerCount)
if len(entry.waiters) > 0 {
for _, waiter := range entry.waiters { for _, waiter := range entry.waiters {
fmt.Printf(" %d", waiter.ID) fmt.Printf(" %d", waiter.ID)
} }
fmt.Printf("\n") fmt.Printf("\n")
} }
}
entry.waiters = append(entry.waiters, lock) entry.waiters = append(entry.waiters, lock)
if lockType == ExclusiveLock { if lockType == ExclusiveLock {
for !lock.isDeleted && ((len(entry.waiters) > 0 && lock.ID != entry.waiters[0].ID) || entry.activeLockOwnerCount > 0) { for !lock.isDeleted && ((len(entry.waiters) > 0 && lock.ID != entry.waiters[0].ID) || entry.activeLockOwnerCount > 0) {
@ -91,13 +93,15 @@ func (lt *LockTable[T]) AcquireLock(intention string, key T, lockType LockType)
// Otherwise, grant the lock // Otherwise, grant the lock
entry.lockType = lockType entry.lockType = lockType
glog.V(4).Infof("ActiveLock %d %s locked %+v type=%v with waiters %d active %d.\n", lock.ID, lock.intention, key, lockType, len(entry.waiters), entry.activeLockOwnerCount) if glog.V(4) {
if glog.V(4) && len(entry.waiters) > 0 { fmt.Printf("ActiveLock %d %s locked %+v type=%v with waiters %d active %d.\n", lock.ID, lock.intention, key, lockType, len(entry.waiters), entry.activeLockOwnerCount)
if len(entry.waiters) > 0 {
for _, waiter := range entry.waiters { for _, waiter := range entry.waiters {
fmt.Printf(" %d", waiter.ID) fmt.Printf(" %d", waiter.ID)
} }
fmt.Printf("\n") fmt.Printf("\n")
} }
}
entry.mu.Unlock() entry.mu.Unlock()
return lock return lock
@ -129,13 +133,15 @@ func (lt *LockTable[T]) ReleaseLock(key T, lock *ActiveLock) {
delete(lt.locks, key) delete(lt.locks, key)
} }
glog.V(4).Infof("ActiveLock %d %s unlocked %+v type=%v with waiters %d active %d.\n", lock.ID, lock.intention, key, entry.lockType, len(entry.waiters), entry.activeLockOwnerCount) if glog.V(4) {
fmt.Printf("ActiveLock %d %s unlocked %+v type=%v with waiters %d active %d.\n", lock.ID, lock.intention, key, entry.lockType, len(entry.waiters), entry.activeLockOwnerCount)
if len(entry.waiters) > 0 { if len(entry.waiters) > 0 {
for _, waiter := range entry.waiters { for _, waiter := range entry.waiters {
fmt.Printf(" %d", waiter.ID) fmt.Printf(" %d", waiter.ID)
} }
fmt.Printf("\n") fmt.Printf("\n")
} }
}
entry.activeLockOwnerCount-- entry.activeLockOwnerCount--
// Notify the next waiter // Notify the next waiter

View file

@ -1,6 +1,7 @@
package util package util
import ( import (
"fmt"
"math/rand" "math/rand"
"sync" "sync"
"testing" "testing"
@ -26,14 +27,14 @@ func TestOrderedLock(t *testing.T) {
lock := lt.AcquireLock("", key, lockType) lock := lt.AcquireLock("", key, lockType)
// Lock acquired, perform some work // Lock acquired, perform some work
glog.V(4).Infof("ActiveLock %d acquired the lock.\n", lock.ID) fmt.Printf("ActiveLock %d acquired lock %v\n", lock.ID, lockType)
// Simulate some work // Simulate some work
time.Sleep(time.Duration(rand.Int31n(10)*10) * time.Millisecond) time.Sleep(time.Duration(rand.Int31n(10)*10) * time.Millisecond)
// Release the lock // Release the lock
lt.ReleaseLock(key, lock) lt.ReleaseLock(key, lock)
glog.V(4).Infof("ActiveLock %d released the lock.\n", lock.ID) fmt.Printf("ActiveLock %d released lock %v\n", lock.ID, lockType)
}(i) }(i)
} }