appsmith: [Bug] AppsmithException: "widgetType" : "TABLE_WIDGET", "bindingPath" : "derivedColumns.customColumn2.computedValue", ...

Sentry Issue: APPSMITH-1G0

AppsmithException:   "widgetType" : "TABLE_WIDGET",  "bindingPath" : "derivedColumns.customColumn2.computedValue",  "message" : "Binding path in the widget not found. Please reach out to Appsmith customer support to resolve this.",  "widgetName" : "data_table",  "widgetId" : "jabdu9f16g",  "pageId" : "61cbe7a3a4437918c01f7aee",  "layoutId" : "61cbe7a3a4437918c01f7aec",  "dynamicBinding" : ""
    at com.appsmith.server.services.ce.LayoutActionServiceCEImpl.extractAllWidgetNamesAndDynamicBindingsFromDSL(LayoutActionServiceCEImpl.java:596)

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 55 (54 by maintainers)

Commits related to this issue

Most upvoted comments

@riodeuno while triaging this we decided to address the problem at the root level. And also @keyurparalkar pushed some changes that capture this issue in FE and logs it in the sentry along with Smartlook recording. So shall we go through the recordings and fix it at the root rather than cleaning the dynamicBindingPathList before saving?

@yaldram Could you please go through the smartlook recordings in sentry issues?. Look for the error message in the following format INVALID_DynamicPathBinding_CLIENT_ERROR: Invalid dynamic path binding list: {{PATH_OF_THE_PEROPERTY}}

@jsartisan are you looking into this ?

The last commit fixed this issue for all the widgets, but we see the TABLE WIDGET still having the issue, we think it might be some other flow that may be causing this issue. Therefore re-opening it.

@somangshu I am planning to start investigating this issue from tomorrow.

The issue is still not fixed as part of https://github.com/appsmithorg/appsmith/pull/10803

@somangshu @riodeuno Let’s push a fix to identify this integrity issue before we make the save call and throw a sentry error. That way we will have the stack trace and smart look recording that will help us in debugging this.

@SatishGandham @sbalaji1192 and I triaged this issue. Here are the findings

  1. This issue occurs because dynamicBindingPathList contains a property path that doesn’t have a binding. For example, if we add a binding {{ 1 === 1 }} to a property of a widget, say isVisible, the dynamicBindingPathList automatically includes { key: "isVisible" }. This issue occurs when the entry in the dynamicBindingPathList exists, while the isVisible property no longer has a binding.
  2. The issue started being reported when we started checking for this integrity in the backend on page save. [link]
  3. This issue doesn’t crash a user’s application. We re-try the page save, after fixing the issue mentioned in 1. if the first attempt fails.
  4. This is a good opportunity for us to identify and fix all the scenarios where the disconnect mentioned in 1. occurs.
  5. We do have a way to fix this globally, however, this will also hide the scenarios mentioned in 4.

My Recommendation:

  • We identify and fix this issue from its origins in the client-side codebase. There are a few widgets that have this issue, we can try and identify them from the original sentry events.

@sbalaji1192 one update - the error thrown by the server is because it expects the paths in dynamicBindingPathList to have a valid binding - it does a regex match to check if something similar with double curly braces exists or not {{...}} . So, even if the path is valid, it throws an error. The expectation from the server side is that if any path contains a value which is not a valid binding or is empty, then the path should not be part of the dynamic binding path list.

@sumitsum @sbalaji1192 is this related to this one? Looks like Saptami has some steps https://github.com/appsmithorg/appsmith/issues/9439

@sbalaji1192 just adding some more context here - the issue that the server is reporting is that the client has sent it a bindingPath that does not exists in the widget’s dsl. This is the same issue that was addressed in the other references that I have provided. The issues discussed in the references are focussed on the table widget, but if this issue is getting reported for other widgets too then IMO this could be a problem across all the widgets - ie. computing the bindingPath by the client.