Code Monkey home page Code Monkey logo

backend's Introduction

backend's People

Contributors

joemmanuel avatar lhchavez avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

juniocarl edhzsz

backend's Issues

Support Ruby

Turns out I only checked that puts "Hello, World!" worked under Minijail, but I never actually added all the magic incantations needed to compile or run ruby programs in Sandbox.scala.

Make some libinteractive errors RTE

At the very least the places where a reply was expected and the other side died should all be RTE. Things like crashing or calling exit() will trigger this.

Run the grader and the Broadcaster as separate services

While it is convenient to have them both run in the same service, forcing a restart on the Broadcaster every time an update to the grader is made is inefficient, since all long-lasting websockets connections die and need to be brought back up. This can be solved by deploying both as independent services (and probably even forego the need for running proguard and storing the .jars in the repository!).

Fix the serialization for libinteractive objects

It turns out that neither the IDL AST nor the Options objects are serializable as-is by Lift (curse you, type erasure!!!). It's going to be much simpler if we just ship the whole .idl and have the runner parse it instead of having to support JSON serialkzation/deserialization for those objects.

Use Netty instead of Jetty

This is probably also in preparation for a revamped architecture that uses GRPC (and might even mean pull runners!).

Mark certain syscalls as RTE

C++, when calling abort(), invokes futex, tgkill and kill, all of them restricted syscalls. These syscalls can be marked as generating RTE to avoid confusion about RFE.

Better deployment strategy

When bringing an old instance of a runner online, it will most likely have old versions of the code, and therefore will probably cause JEs until it is upgraded. A better deployment strategy (most likely using Puppet) is needed to ensure the runners are up to date before starting.

Decouple from frontend

The goal is to have a fully self-contained backend. This means that it should be possible to install problems, send and view results of runs by using a REST API.

minijail_syscall_filter is too slow

Since it is racy and has a 1s timeout, programs with a lot of cases have near-100% probability of exceeding the 60s maximum execution time.

Create runner pools

Sometimes it is desirable to allocate a pool of runners to run only a handful of problems or handle a contest exclusively. Currently we can only assign runs to one of the six default queues, but it could be possible to create more queues connected to runner pools.

Support having problems in a git repository

Having git as the problem store is desirable since we can easily perform versioning and have a little bit more integrity checks. Plus, having the inputs pre-zlibbed and hashed makes it easier to send the inputs without having to store a clunky .zip file + hash.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.