Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions src/firebolt/async_db/connection.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from __future__ import annotations

import socket
from json import JSONDecodeError
from socket import IPPROTO_TCP, SO_KEEPALIVE, SOL_SOCKET, TCP_KEEPIDLE
from types import TracebackType
from typing import Callable, List, Optional, Type

Expand Down Expand Up @@ -157,11 +157,17 @@ async def connect_tcp(
)
# Enable keepalive
stream.get_extra_info("socket").setsockopt(
SOL_SOCKET, SO_KEEPALIVE, KEEPALIVE_FLAG
socket.SOL_SOCKET, socket.SO_KEEPALIVE, KEEPALIVE_FLAG
)
# MacOS does not have TCP_KEEPIDLE
if hasattr(socket, "TCP_KEEPIDLE"):
keepidle = socket.TCP_KEEPIDLE
else:
keepidle = 0x10 # TCP_KEEPALIVE on mac

# Set keepalive to 60 seconds
stream.get_extra_info("socket").setsockopt(
IPPROTO_TCP, TCP_KEEPIDLE, KEEPIDLE_RATE
socket.IPPROTO_TCP, keepidle, KEEPIDLE_RATE
)
return stream

Expand Down