public NodeStatus getStatus() { state.state = NodeState.valueOf(getDriver().getState().toString()); return state; }
public void loadConfig(FlumeConfigData cfg) throws IOException, RuntimeException, FlumeSpecException { // got a newer configuration LOG.debug("Attempt to load config " + cfg); EventSink newSnk = null; EventSource newSrc = null; try { String errMsg = null; if (cfg.sinkConfig == null || cfg.sinkConfig.length() == 0) { errMsg = this.getName() + " - empty sink"; } if (cfg.sourceConfig == null || cfg.sourceConfig.length() == 0) { errMsg = this.getName() + " - empty source"; } if (errMsg != null) { LOG.info(errMsg); return; // Do nothing. } newSnk = FlumeBuilder.buildSink(ctx, cfg.sinkConfig); newSrc = FlumeBuilder.buildSource(ctx, cfg.sourceConfig); // TODO (jon) ERROR isn't quite right here -- the connection is in ERROR // but the previous connection is ok. Need to just add states to the // connections, and have each node maintain a list of connections. // This error conditions should not occur. One way we could have this // error is if the node does not have all plugins that the master has // installed. The master could then accept a particular source/sink but // the node would fail when attempting to instantiate it. if (newSnk == null) { LOG.error("failed to create sink config: " + cfg.sinkConfig); state.state = NodeState.ERROR; return; } if (newSrc == null) { LOG.error("failed to create sink config: " + cfg.sourceConfig); state.state = NodeState.ERROR; return; } } catch (RuntimeException e) { LOG.error("Runtime ex: " + new File(".").getAbsolutePath() + " " + cfg, e); state.state = NodeState.ERROR; throw e; } catch (FlumeSpecException e) { LOG.error("FlumeSpecExn : " + new File(".").getAbsolutePath() + " " + cfg, e); state.state = NodeState.ERROR; throw e; } try { loadNodeDriver(newSrc, newSnk); // We have successfully opened the source and sinks for the config. We can // mark this as the last good / successful config. It does not mean that // this configuration will open without errors! this.lastGoodCfg = cfg; LOG.info("Node config successfully set to " + cfg); } catch (InterruptedException e) { // TODO figure out what to do on interruption LOG.error("Load Config interrupted", e); } }