API точки входа Docker все время возвращает один и тот же ответLinux

Ответить
Anonymous
 API точки входа Docker все время возвращает один и тот же ответ

Сообщение Anonymous »

Я хотел бы попросить вашей помощи в решении этой странной проблемы.
Итак, по сути, у меня есть образ докера, который начинается с точки входа, которая запускает цикл для проверки API с помощью завитка, например это:

Код: Выделить всё

check_server_version() {
if [ "$UPDATE_IN_PROGRESS" -eq 1 ]; then
return 0
fi

local current_version=$(get_game_version)
if [ -z "$current_version" ]; then
log_message "Failed to get game version from steam.inf" "error"
return 1
fi

local api_url="https://api.steampowered.com/ISteamApps/UpToDateCheck/v0001/?appid=730&version=$current_version&nocache=$(date +%s)"
local response=$(curl -s \
-H "Cache-Control: no-cache, no-store" \
-H "Pragma: no-cache" \
"$api_url")

local up_to_date=$(echo "$response" | jq -r '.response.up_to_date')

if [ "$up_to_date" = "false" ]; then
local required_version=$(echo "$response" | jq -r '.response.required_version')
local message=$(echo "$response" | jq -r '.response.message')

if [ ! -z "$required_version" ]; then
log_message "New version detected: $required_version (current: $current_version)" "running"
log_message "Steam message: $message" "running"

if [ -z "$UPDATE_COUNTDOWN_TIME" ]; then
UPDATE_COUNTDOWN_TIME=300
fi

log_message "Countdown initiated to restart server: $UPDATE_COUNTDOWN_TIME seconds" "running"

if [ ! -z "$UPDATE_COMMANDS" ]; then
start_update_countdown "$required_version"
fi
else
log_message "Failed to get required version from API response" "error"
log_message "Full response: $response" "debug"
return 1
fi
else
log_message "Server up to date. Current version: $current_version (checked at: $(date '+%Y-%m-%d %H:%M:%S'))" "debug"
fi
}

version_check_loop() {
while [ ${UPDATE_AUTO_RESTART:-0} -eq 1 ] && [ $UPDATE_IN_PROGRESS -eq 0 ]; do
sleep "${VERSION_CHECK_INTERVAL:-300}"
check_server_version
done
}
Когда вы запускаете контейнер, он правильно выполняет проверку и, если обнаруживает новую версию при запуске или после этого в течение нескольких минут, выполняет задачи обновления. Но когда сервер работает некоторое время и удаляется новое обновление (и я вижу это в API при запуске его на своем компьютере), консоль продолжает сообщать в журналах отладки, что «Да, обновлений нет, текущая версия из API - xy» и возвращает старую версию, работающую на сервере.
Почему это может произойти?
Проект доступен на GitHub для полного понимания сценария. лучше: https://github.com/K4ryuu/CS2-Egg
Я пытался добавить дополнительные параметры к URL-адресу, пытался использовать отсутствие кэша и так далее. Я попытался подделать ответ API при запуске новой версии, которая работает при запуске.

Подробнее здесь: https://stackoverflow.com/questions/792 ... l-the-time
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»