Github user arina-ielchiieva commented on a diff in the pull request: https://github.com/apache/drill/pull/921#discussion_r151110780 --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/DrillRoot.java --- @@ -58,13 +63,170 @@ @Inject UserAuthEnabled authEnabled; @Inject WorkManager work; @Inject SecurityContext sc; + @Inject Drillbit drillbit; @GET @Produces(MediaType.TEXT_HTML) public Viewable getClusterInfo() { return ViewableWithPermissions.create(authEnabled.get(), "/rest/index.ftl", sc, getClusterInfoJSON()); } + + @SuppressWarnings("resource") + @GET + @Path("/state") + @Produces(MediaType.APPLICATION_JSON) + public Response getDrillbitStatus(){ + Collection<DrillbitInfo> drillbits = getClusterInfoJSON().getDrillbits(); + Map<String, String> drillStatusMap = new HashMap<String ,String>(); + for (DrillbitInfo drillbit : drillbits) { + drillStatusMap.put(drillbit.getAddress()+"-"+drillbit.getUserPort(),drillbit.getState()); + } + return Response.ok() + .entity(drillStatusMap) + .header("Access-Control-Allow-Origin", "*") + .header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT") + .header("Access-Control-Allow-Credentials","true") + .allow("OPTIONS").build(); + } + + @SuppressWarnings("resource") + @GET + @Path("/graceperiod") + @Produces(MediaType.APPLICATION_JSON) + public Map<String, Integer> getGracePeriod(){ + + final DrillConfig config = work.getContext().getConfig(); + final int gracePeriod = config.getInt(ExecConstants.GRACE_PERIOD); + Map<String, Integer> gracePeriodMap = new HashMap<String, Integer>(); + gracePeriodMap.put("graceperiod",gracePeriod); + return gracePeriodMap; + } + + @SuppressWarnings("resource") + @GET + @Path("/queriesCount") + @Produces(MediaType.APPLICATION_JSON) + public Response getRemainingQueries() { + Map<String, Integer> queriesInfo = new HashMap<String, Integer>(); + queriesInfo = work.getRemainingQueries(); + return Response.ok() + .entity(queriesInfo) + .header("Access-Control-Allow-Origin", "*") + .header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT") + .header("Access-Control-Allow-Credentials","true") + .allow("OPTIONS").build(); + } + + @SuppressWarnings("resource") + @POST + @Path("/graceful_shutdown") + @Produces(MediaType.APPLICATION_JSON) + public Response shutdownDrillbit() throws Exception { + Map<String, String> shutdownInfo = new HashMap<String, String>(); + try { + new Thread(new Runnable() { + public void run() { + try { + drillbit.close(); + } catch (Exception e) { + e.printStackTrace(); --- End diff -- There are at least 7 usages in code all should be removed.
---