@Test
  public void test037Bug39526part1() throws CacheException {
    final String name = getName();

    // Create the cache servers with distributed, empty region
    logger.info("before create server");
    vm0.invoke("Create Cache Server", () -> {
      RegionFactory<Object, Object> factory = getCache().createRegionFactory();
      factory.setScope(Scope.DISTRIBUTED_ACK);
      factory.setDataPolicy(DataPolicy.EMPTY);
      factory.setConcurrencyChecksEnabled(false);
      createRegion(name, factory);
      startBridgeServer(0);
    });

    // Create cache server client
    final String host0 = NetworkUtils.getServerHostName();
    final int vm0Port = vm0.invoke(ConnectionPoolDUnitTest::getCacheServerPort);
    logger.info("before create client");
    vm1.invoke("Create Cache Server Client", () -> {
      getLonerSystem();
      // create the region
      RegionFactory<Object, Object> factory = getCache().createRegionFactory();
      factory.setScope(Scope.LOCAL);
      factory.setConcurrencyChecksEnabled(false);
      // create bridge writer
      configureConnectionPool(factory, host0, new int[] {vm0Port}, true, -1, -1,
          null);
      createRegion(name, factory);
      Region<Object, Object> region = getRootRegion().getSubregion(name);
      region.registerInterestRegex(".*");
    });

    // now do a tx in the server
    logger.info("before doServerTx");
    vm0.invoke("doServerTx", () -> {
      Region<Object, Object> region = getRootRegion().getSubregion(name);
      Cache cache1 = getCache();
      CacheTransactionManager txMgr = cache1.getCacheTransactionManager();
      txMgr.begin();
      try {
        region.put("k1", "v1");
        region.put("k2", "v2");
        region.put("k3", "v3");
      } finally {
        txMgr.commit();
      }
    });

    // now verify that the client receives the committed data
    logger.info("before confirmCommitOnClient");
    vm1.invoke("Validate Cache Server Client", () -> {
      final Region<Object, Object> region = getRootRegion().getSubregion(name);
      // wait for a while for us to have the correct number of entries
      await().alias("waiting for region to be size 3").until(() -> region.size() == 3);
      assertThat(region.containsKey("k1")).isTrue();
      assertThat(region.containsKey("k2")).isTrue();
      assertThat(region.containsKey("k3")).isTrue();
      assertThat("v1").isEqualTo(region.getEntry("k1").getValue());
      assertThat("v2").isEqualTo(region.getEntry("k2").getValue());
      assertThat("v3").isEqualTo(region.getEntry("k3").getValue());
    });
  }
Make sure a tx done in a server on an empty region gets sent to clients who have registered
interest.
geode-core/src/distributedTest/java/org/apache/geode/cache/ConnectionPoolDUnitTest.java