Merge branch 'master' into gevent
Conflicts: CHANGELOG.rst
This commit is contained in:
@@ -12,11 +12,15 @@ Bug Fixes
|
|||||||
* Correctly supply compaction and compression parameters in CREATE statements
|
* Correctly supply compaction and compression parameters in CREATE statements
|
||||||
for tables when working with Cassandra 2.0+
|
for tables when working with Cassandra 2.0+
|
||||||
* Lowercase boolean literals when generating schemas
|
* Lowercase boolean literals when generating schemas
|
||||||
|
* Ignore SSL_ERROR_WANT_READ and SSL_ERROR_WANT_WRITE socket errors. Previously,
|
||||||
|
these resulted in the connection being defuncted, but they can safely be
|
||||||
|
ignored by the driver.
|
||||||
|
|
||||||
Other
|
Other
|
||||||
-----
|
-----
|
||||||
* Don't ignore column names when parsing typestrings. This is needed for
|
* Don't ignore column names when parsing typestrings. This is needed for
|
||||||
user-defined type support. (github issue #90)
|
user-defined type support. (github issue #90)
|
||||||
|
* Better error message when libevwrapper is not found
|
||||||
|
|
||||||
1.0.2
|
1.0.2
|
||||||
=====
|
=====
|
||||||
|
|||||||
@@ -220,7 +220,11 @@ class AsyncoreConnection(Connection, asyncore.dispatcher):
|
|||||||
if len(buf) < self.in_buffer_size:
|
if len(buf) < self.in_buffer_size:
|
||||||
break
|
break
|
||||||
except socket.error as err:
|
except socket.error as err:
|
||||||
if err.args[0] not in NONBLOCKING:
|
if ssl and isinstance(err, ssl.SSLError):
|
||||||
|
if err.args[0] not in (ssl.SSL_ERROR_WANT_READ, ssl.SSL_ERROR_WANT_WRITE):
|
||||||
|
self.defunct(err)
|
||||||
|
return
|
||||||
|
elif err.args[0] not in NONBLOCKING:
|
||||||
self.defunct(err)
|
self.defunct(err)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,16 @@ from cassandra import OperationTimedOut
|
|||||||
from cassandra.connection import Connection, ConnectionShutdown, NONBLOCKING
|
from cassandra.connection import Connection, ConnectionShutdown, NONBLOCKING
|
||||||
from cassandra.decoder import RegisterMessage
|
from cassandra.decoder import RegisterMessage
|
||||||
from cassandra.marshal import int32_unpack
|
from cassandra.marshal import int32_unpack
|
||||||
import cassandra.io.libevwrapper as libev
|
try:
|
||||||
|
import cassandra.io.libevwrapper as libev
|
||||||
|
except ImportError:
|
||||||
|
raise ImportError(
|
||||||
|
"The C extension needed to use libev was not found. This "
|
||||||
|
"probably means that you didn't have the required build dependencies "
|
||||||
|
"when installing the driver. See "
|
||||||
|
"http://datastax.github.io/python-driver/installation.html#c-extensions "
|
||||||
|
"for instructions on installing build dependencies and building "
|
||||||
|
"the C extension.")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
@@ -261,7 +270,11 @@ class LibevConnection(Connection):
|
|||||||
if len(buf) < self.in_buffer_size:
|
if len(buf) < self.in_buffer_size:
|
||||||
break
|
break
|
||||||
except socket.error as err:
|
except socket.error as err:
|
||||||
if err.args[0] not in NONBLOCKING:
|
if ssl and isinstance(err, ssl.SSLError):
|
||||||
|
if err.args[0] not in (ssl.SSL_ERROR_WANT_READ, ssl.SSL_ERROR_WANT_WRITE):
|
||||||
|
self.defunct(err)
|
||||||
|
return
|
||||||
|
elif err.args[0] not in NONBLOCKING:
|
||||||
self.defunct(err)
|
self.defunct(err)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user