Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix the lock order issue caused by value operator init #9738

Closed
wants to merge 1 commit into from

Commits on May 7, 2024

  1. Fix the lock order issue caused by value operator init (facebookincub…

    …ator#9738)
    
    Summary:
    The lock order issue detected by tsan is as follows:
    T1: task startup creates driver and constructor operators which holds the task lock
    T2: value operator constructor allocates memory from memory pool for parallelized value node mode
          which triggers memory arbitration 
    T3: the memory arbitration grabs arbitration lock for arbitration
    T4: the memory reclaim tries to grabs the task lock for reclaim such as to pause the task execution
    
    This forms a deadlock and we have the logic to detect the memory pool allocation from the operator
    constructor in driver execution framework. However the memory pool of vectors used by value nodes
    is not the query memory pool but owns by the test framework. This PR moves the memory pool allocation
    from constructor to initialize() method as the other operator does.
    
    
    Test Plan:
    The test passed 100 stress test iterations:
    https://www.internalfb.com/intern/testinfra/testrun/10414574171435627
    https://www.internalfb.com/intern/testinfra/testrun/13229323938244819
    
    Reviewed By: bikramSingh91
    
    Differential Revision: D57063553
    
    Pulled By: xiaoxmeng
    xiaoxmeng authored and facebook-github-bot committed May 7, 2024
    Configuration menu
    Copy the full SHA
    29c436d View commit details
    Browse the repository at this point in the history