Skip to content

Commit 6788a7c

Browse files
committed
connection: fix logging of non-IP sockets
Before this fix, the debug log would crash _connect_socket for UNIX domain sockets. getsockname() for UNIX domain sockets returns a single string instead of a tuple (as is the case for IPv4/IPv6). Therefore the code could crash as it tried to get the second element of a non-tuple (empty string): Traceback (most recent call last): File "/home/margdoc/Workspace/scylla/maintenance_mode_testing.py", line 5, in <module> s = c.connect() ^^^^^^^^^^^ File "cassandra/cluster.py", line 1750, in cassandra.cluster.Cluster.connect File "cassandra/cluster.py", line 1776, in cassandra.cluster.Cluster.connect File "cassandra/cluster.py", line 1763, in cassandra.cluster.Cluster.connect File "cassandra/cluster.py", line 3581, in cassandra.cluster.ControlConnection.connect File "cassandra/cluster.py", line 3642, in cassandra.cluster.ControlConnection._reconnect_internal cassandra.cluster.NoHostAvailable: ('Unable to connect to any servers', {'test_socket': IndexError('string index out of range')}) Fix the issue by not unpacking those values and just printing them as-is, relying on %s formatter to print all elements of a tuple (host, port) for IP sockets and string for UNIX domain sockets. The printed log is not formatted as nice as before, however this is a DEBUG print so few users will ever see it. The new approach should work with any format of getsockname(). Fixes #278
1 parent 679ad24 commit 6788a7c

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

cassandra/connection.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -940,7 +940,7 @@ def _connect_socket(self):
940940
self._initiate_connection(sockaddr)
941941
self._socket.settimeout(None)
942942
local_addr = self._socket.getsockname()
943-
log.debug('Connection %s %s:%s -> %s:%s', id(self), local_addr[0], local_addr[1], sockaddr[0], sockaddr[1])
943+
log.debug("Connection %s: '%s' -> '%s'", id(self), local_addr, sockaddr)
944944
if self._check_hostname:
945945
self._match_hostname()
946946
sockerr = None

0 commit comments

Comments
 (0)