Skip to content

Commit 9e51ebb

Browse files
authored
query: also teard down on ctx done (#106)
1 parent ff6502b commit 9e51ebb

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

Diff for: flatfs.go

+8-4
Original file line numberDiff line numberDiff line change
@@ -766,7 +766,7 @@ func (fs *Datastore) Query(ctx context.Context, q query.Query) (query.Results, e
766766
// to `Close`.
767767
b := query.NewResultBuilder(q)
768768
b.Process.Go(func(p goprocess.Process) {
769-
err := fs.walkTopLevel(fs.path, b)
769+
err := fs.walkTopLevel(ctx, fs.path, b)
770770
if err == nil {
771771
return
772772
}
@@ -782,7 +782,7 @@ func (fs *Datastore) Query(ctx context.Context, q query.Query) (query.Results, e
782782
return query.NaiveQueryApply(q, b.Results()), nil
783783
}
784784

785-
func (fs *Datastore) walkTopLevel(path string, result *query.ResultBuilder) error {
785+
func (fs *Datastore) walkTopLevel(ctx context.Context, path string, result *query.ResultBuilder) error {
786786
dir, err := os.Open(path)
787787
if err != nil {
788788
return err
@@ -801,13 +801,15 @@ func (fs *Datastore) walkTopLevel(path string, result *query.ResultBuilder) erro
801801
continue
802802
}
803803

804-
err = fs.walk(filepath.Join(path, dir), result)
804+
err = fs.walk(ctx, filepath.Join(path, dir), result)
805805
if err != nil {
806806
return err
807807
}
808808

809809
// Are we closing?
810810
select {
811+
case <-ctx.Done():
812+
return ctx.Err()
811813
case <-result.Process.Closing():
812814
return nil
813815
default:
@@ -1123,7 +1125,7 @@ func (fs *Datastore) tempFileOnce() (*os.File, error) {
11231125
}
11241126

11251127
// only call this on directories.
1126-
func (fs *Datastore) walk(path string, qrb *query.ResultBuilder) error {
1128+
func (fs *Datastore) walk(ctx context.Context, path string, qrb *query.ResultBuilder) error {
11271129
dir, err := os.Open(path)
11281130
if err != nil {
11291131
if os.IsNotExist(err) {
@@ -1174,6 +1176,8 @@ func (fs *Datastore) walk(path string, qrb *query.ResultBuilder) error {
11741176

11751177
select {
11761178
case qrb.Output <- result:
1179+
case <-ctx.Done():
1180+
return ctx.Err()
11771181
case <-qrb.Process.Closing():
11781182
return nil
11791183
}

0 commit comments

Comments
 (0)