|
1 | 1 | import { existsSync, promises as fs } from "node:fs"; |
2 | 2 | import { dirname } from "node:path"; |
3 | 3 | import type { FlaggedAccountStorageV1 } from "../storage.js"; |
| 4 | +import { readFileWithRetry } from "./flagged-storage-file.js"; |
4 | 5 |
|
5 | 6 | const RETRYABLE_UNLINK_CODES = new Set(["EBUSY", "EAGAIN", "EPERM"]); |
6 | 7 |
|
@@ -75,7 +76,9 @@ export async function loadFlaggedAccountsState(params: { |
75 | 76 | continue; |
76 | 77 | } |
77 | 78 | try { |
78 | | - const backupContent = await fs.readFile(backupPath, "utf-8"); |
| 79 | + const backupContent = await readFileWithRetry(backupPath, { |
| 80 | + readFile: fs.readFile, |
| 81 | + }); |
79 | 82 | const backupData = JSON.parse(backupContent) as unknown; |
80 | 83 | const recovered = params.normalizeFlaggedStorage(backupData); |
81 | 84 | if (!isValidFlaggedStorageCandidate(backupData, recovered)) { |
@@ -123,7 +126,9 @@ export async function loadFlaggedAccountsState(params: { |
123 | 126 | }; |
124 | 127 |
|
125 | 128 | try { |
126 | | - const content = await fs.readFile(params.path, "utf-8"); |
| 129 | + const content = await readFileWithRetry(params.path, { |
| 130 | + readFile: fs.readFile, |
| 131 | + }); |
127 | 132 | const data = JSON.parse(content) as unknown; |
128 | 133 | const loaded = params.normalizeFlaggedStorage(data); |
129 | 134 | if (!isValidFlaggedStorageCandidate(data, loaded)) { |
@@ -154,7 +159,9 @@ export async function loadFlaggedAccountsState(params: { |
154 | 159 | } |
155 | 160 |
|
156 | 161 | try { |
157 | | - const legacyContent = await fs.readFile(params.legacyPath, "utf-8"); |
| 162 | + const legacyContent = await readFileWithRetry(params.legacyPath, { |
| 163 | + readFile: fs.readFile, |
| 164 | + }); |
158 | 165 | const legacyData = JSON.parse(legacyContent) as unknown; |
159 | 166 | const migrated = params.normalizeFlaggedStorage(legacyData); |
160 | 167 | if (migrated.accounts.length > 0) { |
|
0 commit comments