[
https://issues.apache.org/jira/browse/DRILL-4286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16238257#comment-16238257
]
ASF GitHub Bot commented on DRILL-4286:
---------------------------------------
Github user bitblender commented on a diff in the pull request:
https://github.com/apache/drill/pull/921#discussion_r148171637
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/coord/local/LocalClusterCoordinator.java
---
@@ -85,13 +88,62 @@ public void unregister(final RegistrationHandle handle)
{
endpoints.remove(handle);
}
+ /**
+ * Update drillbit endpoint state. Drillbit advertises its
+ * state. State information is used during planning and initial
+ * client connection phases.
+ */
+ @Override
+ public RegistrationHandle update(RegistrationHandle handle, State state)
{
+ DrillbitEndpoint endpoint = handle.getEndPoint();
+ endpoint = endpoint.toBuilder().setState(state).build();
+ handle.setEndPoint(endpoint);
+ endpoints.put(handle,endpoint);
+ return handle;
+ }
+
@Override
public Collection<DrillbitEndpoint> getAvailableEndpoints() {
return endpoints.values();
}
+ /**
+ * Get a collection of ONLINE Drillbit endpoints by excluding the
drillbits
+ * that are in QUIESCENT state (drillbits shutting down). Primarily used
by the planner
+ * to plan queries only on ONLINE drillbits and used by the client
during initial connection
+ * phase to connect to a drillbit (foreman)
+ * @return A collection of ONLINE endpoints
+ */
+ @Override
+ public Collection<DrillbitEndpoint> getOnlineEndPoints() {
+ Collection<DrillbitEndpoint> runningEndPoints = new ArrayList<>();
+ for (DrillbitEndpoint endpoint: endpoints.values()){
+ if(!endpoint.hasState() || endpoint.getState().equals(State.ONLINE))
{
+ runningEndPoints.add(endpoint);
+ }
+ }
+ return runningEndPoints;
+ }
+
private class Handle implements RegistrationHandle {
private final UUID id = UUID.randomUUID();
+ private DrillbitEndpoint drillbitEndpoint;
+
+ /**
+ * Get the drillbit endpoint associated with the registration handle
+ * @return drillbit endpoint
+ */
+ public DrillbitEndpoint getEndPoint() {
+ return drillbitEndpoint;
+ }
+
+ public void setEndPoint( DrillbitEndpoint endpoint) {
--- End diff --
spacing
> 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
> Priority: Major
>
> 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)