[
https://issues.apache.org/jira/browse/DRILL-4286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16252593#comment-16252593
]
ASF GitHub Bot commented on DRILL-4286:
---------------------------------------
Github user paul-rogers commented on a diff in the pull request:
https://github.com/apache/drill/pull/921#discussion_r150981136
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/work/WorkManager.java ---
@@ -165,32 +169,59 @@ public DrillbitContext getContext() {
*
* <p>This is intended to be used by {@link
org.apache.drill.exec.server.Drillbit#close()}.</p>
*/
- public void waitToExit() {
+ public void waitToExit(Drillbit bit, boolean forcefulShutdown) {
synchronized(this) {
- if (queries.isEmpty() && runningFragments.isEmpty()) {
+ numOfRunningQueries = queries.size();
+ numOfRunningFragments = runningFragments.size();
+ if ( queries.isEmpty() && runningFragments.isEmpty()) {
return;
}
-
+ logger.info("Draining " + queries +" queries and "+
runningFragments+" fragments.");
exitLatch = new ExtendedLatch();
}
-
- // Wait for at most 5 seconds or until the latch is released.
- exitLatch.awaitUninterruptibly(5000);
+ // Wait uninterruptibly until all the queries and running fragments on
that drillbit goes down
+ // to zero
+ if( forcefulShutdown ) {
+ exitLatch.awaitUninterruptibly(5000);
+ } else {
+ exitLatch.awaitUninterruptibly();
+ }
}
/**
* If it is safe to exit, and the exitLatch is in use, signals it so
that waitToExit() will
- * unblock.
+ * unblock. Logs the number of pending fragments and queries that are
running on that
+ * drillbit to track the progress of shutdown process.
*/
private void indicateIfSafeToExit() {
synchronized(this) {
if (exitLatch != null) {
+ logger.info("Waiting for "+ queries.size() +" queries to complete
before shutting down");
+ logger.info("Waiting for "+ runningFragments.size() +" running
fragments to complete before shutting down");
+ if(runningFragments.size() > numOfRunningFragments||
queries.size() > numOfRunningQueries) {
+ logger.info("New Fragments or queries are added while drillbit
is Shutting down");
+ }
if (queries.isEmpty() && runningFragments.isEmpty()) {
+ // Both Queries and Running fragments are empty.
+ // So its safe for the drillbit to exit.
--- End diff --
As it turns out @ilooner is making significant changes to this area. Can
you two coordinate?
We just need the @dvjyothsna is making to work long enough for the @ilooner
changes replace them. But, Tim's changes need to support this new graceful
shutdown model.
> Have an ability to put server in quiescent mode of operation
> ------------------------------------------------------------
>
> Key: DRILL-4286
> URL: https://issues.apache.org/jira/browse/DRILL-4286
> Project: Apache Drill
> Issue Type: New Feature
> Components: Execution - Flow
> Reporter: Victoria Markman
> Assignee: Venkata Jyothsna Donapati
>
> I think drill will benefit from mode of operation that is called "quiescent"
> in some databases.
> From IBM Informix server documentation:
> {code}
> Change gracefully from online to quiescent mode
> Take the database server gracefully from online mode to quiescent mode to
> restrict access to the database server without interrupting current
> processing. After you perform this task, the database server sets a flag that
> prevents new sessions from gaining access to the database server. The current
> sessions are allowed to finish processing. After you initiate the mode
> change, it cannot be canceled. During the mode change from online to
> quiescent, the database server is considered to be in Shutdown mode.
> {code}
> This is different from shutdown, when processes are terminated.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)