Troubleshooting

* was deleted. Resurrection of deleted * is not supported. Please, use a new ID

This issue can happen if you try to deploy an object (Workspace or Monitor) with an ID that was previously used and then deleted.

To fix this issue, replace the ID with a new one. You can create a new ID in python using: python -c 'import uuid; print(uuid.uuid4())'. If this issue appears on multiple objects, do the same for all of them using each time a new ID.

Example

  1. Create a new folder and start a command line from this folder
  2. Create a workspace: sifflet code workspace init --file workspace.yaml --name "A workspace"
  3. Deploy the workspace: sifflet code workspace apply --file workspace.yaml
    Deployment should be successful
  4. Delete the workspace: sifflet code workspace delete --file workspace.yaml
    Deletion should be successful. The workspace is now deleted from the Sifflet backend.
  5. Try to redeploy the workspace: sifflet code workspace apply --file workspace.yaml

The last action will fail with the following message:

Workspace was deleted. Resurrection of deleted workspaces is not supported. Please, use a new ID.

To fix this:

  1. Generate a new UUIID with python -c 'import uuid; print(uuid.uuid4())' (or any other method).
  2. Copy the generated UUID.
  3. Replace the id in workspace.yaml by this new UUID.
  4. Redeploy the workspace: sifflet code workspace apply --file workspace.yaml

This time the deploy succeed.

Unsupported Workspace version * or Unknown version "*"

The version property in one of your object is invalid. This property is used to define the version of the schema of the object to deploy (Workspace or Monitor).

To fix this issue, use a correct version number.

See Workspace schema and Monitor schema for the value to use.

Example

  1. Create a workspace.yaml file with the following content:
kind: Workspace
version: 23
id: 01f92a9b-2835-4805-8576-e31dd02a24c8
name: A workspace
include:
- '*.yaml'
  1. Try to deploy the workspace: sifflet code workspace apply --file workspace.yaml

The workspace deployment will fail with the following error:

Unsupported Workspace version: 23

To fix it:

  1. Change the version property from 23 to 1
  2. Redeploy the workspace: sifflet code workspace apply --file workspace.yaml

This time the deploy succeed.

Multiple * found matching the criteria (*). Specify the ID for disambiguation

An object is make a reference to another object (for instance a Notification, a Dataset or a Tag) that can have multiple correspondances.

To fix this issue, make the reference less ambiguous by adding other properties to the reference or by directly using the ID (to ensure non-ambiguity and immutability).

You can find more information on how to deal with reference to other objects in Monitor schema - Referencing other Sifflet objects

Example

In my example, we'll consider I have two datasources: BigQuery DWH and MYSQL DB. Both datasources have a dataset names sales.

  1. Create a workspace with the following files:
    kind: Workspace
    version: 1
    id: 01f92a9b-2835-4805-8576-e31dd02a24c8
    name: A workspace
      include:
      - '*.yaml'
    
    kind: Monitor
    version: 1
    id: 7de8d626-ee3d-4c1f-87f6-d4567f738438
    name: My monitor
    incident:
      severity: Low
    datasets:
    - name: sales
    parameters:
      kind: SchemaChange
    
  2. Deploy the workspace: sifflet code workspace apply --file workspace.yaml

The deployment will fail with the following error:

Multiple datasets found matching the criteria (id=null, name=sales, datasource=null). Specify the datasource or use the ID for disambiguation.

Because the sales dataset name can refer to the sales dataset in the BigQuery DWH datasource or in the MYSQL DB datasource.

