void setLocalFilterInfo(InternalRegion internalRegion, FilterRoutingInfo filterRoutingInfo,
      EntryEventImpl retVal) {
    FilterRoutingInfo.FilterInfo localRouting = null;
    if (filterRoutingInfo != null) {
      // On tx host hosting the primary bucket, the filter routing is null now as it is
      // calculated after tx is applied to cache.
      // This can only occur on node hosting secondary bucket. Should use the routing
      // computed on remote primary.
      localRouting = filterRoutingInfo.getFilterInfo(internalRegion.getMyId());
      if (localRouting != null) {
        retVal.setLocalFilterInfo(localRouting);
      }
    }
    if (TxCallbackEventFactoryImpl.logger.isTraceEnabled()) {
      TxCallbackEventFactoryImpl.logger.trace(
          "createCBEvent filterRouting={} local routing={}", filterRoutingInfo, localRouting);
    }
  }
create a callback event for applying a transactional change to the local cache
geode-core/src/main/java/org/apache/geode/internal/cache/TxCallbackEventFactoryImpl.java