Skip to content

Multiple Judge Server Support #11

@leasunhy

Description

@leasunhy

Currently galaxyoj takes advantage of redis and rq to implement a message queue, with which the judge requests are sent to multiple judge workers.

However, since the judge program uses source files to compile the submitted program, one obstacle preventing the oj to scale is the file location problem, i.e. how do multiple workers on different servers access the source files? Where are the source files stored?

IMHO, several solutions exist:

  • Employ a static source file server. All reads from and writes to the source files are routed to this server for proper operation.
  • Use file sharing via NFS or something. This should be the most straightforward method, since it does not require any code modification. But it may limit the oj to be deployed on specific platforms.
  • Include the whole source code in the messages to be sent to the workers. The workers can then save the code into a temporary file for compiling. Whether the code is stored in the database or in local files is not important.

I'm considering seperating the judge program from the main repository. Instead, we give a specification of the judge program and make it an open choice on which judge program to be used with the OJ, so that we can separate the concerns and simplify our development.

Finally, I suggest that we take such a requirement into consideration, but just leave it alone while we are implementing the basic functionalities so as to avoid premature design. When other things are settled down, we can then hack on this one :-)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions