Изменения в версии 2.3.10

From EjudgeWiki
Revision as of 06:48, 10 April 2011 by Cher (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 2.3.10

Хранение базы пользователей в 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

Убран из списка компилируемых программ.