consensus: add error handling for state root computation and database initialization
- Wrap _compute_state_root in try/except to handle failures during genesis block creation - Return None and log warning when state root computation fails (e.g., when accounts don't exist yet) - Add error handling in init_db to ignore "already exists" errors when creating tables - Improve robustness of database initialization for concurrent or repeated startup scenarios
This commit is contained in:
@@ -80,7 +80,12 @@ _engine_internal = _engine
|
||||
def init_db() -> None:
|
||||
"""Initialize database with file-based encryption"""
|
||||
settings.db_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
SQLModel.metadata.create_all(_engine)
|
||||
try:
|
||||
SQLModel.metadata.create_all(_engine)
|
||||
except Exception as e:
|
||||
# If tables already exist, that's okay
|
||||
if "already exists" not in str(e):
|
||||
raise
|
||||
# Set restrictive file permissions on database file
|
||||
if settings.db_path.exists():
|
||||
os.chmod(settings.db_path, stat.S_IRUSR | stat.S_IWUSR) # Read/write for owner only
|
||||
|
||||
Reference in New Issue
Block a user