Skip to content

Major Release: ReCodEx 2.0

Martin Kruliš edited this page Oct 3, 2021 · 8 revisions

Major version change denotes a larger leap forward and marks a milestone in development. However, we are not strictly bound with semantic versioning here. Furthermore, the development does not stop here, we still have long road ahead...

Administrator's Guide To Migration

  • Do not forget to perform database migration after recodex-core update.
/opt/recodex-core/bin/console migrations:migrate
  • Core module has now service that handles async operations. On Linux, you might want to add async > inotify option (and set it to true) in core module configuration (otherwise the worker uses only polling, which has higher latency). See config.local.neon.example for details. The service just needs to be started (works even if you make no changes to configuration):
$> systemctl enable recodex-core.service
$> systemctl start recodex-core.service
  • Add async jobs upkeep maintenance to cron. The upkeep deletes old jobs from the database and makes sure no jobs linger too long (in case the async worker crushes or gets overwhelmed with jobs). If the async worker gets stuck, an email is sent to ReCodEx admin. Recommended upkeep period is 30 minutes, so you need to add the following line into /etc/crontab (adjust the paths/user if need be):
*/30 * * * *    recodex    /opt/recodex-core/bin/console asyncJobs:upkeep
  • In the web app configuration file env.json, the "SKIN" value needs to be updated according to readme. The skin- prefix should be removed (e.g., skin-green needs to be replaced with green).

Features

  • Completely new look caused by migration to Bootstrap 4 and AdminLTE 3.
  • Unified page navigation, group selection moved to the top panel, home page redesigned, dashboard simplified, and many more improvements in UI controls were realized.
  • Implementing asynchronous operations (jobs) executed in background worker. Resubmit-all operation was changed to asynchronous job.
  • File uploads are now managed by client and performed in small chunks, so they will not timeout even in case of large files and slow network connection.
  • Linear interpolation of assignment maximal points between two deadlines was added along with appropriate visualization in web app.
  • Group membership relation refactored and unified (both in core module and in group info page), new membership type "observer" added.
  • A separate page that displays solutions of one student from all assignments in a group added.
  • Files table in solution detail page redesigned. Furthermore, solutions where a single ZIP archive was submitted were optimized (in storage) and direct access to individual compressed entries (for download and preview) is now possible (preparation for more complex solutions like Maven projects).
  • Interpreted languages now duly visualize entry point (main execution script) of solutions.
  • Significant refactoring, performance optimizations, and updates of dependencies.