Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-11802

[Rust][DataFusion] Mixing of crossbeam channel and async tasks can lead to deadlock

    XMLWordPrintableJSON

Details

    Description

      edrevo noticed, on https://github.com/apache/arrow/pull/9523#issuecomment-786237494, that the use of crossbeam channels can potentially deadlock datafusion

      The use of crossbeam channel is left over from earlier, non `async` implementations and get been fingered in some hangs that MikeSeddonAU has observed in DataFusion ). Specifically the crossbeam channel can block a thread when the channel is full or empty, which can result in blocking all the tokio executor threads and deadlocking the system

      The proposal is is to use tokio's mpsc channels instead of crossbeam which can properly yield back to tokio to run another task when the channel is either full or empty. .

      Attachments

        Issue Links

          Activity

            People

              alamb Andrew Lamb
              alamb Andrew Lamb
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1h 40m
                  1h 40m