...
- event a1 at t → Forwarded and saved in the store
- event a2 at t+8s → Not forwarded, we don't update the store
- event a3 at t+11s → This is a duplicate of a2 (i.e. within the deduplicationInterval) which has not been forwarded, we will forward it as if there was never an event a2
Similarly, for out-of-order records
- event a1 at t → Forwarded and saved in the store
- event a2 at t-8s → Not forwarded, we don't update the store
- event a3 at t-11s → Forwarded (see section Late events)
Deduplication interval boundaries
...
- Drop late records
- Advantage: The late record may be a duplicate of a previously forwarded purged record, in this case we won't forward it twice
- Drawback: The record could be a non-duplicate, in this case we should have forwarded it
- Forward late records *if no duplicate found in the store*
- Advantage: Non-duplicate records are forwarded
- Drawback: The record may be a duplicate of a previously forwarded purged record.
...
- event k1 @t=10s → Forwarded
- event k2 @t=20s → Forwarded
- event k1 @t=9s → Dropped (late event, but its duplicate @t=10s still exist in the store)
...