Ryan Petrello e45e4b3cda
fix a deadlock when Python garbage collects LDAPBackend objects
we shouldn't call signal.disconnect in __del__ because it can lead to
deadlocks in Django signal dispatch code

The Signal.connect, Signal.disconnect, and Signal._live_receivers
methods all share a threading.Lock():

22a60f8d0b/django/dispatch/dispatcher.py (L49)

It's possible for this to lead to a deadlock:

1.  Have code that calls Signal._live_receivers and enter the critical
    path inside the shared threading.Lock()
2.  Python garbage collection occurs and finds one or more LDAPBackend
    objects with no more references
3.  This __del__ is called, which calls Signal.disconnect
4.  Code in Signal._disconnect attempts to obtain the (already held)
    threading.Lock
5.  Python hangs forever while attempting to garbage collect
2019-01-18 11:27:50 -05:00
2018-08-09 23:08:18 -04:00
2019-01-15 14:09:05 -05:00
2019-01-15 14:09:05 -05:00
2016-02-01 18:37:56 -05:00
2017-06-12 09:53:11 -04:00
2015-02-06 09:47:41 -05:00
2017-08-29 21:18:56 -04:00
2018-10-23 18:01:00 +01:00
2017-08-22 14:34:25 -04:00
2015-06-11 16:10:23 -04:00
2019-01-15 13:25:13 -05:00
2018-10-11 16:05:29 -04:00
2018-10-24 10:11:53 -04:00
2018-10-04 12:25:07 -04:00
2019-01-15 14:09:01 -05:00
2018-12-11 12:30:10 -05:00

Gated by Zuul

AWX

AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is the upstream project for Tower, a commercial derivative of AWX.

To install AWX, please view the Install guide.

To learn more about using AWX, and Tower, view the Tower docs site.

The AWX Project Frequently Asked Questions can be found here.

The AWX logos and branding assets are covered by our trademark guidelines.

Contributing

  • Refer to the Contributing guide to get started developing, testing, and building AWX.
  • All code submissions are done through pull requests against the devel branch.
  • All contributors must use git commit --signoff for any commit to be merged, and agree that usage of --signoff constitutes agreement with the terms of DCO 1.1
  • Take care to make sure no merge commits are in the submission, and use git rebase vs git merge for this reason.
  • If submitting a large code change, it's a good idea to join the #ansible-awx channel on irc.freenode.net, and talk about what you would like to do or add first. This not only helps everyone know what's going on, it also helps save time and effort, if the community decides some changes are needed.

Reporting Issues

If you're experiencing a problem that you feel is a bug in AWX, or have ideas for how to improve AWX, we encourage you to open an issue, and share your feedback. But before opening a new issue, we ask that you please take a look at our Issues guide.

Code of Conduct

We ask all of our community members and contributors to adhere to the Ansible code of conduct. If you have questions, or need assistance, please reach out to our community team at codeofconduct@ansible.com

Get Involved

We welcome your feedback and ideas. Here's how to reach us with feedback and questions:

  • Join the #ansible-awx channel on irc.freenode.net
  • Join the mailing list

License

Apache v2

Description
AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is one of the upstream projects for Red Hat Ansible Automation Platform.
Readme 428 MiB
Languages
Python 97.8%
Jinja 0.9%
Makefile 0.5%
Shell 0.3%
HTML 0.2%
Other 0.2%