Revision 57e09fb4 snf-pithos-app/pithos/api/util.py
b/snf-pithos-app/pithos/api/util.py | ||
---|---|---|
61 | 61 |
BACKEND_BLOCK_UMASK, |
62 | 62 |
BACKEND_QUEUE_MODULE, BACKEND_QUEUE_HOSTS, |
63 | 63 |
BACKEND_QUEUE_EXCHANGE, |
64 |
PITHOS_QUOTAHOLDER_URL,
|
|
64 |
PITHOS_QUOTAHOLDER_URL,
|
|
65 | 65 |
BACKEND_QUOTA, BACKEND_VERSIONING, |
66 | 66 |
AUTHENTICATION_URL, AUTHENTICATION_USERS, |
67 | 67 |
SERVICE_TOKEN, COOKIE_NAME) |
... | ... | |
860 | 860 |
queue_module=BACKEND_QUEUE_MODULE, |
861 | 861 |
queue_hosts=BACKEND_QUEUE_HOSTS, |
862 | 862 |
queue_exchange=BACKEND_QUEUE_EXCHANGE, |
863 |
quotaholder_url=PITHOS_QUOTAHOLDER_URL)
|
|
863 |
quotaholder_url=PITHOS_QUOTAHOLDER_URL)
|
|
864 | 864 |
backend.default_policy['quota'] = BACKEND_QUOTA |
865 | 865 |
backend.default_policy['versioning'] = BACKEND_VERSIONING |
866 | 866 |
return backend |
... | ... | |
872 | 872 |
|
873 | 873 |
from synnefo.lib.pool import ObjectPool |
874 | 874 |
from new import instancemethod |
875 |
from select import select |
|
876 |
from traceback import print_exc |
|
875 | 877 |
|
876 | 878 |
USAGE_LIMIT = 500 |
877 | 879 |
POOL_SIZE = 5 |
... | ... | |
887 | 889 |
return backend |
888 | 890 |
|
889 | 891 |
def _pool_verify(self, backend): |
890 |
return 1 |
|
892 |
wrapper = backend.wrapper |
|
893 |
conn = wrapper.conn |
|
894 |
if conn.closed: |
|
895 |
return False |
|
896 |
|
|
897 |
if conn.in_transaction(): |
|
898 |
conn.close() |
|
899 |
return False |
|
900 |
|
|
901 |
try: |
|
902 |
fd = conn.connection.connection.fileno() |
|
903 |
r, w, x = select([fd], (), (), 0) |
|
904 |
if r: |
|
905 |
conn.close() |
|
906 |
return False |
|
907 |
except: |
|
908 |
print_exc() |
|
909 |
return False |
|
910 |
|
|
911 |
return True |
|
891 | 912 |
|
892 | 913 |
def _pool_cleanup(self, backend): |
893 | 914 |
c = backend._use_count - 1 |
... | ... | |
896 | 917 |
return True |
897 | 918 |
|
898 | 919 |
backend._use_count = c |
899 |
if backend.wrapper.trans is not None: |
|
900 |
backend.wrapper.rollback() |
|
920 |
wrapper = backend.wrapper |
|
921 |
if wrapper.trans is not None: |
|
922 |
conn = wrapper.conn |
|
923 |
if conn.closed: |
|
924 |
wrapper.trans = None |
|
925 |
else: |
|
926 |
wrapper.rollback() |
|
901 | 927 |
if backend.messages: |
902 | 928 |
backend.messages = [] |
903 | 929 |
return False |
Also available in: Unified diff