Github user sohami commented on a diff in the pull request: https://github.com/apache/drill/pull/993#discussion_r145565944 --- 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 -- Will fix the comment. Sorry for confusion.
---