Spaces:
Running
Running
Hermes Agent commited on
Commit ·
d4c8996
1
Parent(s): 1f37c97
fix(persistence): enforce WAL TRUNCATE checkpointing and last-known-good backup fallback preventing provider database resets
Browse files- entrypoint.sh +20 -10
entrypoint.sh
CHANGED
|
@@ -82,17 +82,26 @@ mkdir -p "$PERSIST_DIR" "$BACKUP_DIR" "$RUNTIME_DIR" "$PERSIST_WEBUI_DIR" "$RUNT
|
|
| 82 |
if [ -f "$PERSIST_DB" ] && [ -s "$PERSIST_DB" ]; then
|
| 83 |
_INIT_SIZE=$(wc -c < "$PERSIST_DB" 2>/dev/null | tr -d ' \t\n\r' || echo "0")
|
| 84 |
echo "[PERSISTENCE] Found OmniRoute snapshot at: ${PERSIST_DB} (${_INIT_SIZE} bytes)"
|
|
|
|
| 85 |
if command -v sqlite3 >/dev/null 2>&1; then
|
| 86 |
_CHK=$(sqlite3 "$PERSIST_DB" "PRAGMA quick_check;" 2>/dev/null || echo "failed")
|
| 87 |
if [ "$_CHK" = "ok" ]; then
|
| 88 |
-
cp -f "$PERSIST_DB" "$
|
| 89 |
-
echo "[PERSISTENCE] Restored persistent database into ${
|
| 90 |
-
|
| 91 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
fi
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
|
|
|
| 96 |
fi
|
| 97 |
fi
|
| 98 |
|
|
@@ -176,10 +185,11 @@ sync_omniroute_db() {
|
|
| 176 |
if [ -f "$RUNTIME_DB" ] && [ -s "$RUNTIME_DB" ]; then
|
| 177 |
mkdir -p "$PERSIST_DIR" "$BACKUP_DIR" 2>/dev/null || true
|
| 178 |
if command -v sqlite3 >/dev/null 2>&1; then
|
| 179 |
-
sqlite3 "$RUNTIME_DB" "PRAGMA wal_checkpoint(
|
| 180 |
-
sqlite3 "$RUNTIME_DB" "
|
|
|
|
| 181 |
else
|
| 182 |
-
cp -f "$RUNTIME_DB" "$
|
| 183 |
fi
|
| 184 |
[ -f "${RUNTIME_DB}-wal" ] && cp -f "${RUNTIME_DB}-wal" "${PERSIST_DB}-wal" 2>/dev/null || true
|
| 185 |
[ -f "${RUNTIME_DB}-shm" ] && cp -f "${RUNTIME_DB}-shm" "${PERSIST_DB}-shm" 2>/dev/null || true
|
|
|
|
| 82 |
if [ -f "$PERSIST_DB" ] && [ -s "$PERSIST_DB" ]; then
|
| 83 |
_INIT_SIZE=$(wc -c < "$PERSIST_DB" 2>/dev/null | tr -d ' \t\n\r' || echo "0")
|
| 84 |
echo "[PERSISTENCE] Found OmniRoute snapshot at: ${PERSIST_DB} (${_INIT_SIZE} bytes)"
|
| 85 |
+
_RESTORED=0
|
| 86 |
if command -v sqlite3 >/dev/null 2>&1; then
|
| 87 |
_CHK=$(sqlite3 "$PERSIST_DB" "PRAGMA quick_check;" 2>/dev/null || echo "failed")
|
| 88 |
if [ "$_CHK" = "ok" ]; then
|
| 89 |
+
cp -f "$PERSIST_DB"* "$RUNTIME_DIR/" 2>/dev/null || true
|
| 90 |
+
echo "[PERSISTENCE] Restored persistent database into ${RUNTIME_DIR} successfully."
|
| 91 |
+
_RESTORED=1
|
| 92 |
+
elif [ -f "${BACKUP_DIR}/last-known-good.sqlite" ]; then
|
| 93 |
+
_BCHK=$(sqlite3 "${BACKUP_DIR}/last-known-good.sqlite" "PRAGMA quick_check;" 2>/dev/null || echo "failed")
|
| 94 |
+
if [ "$_BCHK" = "ok" ]; then
|
| 95 |
+
cp -f "${BACKUP_DIR}/last-known-good.sqlite" "$RUNTIME_DB" 2>/dev/null || true
|
| 96 |
+
cp -f "${BACKUP_DIR}/last-known-good.sqlite" "$PERSIST_DB" 2>/dev/null || true
|
| 97 |
+
echo "[PERSISTENCE] Restored from last-known-good backup into ${RUNTIME_DB} successfully."
|
| 98 |
+
_RESTORED=1
|
| 99 |
+
fi
|
| 100 |
fi
|
| 101 |
+
fi
|
| 102 |
+
if [ $_RESTORED -eq 0 ]; then
|
| 103 |
+
cp -f "$PERSIST_DB"* "$RUNTIME_DIR/" 2>/dev/null || true
|
| 104 |
+
echo "[PERSISTENCE] Restored persistent database snapshot directly into ${RUNTIME_DB}."
|
| 105 |
fi
|
| 106 |
fi
|
| 107 |
|
|
|
|
| 185 |
if [ -f "$RUNTIME_DB" ] && [ -s "$RUNTIME_DB" ]; then
|
| 186 |
mkdir -p "$PERSIST_DIR" "$BACKUP_DIR" 2>/dev/null || true
|
| 187 |
if command -v sqlite3 >/dev/null 2>&1; then
|
| 188 |
+
sqlite3 "$RUNTIME_DB" "PRAGMA wal_checkpoint(TRUNCATE);" 2>/dev/null || true
|
| 189 |
+
sqlite3 "$RUNTIME_DB" "PRAGMA wal_checkpoint(FULL);" 2>/dev/null || true
|
| 190 |
+
sqlite3 "$RUNTIME_DB" ".backup '$PERSIST_DB'" 2>/dev/null || cp -f "$RUNTIME_DB"* "$PERSIST_DIR/" 2>/dev/null || true
|
| 191 |
else
|
| 192 |
+
cp -f "$RUNTIME_DB"* "$PERSIST_DIR/" 2>/dev/null || true
|
| 193 |
fi
|
| 194 |
[ -f "${RUNTIME_DB}-wal" ] && cp -f "${RUNTIME_DB}-wal" "${PERSIST_DB}-wal" 2>/dev/null || true
|
| 195 |
[ -f "${RUNTIME_DB}-shm" ] && cp -f "${RUNTIME_DB}-shm" "${PERSIST_DB}-shm" 2>/dev/null || true
|