Skip to content

Commit e5b675e

Browse files
committed
Fix out of order openNewConns causing a benchmark to fail
1 parent 104ce6f commit e5b675e

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

request-strategy-impls_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,11 @@ func BenchmarkRequestStrategy(b *testing.B) {
119119
for completed := 0; completed <= numPieces; completed += 1 {
120120
storageClient.completed = completed
121121
if completed > 0 {
122-
tor.cl.lock()
123-
tor.updatePieceCompletion(completed - 1)
124-
tor.cl.unlock()
122+
func() {
123+
tor.cl.lock()
124+
defer tor.cl.unlock()
125+
tor.updatePieceCompletion(completed - 1)
126+
}()
125127
}
126128
// Starting and stopping timers around this part causes lots of GC overhead.
127129
rs := peer.getDesiredRequestState()

torrent.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1829,16 +1829,16 @@ func (t *Torrent) afterSetPieceCompletion(piece pieceIndex, changed bool) {
18291829
cmpl := p.completion()
18301830
complete := cmpl.Ok && cmpl.Complete
18311831
p.t.updatePieceRequestOrderPiece(piece)
1832-
if complete {
1833-
t.openNewConns()
1834-
}
18351832
t.deferUpdateComplete()
18361833
if complete && len(p.dirtiers) != 0 {
18371834
t.logger.Printf("marked piece %v complete but still has dirtiers", piece)
18381835
}
18391836
if changed {
18401837
t.pieceCompletionChanged(piece, "Torrent.updatePieceCompletion")
18411838
}
1839+
if complete {
1840+
t.openNewConns()
1841+
}
18421842
}
18431843

18441844
// Non-blocking read. Client lock is not required.

0 commit comments

Comments
 (0)