С одной из ошибок (во внутренней логике делегатских параметров) мы столкнулись пару дней назад. Так, при определенной ситуации, попадая в некоторые раунды подписи блоков, медианным оказался резервный делегат с "неповторимыми параметрами", которые перейдя к следующей ступени распределения эмиссии в пулах приводили к ошибке.
Происходил рестарт нод, и в конце концов перезапуск веерно поймал сразу несколько нод, сеть и потеряла связуемость.
Радует то, что понадобилось всего несколько часов времени, и сеть была запущена с последнего невозвратного блока. Далее лишь оставалось обновить ноды делегатам (за быстрый фикс ошибки в коде спасибо @aerostorm1). К данному вопросу мы ещё вернемся, в рамках ближайшего хардфорка изменить саму логику параметризации по пулам.
А пока, считаю необходимым оценить в ближайшее время реализацию задачи о минимальном дебагере/отладчике для работы в докер-контейнере с нодой (напр. для фиксации факта креша и названия сигнала SIGSEGV).
В этот раз помог запуск ноды с отладкой через GDB, опишу его ниже. Если знаете о варианта лучше, присоединяйтесь, описывайте, пригодится...
Нода с отладкой GDB
Установка ноды на сервере с ОС Ubuntu 16.04
Бывает, что из-за ошибок демон golosd вылетает с сообщением Segmentation fault или Aborted, в папке /var/lib/golosd появляется core dumped. При этом больше никакой информации.
Устанавливаем необходимые пакеты:
sudo apt-get update
sudo apt-get install -y \
autoconf \
automake \
autotools-dev \
bsdmainutils \
build-essential \
cmake \
doxygen \
git \
ccache \
libboost-all-dev \
libreadline-dev \
libssl-dev \
libtool \
ncurses-dev \
pbzip2 \
pkg-config \
python3 \
python3-dev \
python3-pip \
runit
sudo pip3 install gcovr
Копируем исходные файлы для сборки ноды из github:
git clone https://github.com/golos-blockchain/golos.git && cd golos
git submodule update --init --recursive -f
Задаём значения переменных и конфигурируем проект:
mkdir build && cd build
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_GOLOS_TESTNET=FALSE \
-DBUILD_SHARED_LIBRARIES=FALSE \
-DLOW_MEMORY_NODE=FALSE \
-DCHAINBASE_CHECK_LOCKING=FALSE \
..
Запуск сборки:
make -j $(nproc) && sudo make install
Подготовка файлов
mkdir -p ~/golos/build/programs/golosd/witness_node_data_dir/blockchain
Копируем в папку .../golosd/witness_node_data_dir свой конфиг для ноды, добавив сид-ноды, напр.
p2p-seed-node = golos1.lexai.host:4243
p2p-seed-node = golos2.lexai.host:4243
Копируем в папку .../golosd/witness_node_data_dir/blockchain бэкап файлов блоклогс и шаред-мемори, чтобы не терять время на синхронизацию сети (копии возможно скачать здесь.
Запуск GDB
Устанавливаем отладчик
sudo apt-get install gdb
Переходим в папку проекта
cd ~/golos/build/programs/golosd
Запускаем демон через gdb
gdb ./golosd
Включаем сохранение лога (в файл gdb.txt) рядом с файлом запуска
set logging on
Подтверждаем запуск
run
@lex, у нас ограничение наград из общего пула в 500 голосов? проголосовал за пост - цифра не поменялась.
@lex, а что мне теперь просто за комменты будут донатить?
@lex, ну хре знает, возможно где-то в кеше старая версия морды лежит
@litrbooh, так апы задваиваются?
@lex, ага, но я не чистил кэш. ап то сам один раз ставится, по второму идет просто подкрас
@litrbooh, ну я про подкрас, просто не могу повторить с другого компа. Позже проверю тогда.
@whaler-fund, да, на данный момент тестим один момент, ограничение с клиентов
"max_accepted_payout": "2000.000 GBG"
(это примерно 500 автору, 500 кураторам и 1000 часть (половина, которая уходит в фонд сообщества, что ранее была в ГБГ).
В ближайшие дни будет пост с подробностями, и поправим max_accepted_payout
@lex, ок, понятно
@lex, тогда пропали несколько постов из ленты.Я тогда выставил пост и он отразился как выставленный на два часа раньше, а потом совсем пропал, хотя донаты за него в кошельке сохранились.
@unik09, да, на данный момент при сбое сайты не падают, а продолжают работать доверившись серверу. Это имеет и плюсы и минусы.
Поэтому добавленное за неск. часов после сбоя оставалось ровно до момента восстановления сети.
На будущее поправим, если будет отставать номер блока в блокчейне (что свидетельствует о потери сети), автоматически выводить предупреждение на сайте и выключать функцию отправки постов, сообщений, переводов, т.е. работы "в режиме чтения". И хотя подобное бывает очень редко, пригодится...
@lex, проверим