ForestAdmin not loading - Forest API Layout request returning 500

Feature(s) impacted

Cannot load forest on staging/development environments

Observed behavior

Forest says “Our server encountered and error”. When in dev-tools I can see a request failed from the ForestAPI while making a PUT https://api.forestadmin.com/api/layout
RESPONSE:

{
  "errors":[
    {
      "status":500,
      "detail":"“null":"record id":56254,
      rendering.collections.0.layout.actions.0 contains a conflict between exclusive peers[
        "users",
        "restrictedTo"
      ],
      "\nnull":"record id":56254,
      "rendering.collections. contains a conflict between exclusive peers"[
        "approvers",
        "approvedBy"
      ],
      "\nnull":"record id":56254,
      rendering.collections.1.layout.actions.0 contains a conflict between exclusive peers[
        "users",
        "restrictedTo"
      ],
      "\nnull":"record id":56254,
      "rendering.collections. contains a conflict between exclusive peers"[
        "approvers",
        "approvedBy"
      ],
      "\nnull":"record id":56254,
      rendering.collections.2.layout.actions.0 contains a conflict between exclusive peers[
        "users",
        "restrictedTo"
      ],
      "\nnull":"record id":56254,
      "rendering.collections. contains a conflict between exclusive peers"[
        "approvers",
        "approvedBy"
      ],
      "\nnull":"record id":56254,
      rendering.collections.3.layout.actions.0 contains a conflict between exclusive peers[
        "users",
        "restrictedTo"
      ],
      "\nnull":"record id":56254,
      "rendering.collections. contains a conflict between exclusive peers"[
        "approvers",
        "approvedBy"
      ],
      "\nnull":"record id":56254,
      rendering.collections.4.layout.actions.0 contains a conflict between exclusive peers[
        "users",
        "restrictedTo"
      ],
      "\nnull":"record id":56254,
      "rendering.collections. contains a conflict between exclusive peers"[
        "approvers",
        "approvedBy"
      ],
      "\nnull":"record id":56254,
      rendering.collections.4.layout.actions.1 contains a conflict between exclusive peers[
        "users",
        "restrictedTo"
      ],
      "\nnull":"record id":56254,
      "rendering.collections. contains a conflict between exclusive peers"[
        "approvers",
        "approvedBy"
      ]"”",
      "meta":{
        
      },
      "name":"BusinessError"
    }
  ]
}

This is happening only on our Staging and Development environments. We are trying to upgrade from 4x to 6x ForestLiana

Expected behavior

It loads

Failure Logs

(see pasted code above)

Context

  • Project name: GoodWay
  • Team name: GoodWay
  • Environment name: Staging & Development
  • Agent type & version: Forest Liana 6.6.3
  • Recent changes made on your end if any: Upgrading from 4x to 6x

Hello @KidA001,

I effectively see 17 errors that happened today, every time you try to modify the layout of the dev environment and then on the staging environment. Sad to read this.

All these errors are the same, the “conflict between exclusive peers” problem, makes me say your dev and your staging have the same problem.

I will ask teammates for more info about this error.
On your side, can you please point out if the issue is specific to your version upgrade?
If you can go back to 4x on your dev and you do it, is the problem solved?

Please fix me if I am wrong: the failing action was to update the restrictedTo property, it defines who can trigger an action. If you run any other layout edition, it will work well.

Regards

1 Like

@Sliman_Medini I was seeing it on my localhost/dev environment pre-upgrade. Thanks for looking into it :pray:

what does this mean?

Ok we misunderstood, you do not create any smart action edition, right?
Do you identify a specific action that happened before the failure please?

We have many smart actions if that’s what you’re asking

Hey @KidA001,

Could you please share the payload that is on error, it must be something like /api/layout ?

Request

Request URL: https://api.forestadmin.com/api/layout
Request Method: PATCH
Remote Address: 54.73.26.109:443
Referrer Policy: origin

Request Payload

[{
  "path": "/collections/2596491/layout/actions/3da2c840-3c2b-11ea-8325-39e957d0f3ee/restrictedTo",
  "op": "replace",
  "value": {
    "users": [],
    "roles": []
  }
}, {
  "path": "/collections/2596491/layout/actions/3da2c840-3c2b-11ea-8325-39e957d0f3ee/approvedBy",
  "op": "replace",
  "value": {
    "users": [],
    "roles": []
  }
}, {
  "path": "/collections/2591779/layout/actions/f75a6120-4186-11ea-9c3d-c7b3ade53e87/restrictedTo",
  "op": "replace",
  "value": {
    "users": [],
    "roles": []
  }
}, {
  "path": "/collections/2591779/layout/actions/f75a6120-4186-11ea-9c3d-c7b3ade53e87/approvedBy",
  "op": "replace",
  "value": {
    "users": [],
    "roles": []
  }
}, {
  "path": "/collections/2591778/layout/actions/68e808a0-3fbc-11ea-bd05-b5c7126ceec6/restrictedTo",
  "op": "replace",
  "value": {
    "users": [],
    "roles": []
  }
}, {
  "path": "/collections/2591778/layout/actions/68e808a0-3fbc-11ea-bd05-b5c7126ceec6/approvedBy",
  "op": "replace",
  "value": {
    "users": [],
    "roles": []
  }
}, {
  "path": "/collections/2591777/layout/actions/3d9bea70-3c2b-11ea-8325-39e957d0f3ee/restrictedTo",
  "op": "replace",
  "value": {
    "users": [],
    "roles": []
  }
}, {
  "path": "/collections/2591777/layout/actions/3d9bea70-3c2b-11ea-8325-39e957d0f3ee/approvedBy",
  "op": "replace",
  "value": {
    "users": [],
    "roles": []
  }
}, {
  "path": "/collections/2584671/layout/actions/d221aec0-3b1b-11ea-be6f-8dbaf9e54af6/restrictedTo",
  "op": "replace",
  "value": {
    "users": [],
    "roles": []
  }
}, {
  "path": "/collections/2584671/layout/actions/d221aec0-3b1b-11ea-be6f-8dbaf9e54af6/approvedBy",
  "op": "replace",
  "value": {
    "users": [],
    "roles": []
  }
}, {
  "path": "/collections/2584671/layout/actions/442ad000-d2ed-11ea-b2ff-9bfbc6ea0f0a/restrictedTo",
  "op": "replace",
  "value": {
    "users": [],
    "roles": []
  }
}, {
  "path": "/collections/2584671/layout/actions/442ad000-d2ed-11ea-b2ff-9bfbc6ea0f0a/approvedBy",
  "op": "replace",
  "value": {
    "users": [],
    "roles": []
  }
}]

Response
Status Code: 500 Internal Server Error

{
  "errors":[
    {
      "status":500,
      "detail":"null: record id: 56254, rendering.collections.0.layout.actions.0 contains a conflict between exclusive peers [users, restrictedTo],\nnull: record id: 56254, rendering.collections. contains a conflict between exclusive peers [approvers, approvedBy],\nnull: record id: 56254, rendering.collections.1.layout.actions.0 contains a conflict between exclusive peers [users, restrictedTo],\nnull: record id: 56254, rendering.collections. contains a conflict between exclusive peers [approvers, approvedBy],\nnull: record id: 56254, rendering.collections.2.layout.actions.0 contains a conflict between exclusive peers [users, restrictedTo],\nnull: record id: 56254, rendering.collections. contains a conflict between exclusive peers [approvers, approvedBy],\nnull: record id: 56254, rendering.collections.3.layout.actions.0 contains a conflict between exclusive peers [users, restrictedTo],\nnull: record id: 56254, rendering.collections. contains a conflict between exclusive peers [approvers, approvedBy],\nnull: record id: 56254, rendering.collections.4.layout.actions.0 contains a conflict between exclusive peers [users, restrictedTo],\nnull: record id: 56254, rendering.collections. contains a conflict between exclusive peers [approvers, approvedBy],\nnull: record id: 56254, rendering.collections.4.layout.actions.1 contains a conflict between exclusive peers [users, restrictedTo],\nnull: record id: 56254, rendering.collections. contains a conflict between exclusive peers [approvers, approvedBy]",
      "meta":{
        
      },
      "name":"BusinessError"
    }
  ]
}

Okey weird, I’ll try to find out how it happened but in the meantime I manually fixed your layouts. You should be good to go :wink:

1 Like

ahhhh, thank you! it’s loading now. much appreciated :pray: :pray: :pray:

1 Like