fix: Add workaround for broken Open implementation in CacheOnReadFs (https://github.com/spf13/afero/issues/193)

This commit is contained in:
Felicitas Pojtinger
2021-12-25 20:44:27 +01:00
parent 99e6687d51
commit 9f5c1b9818
3 changed files with 28 additions and 5 deletions

View File

@@ -203,6 +203,7 @@ var serveFTPCmd = &cobra.Command{
viper.GetString(cacheWriteFlag),
)
},
viper.GetString(cacheFileSystemFlag) != config.NoneKey,
logger.PrintHeader,
)

View File

@@ -125,8 +125,9 @@ var serveHTTPCmd = &cobra.Command{
Metadata: metadataPersister,
},
"", // We never write
nil, // We never write
"", // We never write
nil, // We never write
false, // We never write
logger.PrintHeader,
)

View File

@@ -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(