Skip to content

Restore sessions issues

Goal

Fix issues:

  • Duplicate messages if assistant has multiple channels and several active sessions (see attach: 2021-08-18_20-34)
  • "Noisy" output while stop idle Slack-session
    2021/08/18 13:20:17 [DEBUG]  Session idle: %v %v &{{UXXXXXXA user Firstname Lastname {6074 CXXXXXE10 false {{0 0 <nil>} 0 0   0} 2021-08-18 13:05:20.985750215 +0000 UTC 0 0xc0002dab40 {test 127.0.0.1 6002 joe_artyom 6xxxxxxxqL prefer} 0xc00024eb40}} {6074 CXXXXXE10 false {{0 0 <nil>} 0 0 0} 2021-08-18 13:05:20.985750215 +0000 UTC 0 0xc0002dab40 {test 127.0.0.1 6002 joe_artyom 6xxxxxxxqL prefer} 0xc00024eb40}
    Close
    Lock
    wait for idle resources
    &pgxpool.connResource{conn:(*pgx.Conn)(0xc000363c20), conns:[]pgxpool.Conn{pgxpool.Conn{res:(*puddle.Resource)(nil), p:(*pgxpool.Pool)(nil)}, pgxpool.Conn{res:(*puddle.Resource)(nil), p:(*pgxpool.Pool)(n
    il)}, pgxpool.Conn{res:(*puddle.Resource)(nil), p:(*pgxpool.Pool)(nil)}, pgxpool.Conn{res:(*puddle.Resource)(nil), p:(*pgxpool.Pool)(nil)}, pgxpool.Conn{res:(*puddle.Resource)(nil), p:(*pgxpool.Pool)(nil
    )}, pgxpool.Conn{res:(*puddle.Resource)(nil), p:(*pgxpool.Pool)(nil)}, pgxpool.Conn{res:(*puddle.Resource)(nil), p:(*pgxpool.Pool)(nil)}, pgxpool.Conn{res:(*puddle.Resource)(nil), p:(*pgxpool.Pool)(nil)}
    , pgxpool.Conn{res:(*puddle.Resource)(nil), p:(*pgxpool.Pool)(nil)}, pgxpool.Conn{res:(*puddle.Resource)(nil), 
    ... two screen the same content ...
    nil), c:(*pgxpool.Conn)(nil), err:error(nil)}, pgxpool.poolRows{r:pgx.Rows(nil), c:(*pgxpool.Conn)(nil), err:error(nil)}}}!
    Unlock
  • idle sessions are handled incorrectly during restart
    Example:
     - Run Joe Bot instance and start a new session
     - Restart Joe Bot instance (sessions are restored)
     - DLE detects an idle session and remove it
     - Joe Bot skips checking the session because it looks too "fresh", but users get errors performing commands
    DLE logs:
    
    2021/08/19 10:50:14 [DEBUG]  Not found recent activity for the session: "17". Clone name: "dblab_clone_6000"
    2021/08/19 10:50:14 [DEBUG]  Check an active query for: "17".
    2021/08/19 10:50:14 [INFO]   Idle clone "joe-c4f37r3ri60s46lefha0" is going to be removed.
    2021/08/19 10:50:14 [DEBUG]  Stopping Postgres container...
    2021/08/19 10:50:15 [DEBUG]  Run(Local): "rm -rf /var/lib/dblab/dblab_pool/sockets/dblab_clone_6000/*"
    2021/08/19 10:50:15 [DEBUG]  Run(Local): "zfs destroy -R dblab_pool/dblab_clone_6000"
    
    Joe Bot logs:
    
    2021/08/19 10:47:50 [DEBUG]  Set up channel:  dev__maindb
    2021/08/19 10:47:50 [DEBUG]  Restore sessions webui
    2021/08/19 10:47:50 [DEBUG]  Set up channel:  dev_no_pii__seconddb
    2021/08/19 10:47:50 [DEBUG]  Restore sessions webui
    2021/08/19 10:47:50 [INFO]   Server start listening on 0.0.0.0:3001
    
    ...
    2021/08/19 10:53:07 [ERROR]  RunnerError(cmd="psql --host=127.0.0.1 --port=6000 --user="joe_bot" --dbname="test" -X -f /tmp/psql-query-556233865", inerr="exit status 2", 
    stderr="psql: could not connect to server: Connection refused
         Is the server running on host "127.0.0.1" and accepting
         TCP/IP connections on port 6000?
    " exit="2")
    2021/08/19 10:53:07 [ERROR]  psql error: psql: could not connect to server: Connection refused
         Is the server running on host "127.0.0.1" and accepting
         TCP/IP connections on port 6000?

TODO / How to implement

Acceptance criteria

Edited by Artyom Kartasov