Judge0 Extra v1.12.0
v1.12.0-extra (2020-10-18)
New Features
- Added support for invalidating statistics cache using the
invalidate_cachequery parameter.- Commits: @561c2a30
- Added rake task
judge0:run_in_queueto manually run submissions that might have stuck in theIn Queuestate.- Commits: @c3b87d23
- Added support for specifying
CALLBACKS_MAX_TRIESandCALLBACKS_TIMEOUT. This is a global configuration that applies to all submissions that have defined webhooks (HTTP callbacks).- Commits: @c4bb76ec
- Added support for submission caching to reduce the number of unnecessary database hits. Cache duration can be controlled with the
SUBMISSION_CACHE_DURATIONvariable which is currently set to 1 second by default. Submissions are only cached forGET /submissions/<token>route. Cache files are written to the server's file system and are automatically cleared every day at midnight. This is the first step toward more serious submission caching in the future.
Improvements
- Update PostgreSQL to 13.0 and Redis to 6.0.
- Reschedule failed jobs after 0.1 seconds with 100 attempts.
- Send only submission ID to the worker and not the whole serialized submission.
- Automatically restart Judge0 server without the need for Docker restart policies. Use the
RESTART_MAX_TRIESvariable to specify the maximum number of restart tries.
Bug Fixes
- Fixed a bug in the
is_projectmethod of submission model where an exception was raised and not handled properly due to unknown language.- Commits: @6426ac61
Other Changes
- Use Docker volumes for storing Postgres and Redis data instead of mounting directories. This is now the new recommended setting.
- Commits: @600f5aaa
- Added Resque Web to the development stack.
- Commits: @3762a635
- Changed binding ports for Nginx and documentation server in the development stack. Nginx is now bound to port 80, and the development server to port 3001.
- Commits: @3762a635
- Removed port bindings of Postgres and Redis in the development stack.
- Commits: @3762a635
- Added PgBouncer to the development stack for testing and experimenting.
- Commits: @24b3227a
- Changed recommended values for
POSTGRES_DBandPOSTGRES_USER. Both are nowjudge0.- Commits: @745f4455
Deployment Procedure
Judge0 is collecting telemetry data to help understand how to improve the product and to better understand how Judge0 is used in various production environments. Read more about telemetry here.
Please note that Judge0 has only been tested on Linux and macOS, and might not work on Windows, thus we do not provide support for it.
With HTTP
- Install Docker and Docker Compose.
- Download and extract release archive:
wget https://github.com/judge0/judge0/releases/download/v1.12.0-extra/judge0-v1.12.0-extra.zip
unzip judge0-v1.12.0-extra.zip
- Run all services and wait a few seconds until everything is initialized:
cd judge0-v1.12.0-extra
docker-compose up -d db redis
sleep 10s
docker-compose up -d
sleep 5s
- Your instance of Judge0 v1.12.0-extra is now available at
http://<IP ADDRESS OF YOUR SERVER>.
With HTTPS (SSL/TLS)
- Install Docker and Docker Compose.
- Download and extract release archive:
wget https://github.com/judge0/judge0/releases/download/v1.12.0-extra/judge0-v1.12.0-extra-https.zip
unzip judge0-v1.12.0-extra-https.zip
- Change directory to
judge0-v1.12.0-extra-https:
cd judge0-v1.12.0-extra-https
- Edit
docker-compose.ymland change variablesVIRTUAL_HOST,LETSENCRYPT_HOSTandLETSENCRYPT_EMAIL. - Run all services and wait a few seconds until everything is initialized:
docker-compose up -d db redis
sleep 10s
docker-compose up -d
sleep 5s
- Your instance of Judge0 v1.12.0-extra is now available at
https://<YOUR DOMAIN>.