ROAD Service and Database
ROAD uses the no-SQL database MongoDB. All ROAD Service installations inside a ROAD cluster share a common database instance. No other ROAD process accesses the database; the only other components accessing it are the ROAD setup, some scripts and general MongoDB maintenance tools.
As a professional database management system MongoDB provides lots of different tools and installation architectures like replica sets to have several redundant database instances being replicated and providing failover support.
ROAD doesn’t care for those database management internals. It is directed to use an instance by its configured database connection string.
When and How Does the ROAD Service Access the Database?
When a ROAD Service instance is starting (usually as a Windows service when Windows starts), it tries to connect the database by the configured connection string, which mainly contains the URI of the MongoDB service (and some optional stuff like URIs to other MongoDB services). In case this connection fails, the ROAD Service will continue running in a restricted mode. The same occurs if a database disconnect is detected later.
After the first successful connection to the database, the ROAD Service reads the list of all other ROAD hosts in this cluster and updates its own host info there. Then the schedule runner starts for the first time (and repeats with a cycle of 10 minutes by default). Now the ROAD Service is fully available for all clients requests.
Disconnected Mode
If the ROAD Service was already connected since it’s running, it allows manipulations on active jobs on its own host. The ROAD Service maintains a local cache for active jobs, which allows basic queries and will be written back when the connection is reestablished (but will be lost in case the Service is shutdown before).
Most other client requests will run into errors because the database must be connected to do a query.
If the ROAD Service was not yet connected and couldn’t initialize basic information, it will retry in a cycle (default 1 minute), but cannot run any job.
Losing Connection
A break of the connection to the database is either detected in a cycle or when a database request fails (with some timeout delay). The Service is only partially accessible then until the connection is reestablished.