Fixed inconsistency and also potential data race in weave/vendor/k8s.io/apimachinery/pkg/util/clock/clock.go:
f.waiter is read/written 4 times in weave/vendor/k8s.io/apimachinery/pkg/util/clock/clock.go; 3 out of 4 times it is protected by f.fakeClock.lock/f,lock; 1 out of 4 times it is read without a Lock, which is in func C on L317.
A data race may happen when C() and other func like Stop() are called in parallel.
In order to avoid potential data race here, I use f.fakeClock.lock.RLock(); defer f.fakeClock.lock.RUnlock() to make sure that all usages of items is in critical section.
Fixed inconsistency and also potential data race in weave/vendor/k8s.io/apimachinery/pkg/util/clock/clock.go: f.waiter is read/written 4 times in weave/vendor/k8s.io/apimachinery/pkg/util/clock/clock.go; 3 out of 4 times it is protected by f.fakeClock.lock/f,lock; 1 out of 4 times it is read without a Lock, which is in func C on L317. A data race may happen when C() and other func like Stop() are called in parallel.
In order to avoid potential data race here, I use f.fakeClock.lock.RLock(); defer f.fakeClock.lock.RUnlock() to make sure that all usages of items is in critical section.