LCOV - code coverage report
Current view: top level - pebble - filenames.go (source / functions) Hit Total Coverage
Test: 2023-09-21 08:17Z 244f2e1f - tests only.lcov Lines: 16 18 88.9 %
Date: 2023-09-21 08:17:48 Functions: 0 0 -

          Line data    Source code
       1             : // Copyright 2012 The LevelDB-Go and Pebble Authors. All rights reserved. Use
       2             : // of this source code is governed by a BSD-style license that can be found in
       3             : // the LICENSE file.
       4             : 
       5             : package pebble
       6             : 
       7             : import (
       8             :         "fmt"
       9             : 
      10             :         "github.com/cockroachdb/pebble/internal/base"
      11             :         "github.com/cockroachdb/pebble/vfs"
      12             : )
      13             : 
      14             : type fileType = base.FileType
      15             : 
      16             : // FileNum is an identifier for a file within a database.
      17             : type FileNum = base.FileNum
      18             : 
      19             : const (
      20             :         fileTypeLog      = base.FileTypeLog
      21             :         fileTypeLock     = base.FileTypeLock
      22             :         fileTypeTable    = base.FileTypeTable
      23             :         fileTypeManifest = base.FileTypeManifest
      24             :         fileTypeCurrent  = base.FileTypeCurrent
      25             :         fileTypeOptions  = base.FileTypeOptions
      26             :         fileTypeTemp     = base.FileTypeTemp
      27             :         fileTypeOldTemp  = base.FileTypeOldTemp
      28             : )
      29             : 
      30             : // setCurrentFile sets the CURRENT file to point to the manifest with
      31             : // provided file number.
      32             : //
      33             : // NB: This is a low-level routine and typically not what you want to
      34             : // use. Newer versions of Pebble running newer format major versions do
      35             : // not use the CURRENT file. See setCurrentFunc in version_set.go.
      36           1 : func setCurrentFile(dirname string, fs vfs.FS, fileNum base.DiskFileNum) error {
      37           1 :         newFilename := base.MakeFilepath(fs, dirname, fileTypeCurrent, fileNum)
      38           1 :         oldFilename := base.MakeFilepath(fs, dirname, fileTypeTemp, fileNum)
      39           1 :         fs.Remove(oldFilename)
      40           1 :         f, err := fs.Create(oldFilename)
      41           1 :         if err != nil {
      42           1 :                 return err
      43           1 :         }
      44           1 :         if _, err := fmt.Fprintf(f, "MANIFEST-%s\n", fileNum); err != nil {
      45           1 :                 return err
      46           1 :         }
      47           1 :         if err := f.Sync(); err != nil {
      48           1 :                 return err
      49           1 :         }
      50           1 :         if err := f.Close(); err != nil {
      51           0 :                 return err
      52           0 :         }
      53           1 :         return fs.Rename(oldFilename, newFilename)
      54             : }

Generated by: LCOV version 1.14