Controlling the order of events
- Topics:
- Media Analytics
CREATED FOR:
- User
- Admin
- Developer
Streaming video tracking is a highly time-dependent operation and occasionally the Media Collection API tracking calls arrive at the back end out-of-order. In this situation, the back end attempts to queue up and reorder events based on the provided timestamp in the playerTime
object. This occurs with some limits. Currently, the reorder may fail if the delays between out-of-order calls are more than one second. In future updates, the ‘acceptable delay time’ may be optimized and configurable.
Out-of-order event example
Out-of-order events occur when events pass through the network which sometimes causes a delay.
For example, you could send an adBreakStart
event followed by an adStart
event. This is a common use case, because it’s required for an ad to start inside an ad break.
If the ad is ready and no buffer is necessary, both events occur almost instantly and the playerTime.ts
for both events are very close to each other—but they should never be equal.
“playerTime.ts” of events should never be equal for any event, since the sorting algorithm wouldn’t know what event happened first. There should be at least 1 millisecond timestamp difference for every 2 consecutive events.
Because both events occur very close to each other in time when firing network calls, it’s possible that they arrive out of order. In this example, the adStart
event arrives before the adBreakStart
event.
There is a timed window of events: 5 seconds or a maximum of 10 events. The events are buffered before sending them to the processing pipeline. When the conditions are met—5 seconds have passed or more than 10 events are received, the events are reordered based on the playerTime.ts
and then sent in the new order, to the processing pipeline.
sessionStart
event.Analytics
- Streaming Media Collection Guide
- Release Notes
- Get started
- Implementation
- Implementation overview
- Edge implementations (recommended)
- Adobe Analytics-only implementations
- Prerequisites
- Media SDKs / Extension
- Media Collection APIs - Implementation
- Media Collection
- API Quick Start
- Sessions Request
- Events Request
- Request Parameters
- Event Types and Descriptions
- Implementing the API
- Setting the HTTP Request Type in Your Player
- Obtaining a Session ID
- Implementing an Events Request
- JSON Validation Schemas
- Validating Event Requests
- Sending Ping Events
- Sending QoE Data
- Custom Metadata Support
- Timeout Conditions
- Controlling the Order of Events
- Queueing Events When Sessions Response is Slow
- Variables
- Reporting
- Use Cases
- Tracking
- Privacy and Security
- Legacy Implementations
- Legacy - Overview
- Legacy — Download SDKs
- Legacy - Media SDKs
- About Heartbeat Measurement
- Adobe Primetime
- Adobe Audience Management Enablement
- Custom Link Implementation
- Legacy Milestone Tracking
- Validation
- Legacy Migration: VHL 1.x to VHL 2.x
- Code Comparison v1.x to v2.x
- Tracking APIs 1x to 2x
- Legacy - Intro to AVA
- Client Side Path
- Legacy Tracking
- Track Core Playback on Android
- Track Core Playback on iOS
- Track Core Playback on JavaScript
- Track Core Playback on JavaScript 2.x
- Track Buffering on Android
- Track Buffering on iOS
- Track Buffering on JavaScript
- Track Seeking on Android
- Track Seeking on iOS
- Track Seeking on JavaScript
- Implement standard metadata on Android
- Implement standard metadata on iOS
- iOS Metadata Keys
- Implement Standard Metadata on JavaScript
- Track Ads
- Track Chapters and Segments
- Track Errors
- Tracking Scenarios
- VOD playback with no ads
- VOD playback with pre-roll ads
- VOD playback with skipped ads
- VOD playback with one chapter
- VOD playback with a skipped chapter
- VOD playback with seeking in the main content
- VOD playback with buffering
- VOD multiple trackers in parallel
- VOD one tracker for multiple sessions
- Live main content
- Live main content with sequential tracking