tellapart/aurproxy

Threading traceback (assumed to be from gevent) swallowed

SEJeff opened this issue · 1 comments

Every time aurproxy writes out a new configuration, I get a line such as:

2015-07-07 10:41:20,677 [INFO] tellapart.aurproxy.backends.nginx.backend: Applying new configuration.
Exception AttributeError: AttributeError("'_DummyThread' object has no attribute '_Thread__block'",) in <module 'threading' from '/usr/lib64/python2.7/threading.pyc'> ignored

At first, I thought it was from the run_local('kill -HUP ...') call in the nginx backend's restart(), but changing that to something else has no effect. My guess is something in the gevent code is buggy and I'm not sure of the best way to find it (but would like to see no tracebacks).

I'm starting aurproxy via:

```bash
python -m "tellapart.aurproxy.command" run \
    --sentry-dsn='gevent+https://<sentry_user>:<sentry_api_key>@<internal_sentry_server_url>/27' \
    --management-port=31325 \
    --config "$config_json"

With this config json:

{
    "backend": "nginx",
    "configuration_file": "/etc/nginx/nginx.conf",
    "servers": [
        {
            "context": {
                "default_server": "True",
                "location_blacklist": []
            },
            "healthcheck_route": "/healthcheck/",
            "hosts": [
                "hello_world2.internal"
            ],
            "ports": [
                8080
            ],
            "routes": [
                {
                    "locations": [
                        "/"
                    ],
                    "sources": [
                        {
                            "endpoint": "http",
                            "environment": "devel",
                            "job": "hello_world2",
                            "role": "jschroeder",
                            "share_adjusters": [
                                {
                                    "curve": "linear",
                                    "ramp_delay": 5,
                                    "ramp_seconds": 60,
                                    "share_adjuster_class": "tellapart.aurproxy.share.adjusters.RampingShareAdjuster",
                                    "update_frequency": 10
                                },
                                {
                                    "healthy_threshold": 2,
                                    "interval": 10,
                                    "port_name": "http",
                                    "route": "/health",
                                    "share_adjuster_class": "tellapart.aurproxy.share.adjusters.HttpHealthCheckShareAdjuster",
                                    "timeout": 5,
                                    "unhealthy_threshold": 3
                                }
                            ],
                            "source_class": "tellapart.aurproxy.source.AuroraProxySource",
                            "zk_servers": "njb-zkl1:2181,njb-zkl2:2181,njb-zkl3:2181"
                        }
                    ]
                }
            ]
        },
        {
            "context": {
                "location_blacklist": []
            },
            "healthcheck_route": "/healthcheck/",
            "hosts": [
                "hello_world_flask.internal",
                "hello_world_flask",
                "hello_world_flask-prod",
                "hello_world_flask-prod.internal"
            ],
            "ports": [
                8080
            ],
            "routes": [
                {
                    "locations": [
                        "/"
                    ],
                    "sources": [
                        {
                            "endpoint": "http",
                            "environment": "devel",
                            "job": "hello_world_flask",
                            "role": "jschroeder",
                            "share_adjusters": [
                                {
                                    "curve": "linear",
                                    "ramp_delay": 5,
                                    "ramp_seconds": 60,
                                    "share_adjuster_class": "tellapart.aurproxy.share.adjusters.RampingShareAdjuster",
                                    "update_frequency": 10
                                },
                                {
                                    "healthy_threshold": 2,
                                    "interval": 10,
                                    "port_name": "http",
                                    "route": "/health",
                                    "share_adjuster_class": "tellapart.aurproxy.share.adjusters.HttpHealthCheckShareAdjuster",
                                    "timeout": 5,
                                    "unhealthy_threshold": 3
                                }
                            ],
                            "source_class": "tellapart.aurproxy.source.AuroraProxySource",
                            "zk_servers": "njb-zkl1:2181,njb-zkl2:2181,njb-zkl3:2181"
                        }
                    ]
                }
            ],
            "share_adjusters": [
                {
                    "curve": "linear",
                    "seconds": 60,
                    "share_adjuster_class": "aurproxy.share.adjusters.RampingShareAdjuster",
                    "update_frequency": 10
                },
                {
                    "healthy_threshold": 2,
                    "interval": 3,
                    "route": "/health/",
                    "share_adjuster_class": "aurproxy.share.adjusters.HttpHealthCheckShareAdjuster",
                    "timeout": 2,
                    "unhealthy_threshold": 2
                }
            ]
        }
    ]
}

Sadly, nothing is being logged to sentry either.

$ pip freeze
Fabric==1.10.0
Flask==0.10.1
Flask-RESTful==0.3.1
Jinja2==2.7.3
MarkupSafe==0.23
Werkzeug==0.10.4
aniso8601==0.92
blinker==1.3
boto==2.34.0
commandr==1.3.2
ecdsa==0.13
gevent==1.0.1
greenlet==0.4.6
itsdangerous==0.24
kazoo==2.0
librato-metrics==0.7.0
paramiko==1.15.2
psutil==2.2.1
pycrypto==2.6.1
python-dateutil==2.4.2
pytz==2015.2
raven==5.1.1
requests==2.5.1
six==1.9.0
wsgiref==0.1.2
$ python --version
Python 2.7.3