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
Files changed (1) hide show
  1. 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" "$RUNTIME_DB"
89
- echo "[PERSISTENCE] Restored persistent database into ${RUNTIME_DB} successfully."
90
- else
91
- echo "[PERSISTENCE] WARNING: Persistent snapshot failed integrity check. Initializing fresh runtime DB."
 
 
 
 
 
 
 
92
  fi
93
- else
94
- cp -f "$PERSIST_DB" "$RUNTIME_DB"
95
- echo "[PERSISTENCE] Restored persistent database into ${RUNTIME_DB}."
 
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(PASSIVE);" 2>/dev/null || true
180
- sqlite3 "$RUNTIME_DB" ".backup '$PERSIST_DB'" 2>/dev/null || cp -f "$RUNTIME_DB" "$PERSIST_DB" 2>/dev/null || true
 
181
  else
182
- cp -f "$RUNTIME_DB" "$PERSIST_DB" 2>/dev/null || true
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