core/rawdb: open meta file in read only mode (#26009)

This commit is contained in:
rjl493456442 2022-10-20 03:15:43 +08:00 committed by GitHub
parent d86fe26f67
commit b9ba6f6e4d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -148,20 +148,12 @@ func newTable(path string, name string, readMeter metrics.Meter, writeMeter metr
meta *os.File meta *os.File
) )
if readonly { if readonly {
// Will fail if table doesn't exist // Will fail if table index file or meta file is not existent
index, err = openFreezerFileForReadOnly(filepath.Join(path, idxName)) index, err = openFreezerFileForReadOnly(filepath.Join(path, idxName))
if err != nil { if err != nil {
return nil, err return nil, err
} }
// TODO(rjl493456442) change it to read-only mode. Open the metadata file meta, err = openFreezerFileForReadOnly(filepath.Join(path, fmt.Sprintf("%s.meta", name)))
// in rw mode. It's a temporary solution for now and should be changed
// whenever the tail deletion is actually used. The reason for this hack is
// the additional meta file for each freezer table is added in order to support
// tail deletion, but for most legacy nodes this file is missing. This check
// will suddenly break lots of database relevant commands. So the metadata file
// is always opened for mutation and nothing else will be written except
// the initialization.
meta, err = openFreezerFileForAppend(filepath.Join(path, fmt.Sprintf("%s.meta", name)))
if err != nil { if err != nil {
return nil, err return nil, err
} }