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

Disable transactions in locking examples #18089

Commits on Oct 15, 2018

  1. Disable transactions in locking examples

    These tests are creating threads and explicit transactions to verify
    when we're locked or not locked in the database.  The Rails 5.1 release
    notes mention that this type of behavior can cause a deadlock, which
    we've seen with rails 5.1, and to instead disable transactional tests.
    
    From the rails 5.1 release notes:
    
    Transactional tests now wrap all Active Record connections in database
    transactions.
    
    When a test spawns additional threads, and those threads obtain database
    connections, those connections are now handled specially:
    
    The threads will share a single connection, which is inside the managed
    transaction. This ensures all threads see the database in the same
    state, ignoring the outermost transaction. Previously, such additional
    connections were unable to see the fixture rows, for example.
    
    When a thread enters a nested transaction, it will temporarily obtain
    exclusive use of the connection, to maintain isolation.
    
    If your tests currently rely on obtaining a separate,
    outside-of-transaction, connection in a spawned thread, you'll need to
    switch to more explicit connection management.
    
    If your tests spawn threads and those threads interact while also using
    explicit database transactions, this change may introduce a deadlock.
    
    The easy way to opt out of this new behavior is to disable transactional
    tests on any test cases it affects.
    
    https://guides.rubyonrails.org/5_1_release_notes.html
    jrafanie committed Oct 15, 2018
    Configuration menu
    Copy the full SHA
    ff6808b View commit details
    Browse the repository at this point in the history