To fix it, you can either, specify the ID of the dataset or provide additional informations on the datasource, like its name or ID (you can also have both if you want to keep the human readable visible in the file). Are are multiple possibilities to fix it in my case:

  1. Replace the content of monitor.yaml by one of the following option:
    kind: Monitor
    version: 1
    id: 7de8d626-ee3d-4c1f-87f6-d4567f738438
    name: My monitor
    incident:
      severity: Low
    datasets:
    - name: sales
      datasource:
        name: BigQuery DHW
    parameters:
      kind: SchemaChange
    
    kind: Monitor
    version: 1
    id: 7de8d626-ee3d-4c1f-87f6-d4567f738438
    name: My monitor
    incident:
      severity: Low
    datasets:
    - id: ef28ad84-3bdc-467e-84df-6890781f676c
    parameters:
      kind: SchemaChange
    
    kind: Monitor
    version: 1
    id: 7de8d626-ee3d-4c1f-87f6-d4567f738438
    name: My monitor
    incident:
      severity: Low
    datasets:
    - name: sales
      datasource:
        id: dc934d21-2883-4300-a815-2a164ffb0630
    parameters:
      kind: SchemaChange
    
    kind: Monitor
    version: 1
    id: 7de8d626-ee3d-4c1f-87f6-d4567f738438
    name: My monitor
    incident:
      severity: Low
    datasets:
    - id: ef28ad84-3bdc-467e-84df-6890781f676c
      name: sales
    parameters:
      kind: SchemaChange
    
  2. Deploy the workspace: sifflet code workspace apply --file workspace.yaml

This time the deployment succeeds.

Untracking object not allowed because objectUntrackAction is set to Error

By default, to prevent any unintended deletion of resources, sifflet code workspace apply returns an error when deleting object.

This will avoid unexpected deletion caused by modification of the include or exclude in the workspace.yaml file, or by a mistake caused by the modification of an object id.

To fix this issue, if the delete is intentional, add the --force-delete flag to the sifflet code workspace apply command.

Example

This example assumes that the environment has a unique dataset named sales.

  1. Create a workspace with the following files:
    kind: Workspace
    version: 1
    id: 01f92a9b-2835-4805-8576-e31dd02a24c8
    name: A workspace
      include:
      - '*.yaml'
    
    kind: Monitor
    version: 1
    id: 7de8d626-ee3d-4c1f-87f6-d4567f738438
    name: My monitor
    incident:
      severity: Low
    datasets:
    - name: sales
    parameters:
      kind: SchemaChange
    
  2. Deploy the workspace: sifflet code workspace apply --file workspace.yaml
  3. Remove the monitor.yaml file
  4. Deploy the workspace: sifflet code workspace apply --file workspace.yaml

The deployment fails with the following error:

Untracking object not allowed because objectUntrackAction is set to Error.

To fix it:

  1. Deploy the workspace using the --force-delete flag: sifflet code workspace apply --file workspace.yaml--force-delete

The deployment succeeds and the monitor is correctly deleted.

Tracking object not allowed because objectTrackAction is set to Error

Currently, migrating an object created via the Sifflet website to managed via code is not supported.

If you just want to create a copy of a monitor, generate a new ID and update the id property of the monitor with this new value (You can create a new ID in python using: python -c 'import uuid; print(uuid.uuid4())').

If you want to do this migration, you need to delete the object from the UI and create it via code using a new ID.

🚧

Deleting an object via the UI will delete all its associated data

Deleting an object (like a Monitor) via the UI will delete all its associated data, such as monitor runs, incidents, ...

These data won't be restored even if the same monitor is re-created via Monitor as Code.

Example

  1. Create a monitor on the Sifflet website and save it.
  2. On the page of the new monitor, click on Show as YAML code and copy the code the appears in the dialog.
  3. With the Sifflet CLI, create a new workspace
  4. Paste the code of the monitor you copied into a new monitor.yaml file and save it.
  5. Deploy the workspace: sifflet code workspace apply --file workspace.yaml

The deployment fails with the following error:

Tracking object not allowed because objectTrackAction is set to Error.

To fix it:

  1. Generate a new UUID: python -c 'import uuid; print(uuid.uuid4())' and copy it
  2. Replace the ID in the monitor.yaml file with the generated one
  3. (Optional) If you want to keep only one version of your monitor delete the monitor in the UX (⚠️ See the Warning callout above).
  4. Deploy the workspace: sifflet code workspace apply --file workspace.yaml

This time the deployment succeeds.