Difference between revisions of "Изменения в версии 3.10.3"
(...) |
(...) |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[История версий]]/[[Изменения в версии 3.10.3]] | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[История версий]]/[[Изменения в версии 3.10.3]] | ||
− | Время выхода: | + | Время выхода: 21 мая 2023 г. |
− | [[Изменения в версии 3.10.2|Предыдущая версия]] | + | [[Изменения в версии 3.10.2|Предыдущая версия]] [[Изменения в версии 3.11.0|Следующая версия]] |
Небольшие улучшения, исправление ошибок и повышение производительности. | Небольшие улучшения, исправление ошибок и повышение производительности. | ||
+ | |||
+ | Выложена [https://ejudge.ru/swagger/index.html документация на API]. | ||
=== [[ejudge-control]] === | === [[ejudge-control]] === | ||
Line 17: | Line 19: | ||
<code>ejudge-control start contest</code> запустит | <code>ejudge-control start contest</code> запустит | ||
только компонент [[ej-contests]]. | только компонент [[ej-contests]]. | ||
− | [ | + | [https://github.com/blackav/ejudge/pull/173 Pull Request #173] |
Добавлена опция <code>-nst</code>, которая отключает вывод трассы стека | Добавлена опция <code>-nst</code>, которая отключает вывод трассы стека | ||
Line 29: | Line 31: | ||
запроса на компиляцию или тестирование, таким образом выполняется | запроса на компиляцию или тестирование, таким образом выполняется | ||
на один обмен клиент-сервер меньше. | на один обмен клиент-сервер меньше. | ||
− | [ | + | [https://github.com/blackav/ejudge/issues/162 Issue #162] |
Исправлена ошибка, которую долгое время не удавалось найти. | Исправлена ошибка, которую долгое время не удавалось найти. | ||
− | [ | + | [https://github.com/blackav/ejudge/issues/155 Issue #155] |
=== [[ej-compile]] === | === [[ej-compile]] === | ||
Line 77: | Line 79: | ||
а ключа API - 2 часа. Сессии, которые не использовались долгое время, | а ключа API - 2 часа. Сессии, которые не использовались долгое время, | ||
периодически удаляются из кеша. | периодически удаляются из кеша. | ||
− | [ | + | [https://github.com/blackav/ejudge/pull/183 Pull Request #183] |
− | [ | + | [https://github.com/blackav/ejudge/pull/153 Pull Request #153] |
В интерфейсе администратора турнира добавлен пункт меню | В интерфейсе администратора турнира добавлен пункт меню | ||
Line 85: | Line 87: | ||
расположена кнопка "Clear session cache", которая принудительно | расположена кнопка "Clear session cache", которая принудительно | ||
очищает кеш сессий и ключей API. | очищает кеш сессий и ключей API. | ||
− | [ | + | [https://github.com/blackav/ejudge/pull/182 Pull Request #182] |
На странице очереди тестирования (Testing Queue) поддерживается | На странице очереди тестирования (Testing Queue) поддерживается | ||
Line 92: | Line 94: | ||
тестирования или компиляции должны быть соответствующим | тестирования или компиляции должны быть соответствующим | ||
образом сконфигурированы. | образом сконфигурированы. | ||
− | [ | + | [https://github.com/blackav/ejudge/pull/177 Pull Request #177] |
На странице очереди тестирования отображается информация | На странице очереди тестирования отображается информация | ||
об инстансах компиляции. | об инстансах компиляции. | ||
− | [ | + | [https://github.com/blackav/ejudge/pull/176 Pull Request #176] |
Для получения результатов компиляции от [[ej-compile]] в [[ej-contests]] | Для получения результатов компиляции от [[ej-compile]] в [[ej-contests]] | ||
Line 104: | Line 106: | ||
При большом количестве турниров, одновременно загруженных в память, | При большом количестве турниров, одновременно загруженных в память, | ||
это существенно экономит процессорное время. | это существенно экономит процессорное время. | ||
− | [ | + | [https://github.com/blackav/ejudge/pull/171 Pull Request #171] |
Для ожидания изменения состояния каталогов обмена используется | Для ожидания изменения состояния каталогов обмена используется | ||
Line 145: | Line 147: | ||
Добавлен новый глобальный конфигурационный параметр | Добавлен новый глобальный конфигурационный параметр | ||
− | <code>[[serve.cfg: | + | <code>[[serve.cfg:global:compile_server_id|compile_server_id]]</code>. |
Файлы external.xml, internal.xml не перегенерируются, если не было обновлений | Файлы external.xml, internal.xml не перегенерируются, если не было обновлений | ||
Line 151: | Line 153: | ||
Исправлена ошибка, из-за которой не работал параметр | Исправлена ошибка, из-за которой не работал параметр | ||
− | <code>autoupdate_standings = 0</code> (запрет автоматического | + | <code>[[serve.cfg:global:autoupdate_standings|autoupdate_standings]] = 0</code> (запрет автоматического |
обновления таблицы результатов). | обновления таблицы результатов). | ||
Line 195: | Line 197: | ||
Для просмотра и очистки сессий необходимо глобальное полномочие | Для просмотра и очистки сессий необходимо глобальное полномочие | ||
<code>EDIT_CONTEST</code>. | <code>EDIT_CONTEST</code>. | ||
− | [ | + | [https://github.com/blackav/ejudge/pull/184 Pull Request #184] |
Если у задачи не установлен параметр | Если у задачи не установлен параметр | ||
Line 213: | Line 215: | ||
В каталог <code>boot/openstack</code> добавлены скрипты, | В каталог <code>boot/openstack</code> добавлены скрипты, | ||
которые можно использовать на виртуальных машинах в openstack. | которые можно использовать на виртуальных машинах в openstack. | ||
− | [ | + | [https://github.com/blackav/ejudge/pull/181 Pull Request #181] |
В каталог исходных кодов скопирована библиотека run-time поддержки | В каталог исходных кодов скопирована библиотека run-time поддержки | ||
− | для flatbuf [ | + | для flatbuf [https://github.com/dvidelabs/flatcc flatcc]. |
В данный момент flatbuf используется для файлов статуса компиляции | В данный момент flatbuf используется для файлов статуса компиляции | ||
(compile heartbeat). Преимущество flatbuf над protobuf в том, | (compile heartbeat). Преимущество flatbuf над protobuf в том, | ||
что flatbuf не требует декодирования данных перед использованием, | что flatbuf не требует декодирования данных перед использованием, | ||
и можно работать с данными просто отображенными из файла в память. | и можно работать с данными просто отображенными из файла в память. | ||
− | [ | + | [https://github.com/blackav/ejudge/pull/174 Pull Request #174] |
Latest revision as of 05:33, 1 August 2023
Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 3.10.3
Время выхода: 21 мая 2023 г.
Предыдущая версия Следующая версия
Небольшие улучшения, исправление ошибок и повышение производительности.
Выложена документация на API.
Contents
ejudge-control
Добавлена опция -rc
, позволяющая задать скрипт,
который будет выполняться при запросе на перезагрузку инстанса.
Поддерживается покомпонентная остановка и запуск компонентов
ejudge. Например, ejudge-control stop contest
остановит только компонент ej-contests, а команда
ejudge-control start contest
запустит
только компонент ej-contests.
Pull Request #173
Добавлена опция -nst
, которая отключает вывод трассы стека
в логи у всех запускаемых компонентов. Каждый компонент так же
поддерживает эту опцию. Опция может быть полезна при отладке.
ej-agent
Протокол взаимодействия улучшен: пакет запроса на компиляцию и тестирование передается сразу же с нотификацией о наличии запроса на компиляцию или тестирование, таким образом выполняется на один обмен клиент-сервер меньше. Issue #162
Исправлена ошибка, которую долгое время не удавалось найти. Issue #155
ej-compile
Добавлена опция -hi
, которая позволяет задать
идентификатор инстанса для сохранения в файл статуса компиляции.
Добавлена опция -rc
, позволяющая задать скрипт,
который будет выполняться при запросе на перезагрузку инстанса.
Добавлена опция -hc
, позволяющая задать скрипт,
который будет выполняться при запросе на остановку (down) инстанса.
Добавлена опция -nhb
, отключающая периодическое
сохранения текущего состояния в каталог состояний (heartbeat).
Добавлена опция -hb
, включающая периодическое
сохранения текущего состояния в каталог состояний (heartbeat).
По умолчанию опция включена и так.
Для ожидания изменения состояния каталогов обмена используется
механизм inotify
вместо периодической проверки состояния.
Поддерживается язык Typescript (транслятор ts-node).
Переработана поддержка языка Java. Для определения имени класса, сданного на проверку, используется небольшая программа на Java JavaClassNameExtractor.java, соответствующий jar-файл называется java-classname.jar.
Для компиляции java поддерживаются две переменных окружения:
EJUDGE_MAIN_CLASS
позволяет задать имя главного
класса для компиляции java вместо автоматически определяемого.
Переменная окружения EJUDGE_CLASSPATH
позволяет
задать CLASSPATH для компиляции и выполнения кода.
ej-contests
Многочисленные оптимизации с целью повышения производительности.
Реализовано кеширование сессий и ключей API. В результате резко сокращается количество обращений к компоненту ej-users для получения информации о сессиях. Время жизни кеша сессии - 20 минут, а ключа API - 2 часа. Сессии, которые не использовались долгое время, периодически удаляются из кеша. Pull Request #183 Pull Request #153
В интерфейсе администратора турнира добавлен пункт меню "View -> Server Info". На это странице выводится различная статистика работы сервера. Кроме того, на это странице расположена кнопка "Clear session cache", которая принудительно очищает кеш сессий и ключей API. Pull Request #182
На странице очереди тестирования (Testing Queue) поддерживается
возможность перезагрузки инвокера тестирования или компиляции.
Она доступна по ссылке [R]
столбца Ops. Инвокеры
тестирования или компиляции должны быть соответствующим
образом сконфигурированы.
Pull Request #177
На странице очереди тестирования отображается информация об инстансах компиляции. Pull Request #176
Для получения результатов компиляции от ej-compile в ej-contests используется единый каталог обмена. До этого у каждого турнира был свой каталог обмена. Аналогично, для получения результатов тестирования от ej-super-run в ej-contests используется единый каталог обмена. При большом количестве турниров, одновременно загруженных в память, это существенно экономит процессорное время. Pull Request #171
Для ожидания изменения состояния каталогов обмена используется
механизм inotify
вместо периодической проверки состояния.
Добавлен новый конфигурационный параметр задачи
checker_extra_files
.
Добавлен новый конфигурационный параметр задачи
copy_exe_to_tgzdir
.
Добавлен новый конфигурационный параметр задачи
extra_src_dir
.
В таблицу посылок добавлено поле last_change_us
,
которое хранит время последнего изменения записи о посылки
с микросекундной точностью. Это время обновляется, например,
при завершении тестирования, или при отправке на перетестирование,
то есть при каждом изменении в соответствующую запись в базе данных.
В списке посылок в административном интерфейсе можно выбрать для просмотра столбец "Last Change Time".
В информацию о посылках, возвращаемую по запросу
list-runs-json
, добавлены поля
last_change_id
и serial_id
.
В фильтре посылок доступно выражение last_change_us
,
которое возвращает 64-битное целое значение - время
последнего изменения записи о посылке в виде количества микросекунд,
прошедшего от 1970-01-01.
В фильтре посылок доступно выражение unow
,
которое возвращает текущее время в виде 64-битного числа:
количества микросекунд, прошедшего от 1970-01-01.
В некоторых случаях (но не всегда) при json-запросе на сервер в ответе используются статусы http, например, 503, если подключение к серверу невозможно.
Добавлен новый глобальный конфигурационный параметр
compile_server_id
.
Файлы external.xml, internal.xml не перегенерируются, если не было обновлений в таблице посылок.
Исправлена ошибка, из-за которой не работал параметр
autoupdate_standings = 0
(запрет автоматического
обновления таблицы результатов).
Поддерживается атрибут disable_autoupdate_standings
глобального
конфигурационного файла ejudge.xml. Если он установлен в true
,
во всех турнирах по умолчанию запрещено автоматическое обновление таблицы
результатов.
ej-page-gen
В Си-коде для .csp-страниц используется fwrite_unlocked
вместо fwrite
. Почему-то это привело к резкому увеличению
времени компиляции сгенерированного Си-кода.
ej-polygon
В запросах к серверу Polygon не устанавливается заголовок
Accept-Encoding:
. Ответ сервера в этом случае,
по всей видимости, не поддерживается библиотекой curl.
ej-suid-container
Улучшена поддержка ruby.
ej-super-run
Добавлена опция -rc
, позволяющая задать скрипт,
который будет выполняться при запросе на перезагрузку инстанса.
Для ожидания изменения состояния каталогов обмена используется
механизм inotify
вместо периодической проверки состояния.
Атрибут tests_passed
добавляется в отчет о
тестировании во всех типах турниров.
ej-super-server
На главную страницу со списком всех турниров добавлена кнопка
"View Editing Sessions". На странице просмотра сессий редактирования
можно посмотреть все сессии, в которых открыты на редактирование
турниры или тесты и при необходимости очистить эти сессии.
Таким образом решается проблема "залипших" сессий редактирования.
Для просмотра и очистки сессий необходимо глобальное полномочие
EDIT_CONTEST
.
Pull Request #184
Если у задачи не установлен параметр
enable_testlib_mode
,
то проверяющие программы на java не требуют библиотеки testlib for java,
а предполагаются автономными.
Поддерживаются проверяющие программы на golang.
.inf-файлы
Добавлен параметр check_cmd
. Он позволяет задать
проверяющую программу для данного теста.
Прочее
В каталог boot/openstack
добавлены скрипты,
которые можно использовать на виртуальных машинах в openstack.
Pull Request #181
В каталог исходных кодов скопирована библиотека run-time поддержки для flatbuf flatcc. В данный момент flatbuf используется для файлов статуса компиляции (compile heartbeat). Преимущество flatbuf над protobuf в том, что flatbuf не требует декодирования данных перед использованием, и можно работать с данными просто отображенными из файла в память. Pull Request #174