Changeset: 7b660786bc4f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7b660786bc4f
Branch: smapi
Log Message:

merged with default


diffs (69 lines):

diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c
--- a/monetdb5/mal/mal_client.c
+++ b/monetdb5/mal/mal_client.c
@@ -258,6 +258,7 @@ MCinitClientRecord(Client c, oid user, b
        c->memorylimit = 0;
        c->qryctx.querytimeout = 0;
        c->sessiontimeout = 0;
+       c->logical_sessiontimeout = 0;
        c->qryctx.starttime = 0;
        ATOMIC_SET(&c->qryctx.datasize, 0);
        c->qryctx.maxmem = 0;
@@ -399,6 +400,7 @@ MCcloseClient(Client c)
        c->memorylimit = 0;
        c->qryctx.querytimeout = 0;
        c->sessiontimeout = 0;
+       c->logical_sessiontimeout = 0;
        c->user = oid_nil;
        if (c->username) {
                GDKfree(c->username);
diff --git a/monetdb5/mal/mal_client.h b/monetdb5/mal/mal_client.h
--- a/monetdb5/mal/mal_client.h
+++ b/monetdb5/mal/mal_client.h
@@ -72,6 +72,7 @@ typedef struct CLIENT {
        int             memorylimit;            /* maximum memory currently 
allowed in MB */
        lng maxmem;                                     /* max_memory from 
db_user_info table */
        lng         sessiontimeout;             /* session abort after x usec, 
0 = no limit */
+       lng logical_sessiontimeout;     /* logical session timeout, client 
defined */
        QryCtx  qryctx;                         /* per query limitations */
 
        time_t  login;          /* Time when this session started */
diff --git a/monetdb5/modules/mal/clients.c b/monetdb5/modules/mal/clients.c
--- a/monetdb5/modules/mal/clients.c
+++ b/monetdb5/modules/mal/clients.c
@@ -595,8 +595,10 @@ CLTsessionTimeout(Client cntxt, MalBlkPt
        MT_lock_set(&mal_contextLock);
        if (mal_clients[idx].mode == FREECLIENT)
                msg = createException(MAL,"clients.setsessiontimeout","Session 
not active anymore");
-       else
-               mal_clients[idx].sessiontimeout = (lng) sto * 1000000;
+       else {
+               mal_clients[idx].sessiontimeout = (lng) (sto * 1000000) + 
(GDKusec() - mal_clients[idx].session);
+               mal_clients[idx].logical_sessiontimeout = (lng) sto;
+       }
        MT_lock_unset(&mal_contextLock);
        return msg;
 }
@@ -871,7 +873,7 @@ CLTsessions(Client cntxt, MalBlkPtr mb, 
                                goto bailout;
                        if (BUNappend(login, &ret, false) != GDK_SUCCEED)
                                goto bailout;
-                       timeout = (int)(c->sessiontimeout / 1000000);
+                       timeout = (int)(c->logical_sessiontimeout);
                        if (BUNappend(sessiontimeout, &timeout, false) != 
GDK_SUCCEED)
                                goto bailout;
                        timeout = (int)(c->qryctx.querytimeout / 1000000);
diff --git a/sql/ChangeLog b/sql/ChangeLog
--- a/sql/ChangeLog
+++ b/sql/ChangeLog
@@ -1,6 +1,10 @@
 # ChangeLog file for sql
 # This file is updated with Maddlog
 
+* Fri Apr  7 2023 Lucas Pereira <lucas.pere...@monetdbsolutions.com>
+- Session timeout feature improve to start evaluating from the moment
+  the procedure is called, instead of beginning of the session.
+
 * Fri Mar  3 2023 Lucas Pereira <lucas.pere...@monetdbsolutions.com>
 - Queries stopped with the stop procedure are now marked as 'aborted'
   'finished'.
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to