korlov42 commented on code in PR #1004:
URL: https://github.com/apache/ignite-3/pull/1004#discussion_r954847238
##########
modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/session/Session.java:
##########
@@ -88,6 +88,11 @@ public SessionId sessionId() {
return sessionId;
}
+ /** Returns the duration in millis after which the session will be
considered expired if no one touched it in the middle. */
+ public long getIdleTimeoutMs() {
Review Comment:
```suggestion
public long idleTimeoutMs() {
```
##########
modules/api/src/main/java/org/apache/ignite/sql/Session.java:
##########
@@ -215,12 +215,20 @@ default long[] executeBatch(@Nullable Transaction
transaction, String dmlQuery,
CompletableFuture<Void> executeScriptAsync(String query, @Nullable
Object... arguments);
/**
- * Return default query timeout.
+ * Return default query timeout which bound query execution time. In case
a query take more time it's will be interrupted.
*
* @param timeUnit Timeunit to convert timeout to.
* @return Default query timeout in the given timeunit.
*/
- long defaultTimeout(TimeUnit timeUnit);
+ long defaultQueryTimeout(TimeUnit timeUnit);
+
+ /**
+ * Return default idle session timeout. The duration after which the
session will be considered expired if no one use it.
+ *
+ * @param timeUnit Timeunit to convert timeout to.
+ * @return Default session timeout in the given timeunit.
+ */
+ long defaultIdleSessionTimeout(TimeUnit timeUnit);
Review Comment:
```suggestion
/**
* Return the idle timeout.
*
* <p>The maximum idle time (that is, time when no requests are
performed on behalf the session) in milliseconds, after which this
* session will be considered expired.
*
* @param timeUnit Timeunit to convert timeout to.
* @return Default session timeout in the given timeunit.
*/
long idleTimeout(TimeUnit timeUnit);
```
##########
modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlCursorCloseRequest.java:
##########
@@ -37,8 +36,8 @@ public static CompletableFuture<Void>
process(ClientMessageUnpacker in, ClientRe
throws IgniteInternalCheckedException {
long resourceId = in.unpackLong();
- AsyncResultSet asyncResultSet =
resources.remove(resourceId).get(AsyncResultSet.class);
+ var asyncResultSet =
resources.remove(resourceId).get(ClientSqlResultSet.class);
Review Comment:
`var` is not allowed in this case. Please see
https://cwiki.apache.org/confluence/display/IGNITE/Java+Code+Style+Guide#JavaCodeStyleGuide-3Usingvarkeyword
##########
modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/session/SessionManager.java:
##########
@@ -21,31 +21,65 @@
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
+import org.apache.ignite.internal.logger.IgniteLogger;
+import org.apache.ignite.internal.logger.Loggers;
import org.apache.ignite.internal.sql.engine.CurrentTimeProvider;
+import org.apache.ignite.internal.sql.engine.exec.LifecycleAware;
import org.apache.ignite.internal.sql.engine.property.PropertiesHolder;
+import org.apache.ignite.internal.thread.IgniteThread;
+import org.apache.ignite.internal.util.worker.IgniteWorker;
import org.jetbrains.annotations.Nullable;
/**
* A manager of a server side sql sessions.
*/
-public class SessionManager {
+public class SessionManager implements LifecycleAware {
+ private static final IgniteLogger LOG =
Loggers.forClass(SessionManager.class);
+
+ /** Active sessions. */
private final Map<SessionId, Session> activeSessions = new
ConcurrentHashMap<>();
+
private final CurrentTimeProvider timeProvider;
+ /** session expiration worker. */
+ private final IgniteWorker expirationWorker;
+
+ private final AtomicBoolean startedFlag = new AtomicBoolean(false);
+
/**
* Constructor.
*
+ * @param igniteInstanceName String igniteInstanceName
Review Comment:
```suggestion
* @param igniteInstanceName The name of the current node.
```
##########
modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/api/SessionImpl.java:
##########
@@ -70,24 +70,29 @@ public class SessionImpl implements Session {
private final int pageSize;
+ private final long sessionTimeout;
+
private final PropertiesHolder props;
/**
* Constructor.
*
* @param qryProc Query processor.
* @param pageSize Query fetch page size.
+ * @param sessionTimeoutMs Session timeout in milliseconds
Review Comment:
```suggestion
* @param sessionTimeoutMs Session timeout in milliseconds.
```
##########
modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/session/SessionManager.java:
##########
@@ -21,31 +21,65 @@
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
+import org.apache.ignite.internal.logger.IgniteLogger;
+import org.apache.ignite.internal.logger.Loggers;
import org.apache.ignite.internal.sql.engine.CurrentTimeProvider;
+import org.apache.ignite.internal.sql.engine.exec.LifecycleAware;
import org.apache.ignite.internal.sql.engine.property.PropertiesHolder;
+import org.apache.ignite.internal.thread.IgniteThread;
+import org.apache.ignite.internal.util.worker.IgniteWorker;
import org.jetbrains.annotations.Nullable;
/**
* A manager of a server side sql sessions.
*/
-public class SessionManager {
+public class SessionManager implements LifecycleAware {
+ private static final IgniteLogger LOG =
Loggers.forClass(SessionManager.class);
+
+ /** Active sessions. */
private final Map<SessionId, Session> activeSessions = new
ConcurrentHashMap<>();
+
private final CurrentTimeProvider timeProvider;
+ /** session expiration worker. */
Review Comment:
```suggestion
/** Session expiration worker. */
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]