Query execution¶
From a C# client, the Refinery API queries the GW via the QR entrypoint and returns the results from the GW via the QP.
For normal operation the workflow is: * C# client will start a service on primary control * C# Qry --> QR.a --> GW.0 or GW.1 --> HDB.0/RBD.0 --> QP.a --> C# client * Each of these instances are primary host (so a-side and instance.0)
In the case of failover, each primary process will failover to the secondary processes (i.e. b-side and instance.1). For example, if we lost primary QR, GW and HDB, the query path will be: * C# client will start a service on primary control * C# Qry --> QR.b --> GW.1 --> HDB.1/RBD.0 --> QP.a --> C# client
Queries are only served by HDBs/RBDs determined as primary. Secondary process are only queried on failover; thus duplicates are never returned.