Uploaded image for project: 'HPCC'
  1. HPCC
  2. HPCC-22934

Parallel child subgraphs may not be correctly initialized after being cloned

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 7.0.0
    • Fix Version/s: 7.6.2, 7.4.26
    • Component/s: Thor
    • Labels:
      None

      Description

      If a child graph is invoked on multiple threads, it will be cloned and executed.
      When a child query starts, it checks if any activities require initialization data and makes a request to the master.
      This initialization data is normally only required for the 1st execution, for things like serialization of file parts. It is only required for subsequent execution if certain cases, e.g. if there's a dynamic filename in use.

      Regardless, the child query makes a request to the master for init. info for activities it needs.
      However, the code handling the request in the master, ignores requests for activities which are flagged as 'reinit = false', i.e. those activities that do not need reinitializating per query.

      Unfortunately in the clone graph case they do still need initialization data for the their 1st execution.

      The consequence is unpredicable behaviour or a crash, the example where this was seen, was where an IndexRead inside a child query (running in parallel via KJ thread handlers), crashed inside it's init() method, trying to deserialize expected init data.

        Attachments

          Activity

            People

            • Assignee:
              jakesmith Jake Smith
              Reporter:
              jakesmith Jake Smith
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: