FD1 Client Protocol

FD1 Request Debug Options

The request debug options allow you to request the inclusion of additional server side processing. It is designed to assist developers and support staff by returning trace messages and other debug level information. Not all endpoints provide RD support.

Servers may impose restrictions on these options, as potentially they provide addtional clues about the operating environment

If your apikey is marked "developer mode" by the administrator, some RD options may be automatically enabled

Details generated are included in the response packet, under "debug_rd" object

Time

The time field turns on request timing as the request is processed. Values returned are in seconds, reported as milliseconds with a granularity of around 20mS. These are not high precision timers

  • total The total time from request received until the response is generated. Does not include any network delay as this is outside what we can realistically measure.
  • dispatch Delay until request was selected for processing. A large interval here suggests other tasks are blocking the execution engines.
  • queryopen Delay attributable to the storage layer opening and fetching the data
  • queryrowbuild Time spent building the output row objects. This value is somewhat vague as we are measuring and adding very small amounts

Example

Request

{
    a: "fd1.debug.ping",
    rd: {
        time: true
    }
}
Response

{
    r: "fd1.debug.ping",
    data: { ... },
    debug_rd: {
        time: {
            dispatch: 0,
            total: 0.002
        }
    }
}

Production Ready

This section outlines how ready this request is for production use. It looks at several criteria such as correctly structured requests and performance. Of course you are free to push whatever into production, but don't expect sympathy from support staff.

  • yes Passes technical checks
  • no Has issues that should be addressed
  • partial Has some issues, but how serious they are is debatable.

Example

Request

{
    a: "fd1.debug.ping",
    rd: {
        production_ready: true
    },
    bad: 123
}
Response

{
    r: "fd1.debug.ping",
    data: { ... },
    debug_rd: {
         "production_ready": {
            "ready": "partial",
            "failcount": 0,
            "warncount": 1
        }
    }
}