Hi Vino, Thank you for your response and provided links. So just to clarify and small follow up.
1. Methods will be called only by one thread right? 2. The links you provided are tackling a case when we got a "fast stream" element before we received broadcast stream element. In my case we had Broadcast element first, before we got any "fast stream" element. Because open method was not called (I've observed it will be called only before first processElement method call, so before processing the first "fast stream" element) we don't have the state descriptor which would be initialized in open method. So we actually cannot "store/process" this broadcast element in our broadcast state. @Override public void open(Configuration parameters) throws Exception { super.open(parameters); processingRulesDesc = new MapStateDescriptor<>( "RulesBroadcastState", Types.VOID, TypeInformation.of(new TypeHint<ProcessingRule>() { })); } In this case, bcState will be null since open method was not yet called. public void processBroadcastElement(ProcessingRule rule, Context ctx, Collector<EvaluatedTransaction> out) throws Exception { // store the new pattern by updating the broadcast state BroadcastState<Void, ProcessingRule> bcState = ctx.getBroadcastState(processingRulesDesc); bcState.put(null, rule); } -- Sent from: http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/