private void updateTopologyResources(String topoId, Map<String, Map<String, Double>> resourceOverrides, Subject subject) throws AuthorizationException, IOException, KeyNotFoundException { StormTopology topo = topoCache.readTopology(topoId, subject); topo = topo.deepCopy(); ResourceUtils.updateStormTopologyResources(topo, resourceOverrides); topoCache.updateTopology(topoId, subject, topo); }
private static StormTopology normalizeTopology(Map<String, Object> topoConf, StormTopology topology) throws InvalidTopologyException { StormTopology ret = topology.deepCopy(); for (Object comp : StormCommon.allComponents(ret).values()) { Map<String, Object> mergedConf = StormCommon.componentConf(comp); mergedConf.put(Config.TOPOLOGY_TASKS, ServerUtils.getComponentParallelism(topoConf, comp)); String jsonConf = JSONValue.toJSONString(mergedConf); StormCommon.getComponentCommon(comp).set_json_conf(jsonConf); } return ret; }
topology = topology.deepCopy(); //Don't modify the original
/** * Create a new topology to be tracked. * @param origTopo the original topology. * @param cluster a cluster that should have been launched with tracking enabled. */ public TrackedTopology(StormTopology origTopo, ILocalCluster cluster) { LOG.warn("CLUSTER {} - {}", cluster, cluster.getTrackedId()); this.cluster = cluster; lastSpoutCommit = new AtomicInteger(0); String id = cluster.getTrackedId(); topology = origTopo.deepCopy(); for (Bolt bolt : topology.get_bolts().values()) { IRichBolt obj = (IRichBolt) Thrift.deserializeComponentObject(bolt.get_bolt_object()); bolt.set_bolt_object(Thrift.serializeComponentObject(new BoltTracker(obj, id))); } for (SpoutSpec spout : topology.get_spouts().values()) { IRichSpout obj = (IRichSpout) Thrift.deserializeComponentObject(spout.get_spout_object()); spout.set_spout_object(Thrift.serializeComponentObject(new SpoutTracker(obj, id))); } }
protected StormTopology systemTopologyImpl(Map<String, Object> topoConf, StormTopology topology) throws InvalidTopologyException { validateBasic(topology); StormTopology ret = topology.deepCopy(); addAcker(topoConf, ret); if (hasEventLoggers(topoConf)) { addEventLogger(topoConf, ret); } addMetricComponents(topoConf, ret); addSystemComponents(topoConf, ret); addMetricStreams(ret); addSystemStreams(ret); validateStructure(ret); return ret; }