6.4.2.12 IntegrationGapOccurrence
6.4.2.12.1 Purpose¶
One meeting of an integration gap by one farm, through a failed sync run or a failed parse job. The first occurrence of each farm carries a sample: the part of the input that was not understood, stored as a raw file of the feed. Later occurrences of the same farm carry none, so storage grows with the number of farms, not with retries. Samples are customer data: they follow the feed's retention and erasure, and only staff allowed to read gaps can open them.
6.4.2.12.2 Questions it answers¶
- Which farms met this gap, and when?
- Which run or job failed on it?
- Where is the sample of the input, and who may read it?
6.4.2.12.3 Fields¶
| Field | Type | Cardinality | Description |
|---|---|---|---|
id |
string (uuid) |
1..1 |
Key. |
gap |
IntegrationGap | 1..1 |
|
farm |
Farm | 1..1 |
|
source_feed |
SourceFeed | 0..1 |
|
sync_run |
SyncRun | 0..1 |
For side = client: the run that failed with unsupported_source. |
parse_job |
ParseJob | 0..1 |
For side = parser: the job that failed with unsupported_version or invalid_file. Exactly one of sync_run and parse_job. |
sample |
RawMetadata | 0..1 |
The input that was not understood, uploaded as a raw file of the feed: the part the client could read (a table export, the first pages of an answer) or the raw file itself. At most one sample per (gap, farm); later occurrences of the same farm carry none, so storage grows with farms, not with retries. |
seen_at |
datetime |
1..1 |
|
created_at |
datetime |
1..1 |
6.4.2.12.4 Relationships¶
References
IntegrationGapOccurrence.gap→ IntegrationGap (1..1)IntegrationGapOccurrence.farm→ Farm (1..1)IntegrationGapOccurrence.source_feed→ SourceFeed (0..1)IntegrationGapOccurrence.sync_run→ SyncRun (0..1)IntegrationGapOccurrence.parse_job→ ParseJob (0..1)IntegrationGapOccurrence.sample→ RawMetadata (0..1)
6.4.2.12.5 Rules & constraints¶
- One meeting of a gap by one farm.
(gap, sync_run)is unique and(gap, parse_job)is unique: a repeated delivery of the same run or job adds nothing.- Samples are customer data: they stay in the raw bucket of the feed, follow its retention and erasure (ErasureRequest), and are read only by staff with
farm.integration_gaps.read. Collecting them must be allowed by the Organization's terms (to confirm with the legal adviser, as for erasure).