Skip to main content

Automating supplementary robolog association

Note: The following features are only available to organizations which have opted in to them. Please contact us to request opt-in.

Definitions

Parent robolog:      A robolog that has one or more child robologs associated with it.
Child robolog: A robolog that has a parent robolog associated with it.

How to trigger automatic association

Your robolog's file naming convention must adhere to the following rules for automatic association to work:

Child robologs should be placed in their bucket or file system in such a way that the filepath of the parent robolog, excluding its file extension, is the prefix of the child robolog's filepath.

Examples

Here are some examples to help explain what will or will not cause a robolog to be considered a child robolog:

Example 1: the supplement robolog is located in a directory below the parent robolog

/ (storage root)
├── parent.bag
├── parent
│   └── supplement.json
└── child
   └── supplement.json

Explanation: The path of the parent robolog is /parent.bag. The file located at /parent/supplement.json is considered a child robolog and will be automatically associated because the path of the child robolog begins with /parent. The file located at /child/supplement.json is NOT considered a child robolog and will NOT be automatically associated because its path does not begin with /parent.


Example 2: the parent robolog and supplement robolog are located in the same directory

/ (storage root)
├── parent.bag
├── extra-supplement.json
└── parent-supplement.json

Explanation: The path of the parent robolog is /parent.bag. The file located at /parent-supplement.json is considered a child robolog and will be automatically associated because the path of the child robolog begins with /parent. The file located at /extra-supplement.json is NOT considered a child robolog and will NOT be automatically associated because its path does not begin with /parent.


Example 3: the parent robolog is multiple levels above the child robolog

/ (storage root)
├── parent
│   └── additional-subdirectory
│      └── supplement.bag
└──parent.bag

Explanation: The path of the parent robolog is /parent.bag. The file located at /parent/additional-subdirectory/supplement.bag is considered a child robolog and will be automatically associated because the path of the child robolog begins with /parent.


Example 4: ambiguity caused by multiple levels of supplement robolog

Notice! Using a file structure which contains multiple levels of nested subdirectories and files will add complexity when this feature is enabled. It is possible to create a scenario where supplementary robologs are associated with an unintended parent robolog due to incomplete information while ingesting a batch of robologs. In the following example, the supplementary association between robologs is ambiguous and will be determined based on the order in which the files are ingested.

/ (storage root)
├── parent
│   ├── supplement
│   │   └── supplement.json
│   └── supplement.bag
└── parent.bag

Explanation: In previous examples, the order of upload between robologs did not matter because there was always a clear parent-to-child relationship. In this example, ambiguity is present. The path of the first parent robolog is /parent.bag. The file located at /parent/supplement.bag is considered a child robolog because its path begins with /parent. The file located at /parent/supplement/supplement.json is ALSO considered a child robolog, but its parent robolog will be determined based on the order in which the robologs were ingested.

  1. If /parent/supplement.bag is ingested before /parent/supplement/supplement.json then it will become the parent.
  2. If /parent/supplement.bag is ingested after /parent/supplement/supplement.json then /parent.bag will become the parent robolog because the other possible parent does not yet exist.

How to resolve this

  1. We recommend prevention first. Do not use multiple levels of nesting where a supplement could itself have a supplement unless absolutely necessary. If a robolog doesn't need to be a child robolog of another, then place it in another location. You may always group robologs by date, for example, if you wish to keep them together.
  2. If your organization requires your file structure to contain multiple levels of supplementary robologs, modify your upload process such that parent robologs are always ingested before child robologs. You may verify that a robolog has been ingested by using our GraphQL search interface before starting the next batch.
  3. When prevention fails, use our API endpoints or UI to manually manage supplementary robolog relationships. If one robolog is unexpectedly made to be the child robolog of another, it is possible to delete this relationship and specify the correct parent robolog.