• Adrian Sutton's avatar
    op-supervisor: Wire in head tracking (#11139) · 98e1cf26
    Adrian Sutton authored
    * op-supervisor: Introduce head tracker
    
    * op-supervisor: Move log db to subpackage of db.
    
    * op-supervisor: Route all updates through a common db that can track heads
    
    * op-supervisor: Remove unused error.
    
    * op-supervisor: Remove operations - it fits into a later PR.
    
    * op-supervisor: Fix semgrep
    
    * op-supervisor: Move resuming databases into ChainsDB so it can later update the chain heads too.
    98e1cf26
file_layout.go 792 Bytes
package backend

import (
	"fmt"
	"os"
	"path/filepath"

	"github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types"
)

func prepLogDBPath(chainID types.ChainID, datadir string) (string, error) {
	dir, err := prepChainDir(chainID, datadir)
	if err != nil {
		return "", err
	}
	return filepath.Join(dir, "log.db"), nil
}

func prepChainDir(chainID types.ChainID, datadir string) (string, error) {
	dir := filepath.Join(datadir, chainID.String())
	if err := os.MkdirAll(dir, 0755); err != nil {
		return "", fmt.Errorf("failed to create chain directory %v: %w", dir, err)
	}
	return dir, nil
}

func prepDataDir(datadir string) error {
	if err := os.MkdirAll(datadir, 0755); err != nil {
		return fmt.Errorf("failed to create data directory %v: %w", datadir, err)
	}
	return nil
}