cmd/faucet: update state in background, skip when busy
This commit is contained in:
parent
a76e46e3d7
commit
6f13e515f4
|
@ -533,9 +533,11 @@ func (f *faucet) loop() {
|
||||||
}
|
}
|
||||||
defer sub.Unsubscribe()
|
defer sub.Unsubscribe()
|
||||||
|
|
||||||
for {
|
// Start a goroutine to update the state from head notifications in the background
|
||||||
select {
|
update := make(chan *types.Header)
|
||||||
case head := <-heads:
|
|
||||||
|
go func() {
|
||||||
|
for head := range update {
|
||||||
// New chain head arrived, query the current stats and stream to clients
|
// New chain head arrived, query the current stats and stream to clients
|
||||||
var (
|
var (
|
||||||
balance *big.Int
|
balance *big.Int
|
||||||
|
@ -588,6 +590,17 @@ func (f *faucet) loop() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
f.lock.RUnlock()
|
f.lock.RUnlock()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
// Wait for various events and assing to the appropriate background threads
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case head := <-heads:
|
||||||
|
// New head arrived, send if for state update if there's none running
|
||||||
|
select {
|
||||||
|
case update <- head:
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
|
||||||
case <-f.update:
|
case <-f.update:
|
||||||
// Pending requests updated, stream to clients
|
// Pending requests updated, stream to clients
|
||||||
|
|
Loading…
Reference in New Issue