@Test
  public void testEmptyNetLoad() throws CacheException {
    disconnectAllFromDS();

    final String name = getUniqueName() + "-ACK";
    final String objectName = "B";
    loaderInvoked = false;
    remoteLoaderInvoked = false;
    remoteLoaderInvokedCount = 0;
    vm0.invoke("Create ACK Region", () -> {
      loaderInvoked = false;
      remoteLoaderInvoked = false;
      remoteLoaderInvokedCount = 0;
      try {
        RegionFactory<Object, Object> factory = getCache().createRegionFactory();
        factory.setScope(Scope.DISTRIBUTED_ACK);

        Region<Object, Object> region = createRegion(name, factory);
        region.create(objectName, null);
      } catch (CacheException ex) {
        fail("While creating ACK region", ex);
      }
    });

    SerializableRunnable installLoader = new SerializableRunnable() {
      @Override
      public void run() {
        loaderInvoked = false;
        remoteLoaderInvoked = false;
        remoteLoaderInvokedCount = 0;
        try {
          RegionFactory<Object, Object> factory = getCache().createRegionFactory();
          factory.setScope(Scope.DISTRIBUTED_ACK);
          factory.setCacheLoader(new CacheLoader<Object, Object>() {
            @Override
            public Object load(LoaderHelper helper) {
              remoteLoaderInvoked = true;
              remoteLoaderInvokedCount++;
              return null;
            }

            @Override
            public void close() {

            }
          });
          createRegion(name, factory);
        } catch (CacheException ex) {
          fail("While creating ACK region", ex);
        }
      }
    };

    vm1.invoke("Create ACK Region", installLoader);
    vm2.invoke("Create ACK Region", installLoader);
    vm0.invoke("Get a value from remote loader", () -> {
      for (int i = 0; i < 1; i++) {
        try {
          Object result = getRootRegion().getSubregion(name).get(objectName);
          assertThat(result).isNull();
          assertThat(loaderInvoked).isFalse();

        } catch (CacheLoaderException | TimeoutException cle) {
          fail("While getting value for ACK region", cle);
        }
      }
    });

    // we only invoke one netLoad loader even when they return null.
    boolean xor = vmRemoteLoaderInvoked(vm1) ^ vmRemoteLoaderInvoked(vm2);
    assertThat(xor).describedAs(
        "vm1=" + vmRemoteLoaderInvoked(vm1) + " vm2=" + vmRemoteLoaderInvoked(vm2) + " vm1Count="
            + vmRemoteLoaderInvokedCount(vm1) + " vm2Count=" + vmRemoteLoaderInvokedCount(vm2))
        .isTrue();
    int total = vmRemoteLoaderInvokedCount(vm1) + vmRemoteLoaderInvokedCount(vm2);
    assertThat(total)
        .describedAs(
            "vm1=" + vmRemoteLoaderInvokedCount(vm1) + " vm2=" + vmRemoteLoaderInvokedCount(vm2))
        .isEqualTo(1);
  }
Confirm that a netLoad that returns null will NOT allow other netLoad methods to be called.
geode-core/src/distributedTest/java/org/apache/geode/cache30/SearchAndLoadDUnitTest.java