protected void recover(ICcApplicationContext appCtx) throws HyracksDataException { try { LOGGER.info("Starting Global Recovery"); MetadataManager.INSTANCE.init(); MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction(); mdTxnCtx = doRecovery(appCtx, mdTxnCtx); MetadataManager.INSTANCE.commitTransaction(mdTxnCtx); recoveryCompleted = true; recovering = false; LOGGER.info("Global Recovery Completed. Refreshing cluster state..."); appCtx.getClusterStateManager().refreshState(); } catch (Exception e) { throw HyracksDataException.create(e); } }
MetadataManager.INSTANCE.init(); MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
public void compile(boolean optimize, boolean printRewrittenExpressions, boolean printLogicalPlan, boolean printOptimizedPlan, boolean printPhysicalOpsOnly, boolean generateBinaryRuntime, boolean printJob, PlanFormat pformat) throws Exception { queryJobSpec = null; dmlJobs = null; if (queryText == null) { return; } int ch; StringBuilder builder = new StringBuilder(); while ((ch = queryText.read()) != -1) { builder.append((char) ch); } IParser parser = parserFactory.createParser(builder.toString()); List<Statement> statements = parser.parse(); MetadataManager.INSTANCE.init(); SessionConfig conf = new SessionConfig(OutputFormat.ADM, optimize, true, generateBinaryRuntime, pformat); conf.setOOBData(false, printRewrittenExpressions, printLogicalPlan, printOptimizedPlan, printJob); if (printPhysicalOpsOnly) { conf.set(SessionConfig.FORMAT_ONLY_PHYSICAL_OPS, true); } SessionOutput output = new SessionOutput(conf, writer); IStatementExecutor translator = statementExecutorFactory.create(appCtx, statements, output, compilationProvider, storageComponentProvider); final IRequestParameters requestParameters = new RequestParameters(null, new ResultProperties(IStatementExecutor.ResultDelivery.IMMEDIATE), new IStatementExecutor.Stats(), null, null, null, statementParams, true); translator.compileAndExecute(hcc, null, requestParameters); writer.flush(); }
private void doHandle(IServletResponse response, String query, SessionOutput sessionOutput, ResultDelivery resultDelivery) throws JsonProcessingException { try { response.setStatus(HttpResponseStatus.OK); IHyracksClientConnection hcc = (IHyracksClientConnection) ctx.get(HYRACKS_CONNECTION_ATTR); IParser parser = parserFactory.createParser(query); List<Statement> statements = parser.parse(); validate(statements); MetadataManager.INSTANCE.init(); IStatementExecutor translator = statementExecutorFactory.create(appCtx, statements, sessionOutput, compilationProvider, componentProvider); final IResultSet resultSet = ServletUtil.getResultSet(hcc, appCtx, ctx); final IRequestParameters requestParameters = new RequestParameters(resultSet, new ResultProperties(resultDelivery), new IStatementExecutor.Stats(), null, null, null, null, true); translator.compileAndExecute(hcc, null, requestParameters); } catch (AsterixException | TokenMgrError | org.apache.asterix.aqlplus.parser.TokenMgrError pe) { response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR); GlobalConfig.ASTERIX_LOGGER.log(Level.ERROR, pe.getMessage(), pe); String errorMessage = ResultUtil.buildParseExceptionMessage(pe, query); ObjectNode errorResp = ResultUtil.getErrorResponse(2, errorMessage, "", ResultUtil.extractFullStackTrace(pe)); sessionOutput.out().write(OBJECT_MAPPER.writeValueAsString(errorResp)); } catch (Exception e) { GlobalConfig.ASTERIX_LOGGER.log(Level.ERROR, e.getMessage(), e); response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR); ResultUtil.apiErrorHandler(sessionOutput.out(), e); } }
protected void executeStatement(String statementsText, SessionOutput sessionOutput, ResultProperties resultProperties, Stats stats, QueryServiceRequestParameters param, RequestExecutionState execution, Map<String, String> optionalParameters, Map<String, byte[]> statementParameters) throws Exception { IClusterManagementWork.ClusterState clusterState = ((ICcApplicationContext) appCtx).getClusterStateManager().getState(); if (clusterState != IClusterManagementWork.ClusterState.ACTIVE) { // using a plain IllegalStateException here to get into the right catch clause for a 500 throw new IllegalStateException("Cannot execute request, cluster is " + clusterState); } IParser parser = compilationProvider.getParserFactory().createParser(statementsText); List<Statement> statements = parser.parse(); MetadataManager.INSTANCE.init(); IStatementExecutor translator = statementExecutorFactory.create((ICcApplicationContext) appCtx, statements, sessionOutput, compilationProvider, componentProvider); execution.start(); Map<String, IAObject> stmtParams = org.apache.asterix.app.translator.RequestParameters.deserializeParameterValues(statementParameters); IRequestParameters requestParameters = new org.apache.asterix.app.translator.RequestParameters(getResultSet(), resultProperties, stats, null, param.getClientContextID(), optionalParameters, stmtParams, param.isMultiStatement()); translator.compileAndExecute(getHyracksClientConnection(), queryCtx, requestParameters); execution.end(); printExecutionPlans(sessionOutput, translator.getExecutionPlans()); }
appendHandle, appendStatus); IStatementExecutor.ResultMetadata outMetadata = new IStatementExecutor.ResultMetadata(); MetadataManager.INSTANCE.init(); IStatementExecutor translator = statementExecutorFactory.create(ccAppCtx, statements, sessionOutput, compilationProvider, storageComponentProvider);
isSet(printLogicalPlanParam), isSet(printOptimizedLogicalPlanParam), isSet(printJob)); SessionOutput sessionOutput = new SessionOutput(sessionConfig, out); MetadataManager.INSTANCE.init(); IStatementExecutor translator = statementExectorFactory.create(appCtx, statements, sessionOutput, compilationProvider, componentProvider);