@@ -766,7 +766,7 @@ func (fs *Datastore) Query(ctx context.Context, q query.Query) (query.Results, e
766
766
// to `Close`.
767
767
b := query .NewResultBuilder (q )
768
768
b .Process .Go (func (p goprocess.Process ) {
769
- err := fs .walkTopLevel (fs .path , b )
769
+ err := fs .walkTopLevel (ctx , fs .path , b )
770
770
if err == nil {
771
771
return
772
772
}
@@ -782,7 +782,7 @@ func (fs *Datastore) Query(ctx context.Context, q query.Query) (query.Results, e
782
782
return query .NaiveQueryApply (q , b .Results ()), nil
783
783
}
784
784
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 {
786
786
dir , err := os .Open (path )
787
787
if err != nil {
788
788
return err
@@ -801,13 +801,15 @@ func (fs *Datastore) walkTopLevel(path string, result *query.ResultBuilder) erro
801
801
continue
802
802
}
803
803
804
- err = fs .walk (filepath .Join (path , dir ), result )
804
+ err = fs .walk (ctx , filepath .Join (path , dir ), result )
805
805
if err != nil {
806
806
return err
807
807
}
808
808
809
809
// Are we closing?
810
810
select {
811
+ case <- ctx .Done ():
812
+ return ctx .Err ()
811
813
case <- result .Process .Closing ():
812
814
return nil
813
815
default :
@@ -1123,7 +1125,7 @@ func (fs *Datastore) tempFileOnce() (*os.File, error) {
1123
1125
}
1124
1126
1125
1127
// 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 {
1127
1129
dir , err := os .Open (path )
1128
1130
if err != nil {
1129
1131
if os .IsNotExist (err ) {
@@ -1174,6 +1176,8 @@ func (fs *Datastore) walk(path string, qrb *query.ResultBuilder) error {
1174
1176
1175
1177
select {
1176
1178
case qrb .Output <- result :
1179
+ case <- ctx .Done ():
1180
+ return ctx .Err ()
1177
1181
case <- qrb .Process .Closing ():
1178
1182
return nil
1179
1183
}
0 commit comments