TCPSocket Keep Alive


#1

I’ve been working with the Thrift.jl package to create bindings for MapD. I am able to successfully connect to the database for many methods, but I am noticing that if I don’t submit a call for a few minutes, then I lose the connection to the database. Re-running my connection code then running the method again runs instantly.

function connect(host::String, port::Int, user::String, passwd::String, dbname::String)

    socket = TSocket(host, port)
    Thrift.set_field!(socket, :io, Base.connect(host, port))
    #transport = TBufferedTransport(socket) # https://github.com/tanmaykm/Thrift.jl/issues/12
    proto = TBinaryProtocol(socket)
    c = MapD.MapDClient(proto)

    session = MapD.connect(c, user, passwd, dbname)

    return MapDConnection(session, c)

end

My question is, when using Base.connect to create a socket, is there a way to keep the socket alive for a specified amount of time? In libuv, there is uv_tcp_keepalive, but that doesn’t seem present for the Julia sockets.


#2

Got a temporary answer from Jacob, continuing the conversation here: