Uploaded image for project: 'Atlas'
  1. Atlas
  2. ATLAS-2531

Lineage display is causing "Maximum call stack size reached" in underscore.js

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 0.8.2
    • 1.0.0, 0.8.3
    • None
    • None
    • Apache Atlas 0.8.2

    Description

      I am getting this console error when I try to display a Dataset entity with lineage:

      Uncaught RangeError: Maximum call stack size exceeded
       at underscore-min.js?bust=1519685834833:1
       at underscore-min.js?bust=1519685834833:1
       at Function.s.each.s.forEach (underscore-min.js?bust=1519685834833:1)
       at Function.s.filter.s.select (underscore-min.js?bust=1519685834833:1)
       at Function.s.where (underscore-min.js?bust=1519685834833:1)
       at N.d.checkForLineageOrImpactFlag (LineageLayoutView.js?bust=1519685834833:80)
       at LineageLayoutView.js?bust=1519685834833:94
       at Function.s.each.s.forEach (underscore-min.js?bust=1519685834833:1)
       at N.d.checkForLineageOrImpactFlag (LineageLayoutView.js?bust=1519685834833:83)
       at LineageLayoutView.js?bust=1519685834833:94

      When I query the API for the lineage information, it comes back properly with all the relations.

      For example

      curl http://localhost:21000/api/atlas/v2/lineage/83bfe9ec-88d3-4207-9b84-26f1018f6a70

      And in the response body I see:

      "relations":[{"fromEntityId":"b3b83e14-0eda-4fe0-ad94-2d6b5fd02aae","toEntityId":"602a8817-31d9-44ea-98af-8448f8701e86"},{"fromEntityId":"470fc824-faab-41dc-9794-67beee1b0d5f","toEntityId":"0d363cf3-e786-4563-bd86-ce82a75608c6"},{"fromEntityId":"5b78dc92-7232-4428-85a5-f4c950667d63","toEntityId":"ada1c08e-7684-4eaa-97d8-387f5ab3e8e2"},{"fromEntityId":"0d363cf3-e786-4563-bd86-ce82a75608c6","toEntityId":"3a65d3f1-a44b-4237-a7c6-e31057bcfac8"},{"fromEntityId":"7b45090c-5cf1-4d8b-a861-5abaa7593b02","toEntityId":"0d363cf3-e786-4563-bd86-ce82a75608c6"},{"fromEntityId":"5b78dc92-7232-4428-85a5-f4c950667d63","toEntityId":"7b45090c-5cf1-4d8b-a861-5abaa7593b02"},{"fromEntityId":"3a65d3f1-a44b-4237-a7c6-e31057bcfac8","toEntityId":"b3b83e14-0eda-4fe0-ad94-2d6b5fd02aae"},{"fromEntityId":"83bfe9ec-88d3-4207-9b84-26f1018f6a70","toEntityId":"5b78dc92-7232-4428-85a5-f4c950667d63"},{"fromEntityId":"ada1c08e-7684-4eaa-97d8-387f5ab3e8e2","toEntityId":"0d363cf3-e786-4563-bd86-ce82a75608c6"},{"fromEntityId":"5b78dc92-7232-4428-85a5-f4c950667d63","toEntityId":"470fc824-faab-41dc-9794-67beee1b0d5f"},{"fromEntityId":"5b78dc92-7232-4428-85a5-f4c950667d63","toEntityId":"602a8817-31d9-44ea-98af-8448f8701e86"},{"fromEntityId":"5b78dc92-7232-4428-85a5-f4c950667d63","toEntityId":"9aeab707-c558-4726-a502-0872023a7dde"},{"fromEntityId":"9aeab707-c558-4726-a502-0872023a7dde","toEntityId":"0d363cf3-e786-4563-bd86-ce82a75608c6"},{"fromEntityId":"602a8817-31d9-44ea-98af-8448f8701e86","toEntityId":"0d363cf3-e786-4563-bd86-ce82a75608c6"}]}

      So there should be ~14 relations that show up for this entity in the lineage graph. 

      From what I can tell this recursive function is not terminating properly:

      https://github.com/apache/atlas/blob/2735f96fc70f06eba4672538376c6df8f0dc30dd/dashboardv2/public/js/views/graph/LineageLayoutView.js#L158

      I am guessing that since it is traversing the relations of every `fromEntityId`, at some point it is going to re-visit a node that lineage is already drawn for, therefore causing a circular dependency and recursing forever. 

      Attachments

        1. ATLAS-2531.patch
          2 kB
          Keval Bhatt

        Issue Links

          Activity

            People

              kevalbhatt Keval Bhatt
              conniec Connie Chen
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: