Изменения в версии 2.3.10
Навигация: Главная страница/Система ejudge/Разработка/Изменения в версии 2.3.10
Contents
Хранение базы пользователей в MySQL
Поддерживается хранение базы пользователей в базе данных MySQL. Поддержка MySQL реализована с помощью плагина uldb_mysql.so. Конфигурационные параметры плагина определяются в файле ejudge.xml. Минимальные конфигурационные настройки могут выглядеть следующим образом:
<plugins> <plugin type="uldb" name="mysql" load="yes" default="yes"> <config> <user>ejudge</user> <password>*********</password> <database>ejudge</database> </config> </plugin> </plugins>
База данных ejudge и пользователь ejudge с полными правами работы с этой базой должны быть предварительно созданы, например, с помощью phpMyAdmin.
Для перехода от хранения базы пользователей в XML-файле к хранению базы пользователей в MySQL необходимо настроить плагин, создать базу данных, а затем выполнить команду
userlist-server --convert --from xml --to mysql
Обратный переход от базы данных к XML-файлу в данный момент не поддерживается, но будет поддерживаться в следующей версии.
Запросы к базе данных по умолчанию кэшируются, но кэширование можно отменить, указав атрибут cache_queries="no" в элементе <config> конфигурации плагина. Кэшируется не вся база пользователей, а только некоторая часть недавно запрошенных записей. При полном заполнении кэша вытесняются записи, которые не запрашивались дольше всего. Обновление базы выполняется сразу же в базе данных MySQL, при этом соответствующая запись удаляется из кэша, поэтому чтение, следующее за обновлением, приведет к запросу на чтение из базы данных.
Кэшированием можно управлять и во время работы сервера userlist-server, послав ему один из специальных сигналов (см. далее).
Хранение сообщений в MySQL
Поддерживается хранение базы сообщений в базе данных MySQL. Выбор вида хранения базы посылок выполняется для каждого турнира отдельно. По умолчанию сообщения хранятся в файлах. Чтобы включить хранение базы сообщений в базе данных MySQL необходимо в конфигурационном файле serve.cfg турнира установить параметр
clardb_plugin = "mysql"
Поддержка MySQL реализована с помощью плагина cldb_mysql.so. Конфигурационные параметры плагина определяются в файле ejudge.xml. Минимальные конфигурационные настройки могут выглядеть следующим образом:
<plugins> <plugin type="cldb" name="mysql" load="yes"> <config> <user>ejudge</user> <password>*********</password> <database>ejudge</database> </config> </plugin> </plugins>
База данных ejudge и пользователь ejudge с полными правами работы с этой базой должны быть предварительно созданы, например, с помощью phpMyAdmin.
При работе с базой сообщений турнира она полностью загружается в память при открытии турнира и не обновляется из MySQL. Однако все записи в базу сообщений немедленно приводят к обновлениям в MySQL базе. Поэтому не рекомендуется изменять MySQL базу сообщений в то время, когда турнир загружен. Команда "Reload contest settings" интерфейса администратора в числе прочего и перечитает базу сообщений из MySQL.
Устранены несколько мелких утечек памяти.
contest.xml
Добавлен элемент <reg_welcome_file>. Данный элемент позволяет указать имя HTML-файла с текстом, который выводится при регистрации на турнир с помощью CGI-программы new-register.
userlist-server
Если в качестве хранилища базы данных пользователей используется MySQL, то обрабатываются следующие сигналы, позволяющие менять стратегии кэширования во время работы программы:
USR1 сбрасывает кэш и запрещает дальнейшее кэширование USR2 сбрасывает кэш URG разрешает кэширование
new-server
- Посылки одного приоритета компилируются и тестируются в том порядке, в котором они поступили в систему (точнее, в порядке возрастания их run_id).
- На страницу администратора турнира добавлена ссылка "Change judging priorities", которая позволяет изменять
приоритет тестирования для задач. Заданный таким образом приоритет тестирования для задач прибавляется к глобальному приоритету (глобальная переменная `priority_adjustment'), приоритету пользователя (глобальная переменная `user_priority_adjustment'), приоритету языка программирования (переменная `priority_adjustment' секции определения языка программирования), приоритету задачи (переменная `priority_adjustment' секции определения задачи), приоритету тестировщика (переменная `priority_adjustment' секции определения тестировщика) и приоритету перетестирования (+10 к приоритету в случае повторного тестирования посылки).
Приоритет изменяется от -16 до 15, причем -16 соответствует максимальному приоритету. Значение приоритета по умолчанию - 0.
- При отображении листинга программы на странице "View source" привилегированного пользователя можно задавать кодировку, в которой записана программа (выпадающий список "Charset").
- На странице просмотра листинга программы ("View source") привилегированного пользователя поддерживается возможность отправки комментария к данной посылке. Комментарий заносится в базу сообщений с заголовком "Run RUN-ID is commented" и доступен автору посылки. Поддерживается возможность отправить комментарий к посылке и одновременно отметить посылку как "Ignored".
- На странице регистрации корректно обрабатывается ситуация, когда установлен флаг `disable_name', но заданы поля формы, которые необходимо заполнить.
- Просмотр паролей участников доступен только привилегированным пользователям с соответствующими привилегиями.
new-server-cmd
Поддерживается команда "force-start-virtual" для принудительного запуска виртуального турнира у указанного пользователя.
convert-clars
Новая программа для конвертации одного формата хранения базы посылок в другой. Программа инсталлируется либо в каталог bin, либо в каталог libexec/ejudge/bin, в зависимости от опции --enable-hidden-server-bins скрипта configure. Например, для перевода базы посылок некоторого турнира из файлового формата в базу данных MySQL программа должна вызываться со следующими аргументами:
convert-clars CONTEST-ID file mysql
Плагин cldb_mysql должен быть корректно настроен (см. выше) и требуемая база должна быть создана.
run
Исправлена ошибка падения программы на очень больших выходных файлах чекера.
clean-users
Убран из списка компилируемых программ.