• Forum has been upgraded, all links, images, etc are as they were. Please see Official Announcements for more information

Обновление мастерноды

Ninazu

New member
Здаровки. Вопрос такого плана. Можно как-то обновить мастерноду, чтоб не стартовать её заново?
Сейчас при выходе обновления, приходится дожидаться выплат по ноде, и только после обновлять её до новой версии. Если сделать это до выплат, то нода меняет статус на NEW_START_REQUIRED или WATCHDOG_EXPIRED, В таком случае через Start MISSING запустить её не получается, а через обычный Start alias или Start all счётчик активности сбрасывается и нода перемещается вконец списка. В прошлый раз по незнанию потерял так 5 дней :(
 
WATCHDOG_EXPIRED это не страшно - если sentinel работает, то из такого состояния нода восстановится сама.
А вот NEW_START_REQUIRED быть не должно. Как проверяете? Если с локального кошелька, то ему надо дать время синхронизироваться. Всегда перепроверяйте с других нод/источников прежде чем рестартовать, возможно, что локальный кошелек не все подтянул.

В целом, обновлять можно в любой момент, если нет смены протокола (0.12.1.4->0.12.1.5 должно обновиться без проблем), но не забывайте, что после "dash-cli stop" надо дать ноде секунд 10 чтобы остановить все процессы и только после этого обновлять бинарник и запускать снова.
 
Тоже надеялся на оптимистический сценарий в прошлый раз, обновил и недожидаясь синхронизации пошел спать.
В итоге увидел на dashninja.pl статус Inactive (0%) утром. Зашел на холодный кошелёк и увидел статус NEW_START_REQUIRED
Как понимаю такая ситуация возможна если нода не успела синхронизироваться до следующего Port Check Next Try
Вот выплатят текущую долю и проверю еще раз)
 
Написал такой скрипт для обновления мастерноды. С автоматическим чеком
(В Bash не сильно шарю, поэтому ногами не пинать)

Code:
#!/bin/sh

#VERSION="RPi2"
VERSION="linux64"
#VERSION="linux32"

DASH_PATH=~/.dash

#########################
cd "$DASH_PATH"

echo "Scenario \033[33m$VERSION\033[0m"

CONTENT=$(wget https://www.dashninja.pl/dashninja-latestversion.json -q -O -)
DASH_VERSION=$(echo "$CONTENT" | jq -M -r '.version.string')

if [ -f ./dash-cli ]; then
   YOUR_RAW_VERSION=$(./dash-cli getinfo | jq -M -r '.version')
   YOUR_VERSION="0"

   for c in 1 3 5
   do
      PART=$(echo "$YOUR_RAW_VERSION" | cut -c $((c))-$((c+1)))
      PART=$((PART+0))
      YOUR_VERSION="$YOUR_VERSION.$PART"
   done
fi

echo "Your version \033[33m$YOUR_VERSION\033[0m"

if [ "$YOUR_VERSION" = "$DASH_VERSION" ]
then
   echo "Last version \033[33m$DASH_VERSION\033[0m"
   exit;
fi

echo "New version available \033[33m$DASH_VERSION\033[0m"
URL="https://www.dash.org/binaries/dashcore-$DASH_VERSION-$VERSION.tar.gz"
FILE=${URL##*/}
DIR=${FILE%.tar.gz}

echo "Download \033[33m$FILE\033[0m"
wget -q "$URL"

echo "Extract \033[33m$FILE\033[0m"
EXTRACTED_PATH=$(tar xzvf "$FILE" | sed -n 1p)

echo "\033[0;31mStop\033[0m MasterNode"
./dash-cli stop > /dev/null 2>&1
sleep 15
killall -9 dashd dash-shutoff > /dev/null 2>&1
sleep 1

echo "Replace files"
rm dashd dash-cli > /dev/null 2>&1

mv "${EXTRACTED_PATH}bin/dashd" .
mv "${EXTRACTED_PATH}bin/dash-cli" .
chmod 755 dashd dash-cli

echo "Remove temporary files"
rm "$FILE"
rm -rf "$EXTRACTED_PATH"
rm peers.dat debug.log db.log > /dev/null 2>&1

echo "\033[0;31mStart\033[0m MasterNode"
./dashd &

В будущем думаю еще добавить обновление sentinel. Но пока что норм и так
 
Last edited:
Тоже надеялся на оптимистический сценарий в прошлый раз, обновил и недожидаясь синхронизации пошел спать.
В итоге увидел на dashninja.pl статус Inactive (0%) утром. Зашел на холодный кошелёк и увидел статус NEW_START_REQUIRED
Как понимаю такая ситуация возможна если нода не успела синхронизироваться до следующего Port Check Next Try
Вот выплатят текущую долю и проверю еще раз)
"Port Check Next Try" - это фича dashninja, сеть проверяет иначе. Но нода видимо действительно отвалилась, раз показывает NEW_START_REQUIRED. Такое поведение ненормально. В следующий раз (если повторится), поделитесь логом мне на почту плз [email protected] (файл лога лучше скопировать до рестарта удаленного демона, иначе он будет урезан и, возможно, не так полезен).
 
В этот раз всё нормально прошло. Обновился до 0.12.1.5. Без сброса
Если ситуация возникнет еще раз, отпишу
Из плюсов. Так это автоматизировал это все дело. Если кому интересно. Последняя версия скрипта лежит тут
https://gist.github.com/ninazu/c9fba7a415b562fdd1222e609cfd83b4
 
Back
Top