@Override protected WindowLifecycleListener<Tuple> newWindowLifecycleListener() { final WindowLifecycleListener<Tuple> parentListener = super.newWindowLifecycleListener(); return new WindowLifecycleListener<Tuple>() { @Override public void onExpiry(List<Tuple> events) { parentListener.onExpiry(events); } @Override public void onActivation(List<Tuple> events, List<Tuple> newEvents, List<Tuple> expired, Long timestamp) { if (isRecovering()) { String msg = String.format("Unexpected activation with events %s, newEvents %s, expired %s in recovering state. " + "recoveryStates %s ", events, newEvents, expired, recoveryStates); LOG.error(msg); throw new IllegalStateException(msg); } else { parentListener.onActivation(events, newEvents, expired, timestamp); updateWindowState(expired, newEvents); } } }; }
protected void doPrepare(Map<String, Object> topoConf, TopologyContext context, OutputCollector collector, Collection<Event<Tuple>> queue, boolean stateful) { Objects.requireNonNull(topoConf); Objects.requireNonNull(context); Objects.requireNonNull(collector); Objects.requireNonNull(queue); this.windowedOutputCollector = new WindowedOutputCollector(collector); bolt.prepare(topoConf, context, windowedOutputCollector); this.listener = newWindowLifecycleListener(); this.windowManager = initWindowManager(listener, topoConf, context, queue, stateful); start(); LOG.info("Initialized window manager {} ", windowManager); }
@Override protected WindowLifecycleListener<Tuple> newWindowLifecycleListener() { final WindowLifecycleListener<Tuple> parentListener = super.newWindowLifecycleListener(); return new WindowLifecycleListener<Tuple>() { @Override public void onExpiry(List<Tuple> events) { parentListener.onExpiry(events); } @Override public void onActivation(List<Tuple> events, List<Tuple> newEvents, List<Tuple> expired) { if (isRecovering()) { String msg = String.format("Unexpected activation with events %s, newEvents %s, expired %s in recovering state. " + "recoveryStates %s ", events, newEvents, expired, recoveryStates); LOG.error(msg); throw new IllegalStateException(msg); } else { parentListener.onActivation(events, newEvents, expired); updateWindowState(expired, newEvents); } } }; }
@Override public void prepare(Map stormConf, TopologyContext context, OutputCollector collector) { this.windowedOutputCollector = new WindowedOutputCollector(collector); bolt.prepare(stormConf, context, windowedOutputCollector); this.listener = newWindowLifecycleListener(); this.windowManager = initWindowManager(listener, stormConf, context); start(); LOG.info("Initialized window manager {} ", windowManager); }