fix: Add workaround for broken Open implementation in CacheOnReadFs (https://github.com/spf13/afero/issues/193)
This commit is contained in:
@@ -32,6 +32,7 @@ type FileSystem struct {
|
||||
|
||||
compressionLevel string
|
||||
getFileBuffer func() (WriteCache, func() error, error)
|
||||
enableHacks bool
|
||||
|
||||
onHeader func(hdr *models.Header)
|
||||
}
|
||||
@@ -44,6 +45,7 @@ func NewFileSystem(
|
||||
|
||||
compressionLevel string,
|
||||
getFileBuffer func() (WriteCache, func() error, error),
|
||||
enableHacks bool,
|
||||
|
||||
onHeader func(hdr *models.Header),
|
||||
) afero.Fs {
|
||||
@@ -55,6 +57,7 @@ func NewFileSystem(
|
||||
|
||||
compressionLevel: compressionLevel,
|
||||
getFileBuffer: getFileBuffer,
|
||||
enableHacks: enableHacks,
|
||||
|
||||
onHeader: onHeader,
|
||||
}
|
||||
@@ -185,10 +188,28 @@ func (f *FileSystem) Open(name string) (afero.File, error) {
|
||||
)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, os.ErrNotExist
|
||||
}
|
||||
// See https://github.com/spf13/afero/issues/193
|
||||
if f.enableHacks {
|
||||
if err := f.mknode(false, name, os.ModePerm); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
panic(err)
|
||||
hdr, err = inventory.Stat(
|
||||
f.metadata,
|
||||
|
||||
name,
|
||||
|
||||
f.onHeader,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
return nil, os.ErrNotExist
|
||||
}
|
||||
} else {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
return NewFile(
|
||||
|
||||
Reference in New Issue
Block a user