Multi site Support - pc2ccs/pc2v9 GitHub Wiki

PC2v9 supports the ability to run a single contest with multiple servers, each at a different site. This is called multi-site operation.

Note that the term site refers to a logical grouping of team/judge/admin clients. These clients may or may not be located at the same physical location; the key is that they all connect to their own individual PC2v9 Server. In a multi-site contest, there are multiple PC2v9 Servers running simultaneously; each of the clients in a given logical group connects to exactly one of the PC2v9 Servers. The Servers then communicate with each other to update themselves on the overall state of the contest.

The difference between a multi-site contest (several PC2v9 Servers) and a single-site contest where clients all connect to the same PC2v9 Server) is based on the fact that each client is dependent on a reliable network connection to its Server. If there are multiple Servers, with clients connecting to the closest Server, then if the network connection between Servers is lost, all clients can continue with the contest (assuming they can still connect to their own Server). Once the Server-to-Server connection is restored, the system will automatically update all site Servers about what happened during the "network down time".

Multi-Site support, then, is support for reconnecting Servers with the other Servers.

Detecting a disconnected server

Each server that is connected to another server has an entry in the Server's Logins tab grid. If a server does not appear in this list then that server is disconnected.

Manual Disconnection

  • Use Login Tab
  • Select the server site
  • Click Logoff

Manual Reconnect

Server Already Started Reconnect

If the server to reconnect is running, use these steps:

  • Site Tab
  • Select Site
  • Click Reconnect button

Server Restart Reconnect

Stopping and restarting a server will automatically reconnect to the other sites.

Essentially this is the same as the initial login with the addition of syncing runs and clars. A login already automatically retransmits settings.

Additional Notes

Disconnection notes

The method in the controller that handles when a connection is logged off (disconnected) is:

 InternalController.connectionDropped()

This handles both server and client disconnections/logoffs.

In that method a LoginEvent with action of LoginEvent.Action.LOGOFF is triggered on all servers and admins.

For a client, for example a Judge, all checked out runs and clars are un-checked out for obvious reasons.

⚠️ **GitHub.com Fallback** ⚠️