Skip to main content

Known Issues Details

The notes below apply to Ed-Fi API Publisher 1.4. They are grouped by the API in use as source or target: the Ed-Fi ODS/API, Ed-Fi API v8, or both.

Ed-Fi ODS/API​

Sources Without a Configured Snapshot​

For an Ed-Fi ODS/API version 7 or later source, the publisher reads from a snapshot so that the data it walks cannot change mid-run. The Ed-Fi ODS/API does not configure a snapshot by default. Without one, every source request fails with 404 Snapshot not found. and nothing is published.

This applies to the source of a run, not the target.

There are two ways to publish from such a source:

  • Configure a snapshot on the source. The run then reads from a frozen copy, so the data it reads cannot change while it is being walked.
  • Set --ignoreIsolation=true. The run reads live data instead. This is simpler, but changes made at the source during the run may not be captured consistently.

Setting the option while a snapshot is configured still reads live data, which is rarely what is intended.

Ed-Fi API v8​

Snapshots on an Ed-Fi API v8.0 Source​

Ed-Fi API v8.0 does not support snapshots. It ignores the request for one and serves live data, so a run from an Ed-Fi API v8.0 source succeeds with or without --ignoreIsolation, but always reads data that can change while it is being walked. Publish from it when the source is not being written to, or rely on the next incremental run to pick up changes made during the run. Support for snapshots is planned for Ed-Fi API v8.1.

Paging on an Ed-Fi API v8.0 Source​

Ed-Fi API v8.0 does not support cursor paging, so a run from an Ed-Fi API v8.0 source always uses offset paging. The log shows a WARN line for each resource ("Request to Source API for the /partitions child resource was unsuccessful"); this is expected and needs no action. Support for cursor paging is planned for Ed-Fi API v8.1.

Rate Limit on an Ed-Fi API v8.0 Target​

By default, Ed-Fi API v8.0 accepts 5000 requests per 10 seconds and answers the requests above that with 429 Too Many Requests. The publisher does not retry a write rejected this way: the run reports the failed documents and exits with a non-zero code, but the target is left incomplete. To stay under the limit, turn on the publisher's own rate limiting, for example --enableRateLimit=true --rateLimitNumberExecutions=200 --rateLimitTimeSeconds=1 (or the same options in apiPublisherSettings.json), or raise RateLimit:PermitLimit on the Ed-Fi API.

Descriptors With Trailing Spaces on an Ed-Fi API v8 Source (Data Standard 5.x)​

Three default tribal affiliation descriptors in Data Standard 5.x end with a space ("Little Shell Tribe ", "Pechanga Band of Indians ", "Yuhaaviatam of San Manuel Nation "). The Ed-Fi ODS/API keeps the space; Ed-Fi API v8 removes it. Publishing from Ed-Fi API v8 into an ODS/API therefore creates a second descriptor next to each of the three, and records that reference them point to the new one. Data Standard 6.1 is not affected.

All APIs​

Extensions Present Only on the Target​

By default the publisher builds its list of resources from the target. If the target has an extension the source does not (for example TPDM), reading those resources from the source fails and the run ends with an error. Exclude the extension's resources with --exclude.

Writes That Time Out on Every Retry​

If the target does not respond to a write within the HTTP timeout on every retry, the publisher drops that document without reporting it as failed, and a run with no other errors exits with code 0. A target that refuses or resets the connection is reported correctly. The run does not advance its last change version and logs "This run did not finish without losing documents", so a later incremental run republishes the affected changes. After a one-time full publish, check the run summary: a resource whose Published count is lower than its Attempted count lost documents. Reducing parallelism lowers the load on a target that is close to its limits.