• LE Manh Cuong's avatar
    os: fix RemoveAll hangs on large directory · c3495058
    LE Manh Cuong authored
    golang.org/cl/121255 added close and re-open the directory when looping, prevent
    us from missing some if previous iteration deleted files.
    
    The CL introdued a bug. If we can not delete all entries in one request,
    the looping never exits, causing RemoveAll hangs.
    
    To fix that, simply discard the entries if we can not delete all of them
    in one iteration, then continue reading entries and delete them.
    
    Also make sure removeall_at return first error it encounters.
    
    Fixes #29921
    
    Change-Id: I8ec3a4c822d8d2d95d9f1ab71547879da395bc4a
    Reviewed-on: https://go-review.googlesource.com/c/go/+/171099
    Run-TryBot: Ian Lance Taylor <iant@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
    c3495058
removeall_at.go 4.75 KB