Skip to content

Commit

Permalink
Exit ScanView if context has been cancelled (#7419)
Browse files Browse the repository at this point in the history
  • Loading branch information
mgaffney authored Sep 4, 2019
1 parent 6c54c27 commit 33fd94e
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
4 changes: 4 additions & 0 deletions sdk/logical/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,10 @@ func ScanView(ctx context.Context, view ClearableView, cb func(path string)) err

// Handle the contents in the directory
for _, c := range contents {
// Exit if the context has been canceled
if ctx.Err() != nil {
return ctx.Err()
}
fullPath := current + c
if strings.HasSuffix(c, "/") {
frontier = append(frontier, fullPath)
Expand Down
18 changes: 18 additions & 0 deletions sdk/logical/storage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,24 @@ func TestScanView(t *testing.T) {
}
}

func TestScanView_CancelContext(t *testing.T) {
s := prepKeyStorage(t)

ctx, cancelCtx := context.WithCancel(context.Background())
var i int
err := ScanView(ctx, s, func(path string) {
cancelCtx()
i++
})

if err == nil {
t.Error("Want context cancel err, got none")
}
if i != 1 {
t.Errorf("Want i==1, got %d", i)
}
}

func TestCollectKeys(t *testing.T) {
s := prepKeyStorage(t)

Expand Down

0 comments on commit 33fd94e

Please sign in to comment.