public FireDepartmentMetrics getMetrics(String datasource) { List<FireChief> chiefs = this.chiefs.get(datasource); if (chiefs == null) { return null; } FireDepartmentMetrics snapshot = null; for (FireChief chief : chiefs) { if (snapshot == null) { snapshot = chief.getMetrics().snapshot(); } else { snapshot.merge(chief.getMetrics()); } } return snapshot; }
@LifecycleStart public void start() throws IOException { for (final FireDepartment fireDepartment : fireDepartments) { DataSchema schema = fireDepartment.getDataSchema(); final FireChief chief = new FireChief(fireDepartment); List<FireChief> chiefs = this.chiefs.get(schema.getDataSource()); if (chiefs == null) { chiefs = new ArrayList<FireChief>(); this.chiefs.put(schema.getDataSource(), chiefs); } chiefs.add(chief); chief.setName( String.format( "chief-%s[%s]", schema.getDataSource(), fireDepartment.getTuningConfig().getShardSpec().getPartitionNum())); chief.setDaemon(true); chief.start(); } }