in asterix-bad/src/main/java/org/apache/asterix/bad/lang/statement/CreateBrokerStatement.java [94:118]
public void handle(IHyracksClientConnection hcc, IStatementExecutor statementExecutor,
IRequestParameters requestParameters, MetadataProvider metadataProvider, int resultSetId)
throws HyracksDataException, AlgebricksException {
DataverseName dataverse = statementExecutor.getActiveDataverseName(dataverseName);
MetadataTransactionContext mdTxnCtx = null;
try {
mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
metadataProvider.setMetadataTxnContext(mdTxnCtx);
Broker broker = BADLangExtension.getBroker(mdTxnCtx, dataverse, brokerName.getValue());
if (broker != null) {
throw new AlgebricksException("A broker with this name " + brokerName + " already exists.");
}
broker = new Broker(dataverse, brokerName.getValue(), endPointName, brokerType);
MetadataManager.INSTANCE.addEntity(mdTxnCtx, broker);
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
} catch (Exception e) {
if (mdTxnCtx != null) {
QueryTranslator.abort(e, e, mdTxnCtx);
}
LOGGER.log(Level.WARNING, "Failed creating a broker", e);
throw HyracksDataException.create(e);
} finally {
metadataProvider.getLocks().unlock();
}
}