spf13 / afero

A FileSystem Abstraction System for Go
Apache License 2.0
5.8k stars 498 forks source link

GCSFS new file object doesn't exist #354

Closed fraserdarwent closed 7 months ago

fraserdarwent commented 2 years ago

When attempting to create a new file on GCSFS with flags os.O_CREATE|os.O_TRUNC, the resource delete operation throws an error "object doesn't exist"

    if flag&os.O_TRUNC != 0 {
        err = file.resource.obj.Delete(fs.ctx) // Throws an error
        if err != nil {
            return nil, err
        }
        return fs.Create(name)
    }
fraserdarwent commented 2 years ago

I think a solution is to modify the code to something like this so it only attempts to delete the file on truncate if it exists, but I'm not certain

    if flag&os.O_TRUNC != 0 {
        if found {
            err = file.resource.obj.Delete(fs.ctx)
            if err != nil {
                return nil, err
            }
        }
        return fs.Create(name)
    }