Доходит лимит тасков int

Volodimir

Пользователь
Сообщения
82
Решения
1
Добрый день, появилась забавная и интересная проблема. При долгой работе сервера, сервер начинает под конец сдыхать из-за того, что ломаются таски путем дохождения до предела значений int. Сыпятся подобные ошибки: Enabled task for arkansas06 with id #-1943153459. Очевидно, что это происходит из-за того, что id у таска это int и в минус уходит потому что оно достигает своего предела. Как вариант было бы поменять тип на long, но я уверен, что посыпятся ошибки.
 
О каких тасках речь? Диапазон int 2 с лишним миллиарда
Я в курсе, таски, которые обрабатывают различные события и действия на сервере. Проблема в том, что чудным образом, плагины выходят за пределы данного значения и уходят уже в минус.
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Объединено

Сервер работает с утра, около 6 часов МСК, уже присваиваются такие значения для пользователей в данном диапазоне: Disabled task for eegg with id 346252418. Как только пределы к вечеру перескачат до пределов int (более двух миллиардов), сервер загнется.
 
Последнее редактирование:
Это нетипичная проблема и скорее должна решаться на уровне плагинов, которые устраивают подобный спам задачами. В принципе, сам факт, что на сервере больше двух миллиардов задач, ненормальный
 
Это нетипичная проблема и скорее должна решаться на уровне плагинов, которые устраивают подобный спам задачами. В принципе, сам факт, что на сервере больше двух миллиардов задач, ненормальный
Все плагины самописы, кроме MythicMobs, переписывали ядро для отслеживания всех тасков, к сожалению, сие чудное творение как мистикмобс спамит довольно большим количеством тасков(спросите, а зачем я спрашиваю, если и сам нашел источник проблемы), возможно вы можете что-то сказать за данный плагин и может от него стоит отказаться вовсе или наоборот, кто-то использует данный плагин и у него нет проблем, вот, скорее, по большей степени из-за этого я обратился на форум.
 
Изменение Int на long мало что сломает, так как поменяется только сигнатура метода getTaskId, которая практически никогда не используется. Также можно заменить внутреннюю систему числовых айди на UUID, и вместо числового айди возвращать UUID#hashCode. Это ничего не поломает, однако, может замедлить поиск задач по айди (это тоже мало кто использует). Впрочем, если у вас больше 2х миллиардов задач, это вряд ли большая проблема

Для исправления ошибки сигнатуры в большинстве случаев достаточно будет просто перекомпилировать плагин, дав ему при компиляции апи сервера, где вот такая измененная сигнатура
 
Назад
Сверху Снизу