surrealdb / surrealdb.go

SurrealDB SDK for Golang
https://surrealdb.com
Apache License 2.0
232 stars 60 forks source link

Bug: The session has expired error when connecting to version 1.3.0 #129

Closed agufagit closed 5 months ago

agufagit commented 5 months ago

Describe the bug

version 1.3.0 has websocket session expire feature, and throw The session has expired error.

Are we supposed to handle this on our own, or this should be handled by driver?

Steps to reproduce

make connection, idle for a while, then make a request

Expected behaviour

no error, and request go through, result successfully returned

SurrealDB version

surreal 1.3.0

Contact Details

No response

Is there an existing issue for this?

Code of Conduct

agufagit commented 5 months ago

I handled this in my own code

JohnKinyanjui commented 5 months ago

@agufagit how did you handle it? am also facing the same issue

agufagit commented 5 months ago

@agufagit how did you handle it? am also facing the same issue

if error not nil and error message contains "session has expired", close connection, call the function again to get new connection from pool

below is exact part of code where I handle this error, Query(c, query, parameters) is the function that contains this code

resultRaw, err := conn.Query(query, parameters)
if err != nil {
    if strings.Contains(err.Error(), "session has expired") {
        println("1. db session expired")
        errCloseConn := conn.CloseWithNew()
        if errCloseConn != nil {
            return nil, errors.Wrap(defaultErrors.Join(err, errCloseConn), "The session has expired, error closing db connection")
        }
        return Query(c, query, parameters)
    }
    callback(false)

    return nil, err
}
JohnKinyanjui commented 5 months ago

ok nice implemented it, ty also just noticed the bug has been fixed in version 1.3.1