Release 7.0 - 230710.7.0

This release introduces a major new feature to Skylark - background task processing.

To allow the ingestion of large amounts of data with many relationships and availability rules, processing the majority of that data will now be handled asynchronously in a queue. This will make the response times for creates and updates faster, allowing for easier and much more consistent ingest processing.

This release also includes renames for some Skylark objects and some fixes, tweaks and improvements.

Features

Background Task Processing

The first Skylark functions to have background task processing enabled are:

createObject
updateObject

This means that every time an object is created or updated, any processing of availability, translation or (in the case of media files such as images) downloading is sent to a queue and handled asynchronously.

What does this mean for you? The response times from those queries will be much faster and consistent, but it also means the effects of availability won't be immediate as it was before. Instead you'll be able to track the processing using new queries via the Skylark API.

Responses from creates or update mutations now have a task_id which can be found in the _context object.

mutation {
  createEpisode(episode: {
    title: "My episode"
  }) {
    _context {
      task_id
    }
  }
}

This task_id can be used to get the status of processing status of the object you created/updated.

{
  "data": {
    "getSkylarkBackgroundTask": {
      "status": "COMPLETE",
      "messages": [
        "Job started",
        "Starting availability post-processing",
        "Availability post-processing complete"
      ],
      "created_at": "2023-07-10T11:16:59.481278+00:00",
      "updated_at": "2023-07-10T11:17:04.917490+00:00"
    }
  }
}

Or you can view a list of tasks and filter by the task status:

{
	listSkylarkBackgroundTask(status: QUEUED) {
    objects {
      task_id
      messages
      object_uid
    }
  }
}

Improvements

Skylark object rename

We've renamed two our of built in Skylark objects to make it clearer what their intended purpose is.

  • SkylarkChannel has become SkylarkLiveStream
  • SkylarkEPGProgramme has become SkylarkEPGProgram

Timezones while time travelling

It's now possible to pass a timezone other than UTC while using the x-time-travel header using the ISO8601 datetime format.

For example:

  • Time travel with -5 (US Eastern) timezone: x-time-travel: 2030-01-01T00:00:00-05:00
  • Time travel with +1 (Central European) timezone: x-time-travel: 2030-01-01T00:00:00+01:00