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

Transaction._free drops more references, and Transaction.abort() is a bit safer #84

Merged
merged 1 commit into from
Dec 9, 2019

Commits on Sep 5, 2019

  1. Transaction._free drops more references, and Transaction.abort() is a…

    … little safer.
    
    Specifically, free the manager and synchronizers, plus a few other
    dictionaries that could be arbitrary size and contain arbitrary data.
    
    And abort() always invokes _free() even in the case of exceptions.
    commit() still doesn't so that the synchronizers are available for the
    expected abort().
    
    But take care about when and how abort frees its manager: not only
    does this preserve backwards compatibility, but it lets it be
    safe to abort a transaction object more than once. A happy side-effect
    of only freeing the manager there is that synchronizers can access
    data they set in afterCompletion().
    
    From discussion in #82
    jamadden committed Sep 5, 2019
    Configuration menu
    Copy the full SHA
    e4891eb View commit details
    Browse the repository at this point in the history