Skip to content

Source FB Marketing: improve insights jobs reliability & runtime #8282

Closed
@sherifnada

Description

@sherifnada

Tell us about the problem you're trying to solve

Placeholder for https://github.com/airbytehq/oncall/issues/32 and https://github.com/airbytehq/oncall/issues/31

The *_insights streams for FB provide a suboptimal user experience for a few reasons:

  1. They sometimes take a very long time to finish.
  2. If a job takes "too long" to finish (something like 3 hours as defined by the connector code) we assume it will not succeed and we fail the job/sync.
  3. It is unpredictable before creating a job whether it will succeed or fail. Holding the tuning parameters constant doesn't seem to be the answer as it seems different accounts work with different params depending on the data they have.

Right now, our approach for tuning jobs is: come up with a tuning configuration / selection of columns and cross our fingers that it will work. If it does, we call it case closed (but don't necessarily learn why it failed previously). If it fails or takes too long, there is no clear answer as to what went wrong. It seems really wrong that we're having these issues with one of the biggest ad platforms in the world. We really need to rethink how we're interacting with the FB API.

Some questions:

  1. Is there any way we can predict if jobs will fail / take too long?
  2. We currently assume that if a job takes too long, it is stuck and will fail. Is this a correct assumption? Is the right reaction to fail the job? Or should we just wait until it succeeds because that's the best we can do?
  3. If we notice certain jobs failing, is there anything we can do dynamically inside the connector to make them succeed? Maybe submit them with different parameters? maybe submit multiple jobs which each collect a subset of the fields, then merge them into one?
  4. Are there any other API users whose experience we can learn from? we must be reinventing the wheel here. Do the FB developer forums, stack overflow, or the internet contain any useful examples of how we can solve this problem?

A fantastic outcome of this investigation would be:

  1. We find a way to deterministically make jobs from FB Marketing succeed, no matter the
  2. After 1 is achieved, we find a way to make these jobs a lot faster. You have full creative freedom over how we can do this. Throw the whole CDK away and start over with assembly code if need be. (ok, maybe not assembly code :) )

Basically: make it work, then make it fast.

The linked issues at the beginning of the ticket contain more information about the Airbyte users facing this problem and where to find their instances.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions