From d46c3fa7308012ab9be42cee2a98db7662d2839f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=B8=D0=B3=D0=BE=D1=80=D0=B8=D0=B9=20=D0=A1?= =?UTF-8?q?=D0=B0=D1=84=D1=80=D0=BE=D0=BD=D0=BE=D0=B2?= Date: Wed, 19 Aug 2026 17:49:32 +0000 Subject: [PATCH] Delete internal/storage/fsync.go --- internal/storage/fsync.go | 83 --------------------------------------- 1 file changed, 83 deletions(-) delete mode 100644 internal/storage/fsync.go diff --git a/internal/storage/fsync.go b/internal/storage/fsync.go deleted file mode 100644 index 868993f..0000000 --- a/internal/storage/fsync.go +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2026 Safronov Grigorii - * - * Licensed under the CDDL, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * https://opensource.org/licenses/CDDL-1.0 - */ - -// Файл: internal/storage/fsync.go -// Назначение: Реальная синхронизация с диском (fsync) для WAL - -package storage - -import ( - "fmt" - "os" - "runtime" - "syscall" - "time" -) - -// RealFsync выполняет реальный fsync на файле -func RealFsync(file *os.File) error { - if file == nil { - return nil - } - - // Вызываем системный fsync - return file.Sync() -} - -// RealFsyncWithRetry выполняет fsync с повторными попытками -func RealFsyncWithRetry(file *os.File, maxRetries int, retryDelay time.Duration) error { - if file == nil { - return nil - } - - var lastErr error - for i := 0; i < maxRetries; i++ { - if err := RealFsync(file); err != nil { - lastErr = err - if i < maxRetries-1 { - time.Sleep(retryDelay) - continue - } - return fmt.Errorf("fsync failed after %d attempts: %v", maxRetries, lastErr) - } - return nil - } - return lastErr -} - -// FsyncDir синхронизирует директорию (для гарантии, что создание файла записано на диск) -func FsyncDir(dirPath string) error { - dir, err := os.Open(dirPath) - if err != nil { - return err - } - defer dir.Close() - - if runtime.GOOS == "windows" { - // На Windows нет прямой поддержки fsync для директорий - return nil - } - - return dir.Sync() -} - -// FsyncDataOnly выполняет fsync только для данных (не метаданных) -func FsyncDataOnly(file *os.File) error { - if file == nil { - return nil - } - - fd := int(file.Fd()) - _, _, err := syscall.Syscall(syscall.SYS_FSYNC, uintptr(fd), 0, 0) - if err != 0 { - return fmt.Errorf("fsync failed: %v", err) - } - return nil -}