Github user paul-rogers commented on a diff in the pull request:
https://github.com/apache/drill/pull/993#discussion_r144929150
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/DrillRestServer.java
---
@@ -204,9 +217,15 @@ public WebUserConnection provide() {
config.getLong(ExecConstants.HTTP_SESSION_MEMORY_RESERVATION),
config.getLong(ExecConstants.HTTP_SESSION_MEMORY_MAXIMUM));
+ // Create a dummy close future which is needed by Foreman only.
Foreman uses this future to add a close
+ // listener to known about channel close event from underlying
layer. We use this future to notify Foreman
+ // listeners when the Web connection between Web Client and
WebServer is closed. This will help Foreman to cancel
+ // all the running queries for this Web Client.
+ final ChannelPromise closeFuture = new DefaultChannelPromise(null,
executor);
+
// Create a WebSessionResource instance which owns the lifecycle
of all the session resources.
- // Set this instance as an attribute of HttpSession, since it will
be used until session is destroyed.
- webSessionResources = new WebSessionResources(sessionAllocator,
remoteAddress, drillUserSession);
+ // Set this instance as an attribute of HttpSession, since it will
be used until session is destroyed
+ webSessionResources = new WebSessionResources(sessionAllocator,
remoteAddress, drillUserSession, closeFuture);
--- End diff --
The code suggests we are using a *session*, not *connection* as mentioned
in the earlier comment.
---