private void doCommitOtherVm() {
    VM vm = getOtherVm();
    vm.invoke(new CacheSerializableRunnable("create root") {
      @Override
      public void run2() throws CacheException {
        AttributesFactory af = new AttributesFactory();
        CacheListener cl1 = new CacheListenerAdapter() {
          @Override
          public void afterCreate(EntryEvent e) {
            assertEquals(callbackArg, e.getCallbackArgument());
          }
        };
        af.addCacheListener(cl1);
        af.setScope(Scope.DISTRIBUTED_ACK);
        Region r1 = createRootRegion("r1", af.create());
        Region r2 = r1.createSubregion("r2", af.create());
        Region r3 = r2.createSubregion("r3", af.create());
        CacheTransactionManager ctm = getCache().getCacheTransactionManager();
        TransactionListener tl1 = new TransactionListenerAdapter() {
          @Override
          public void afterCommit(TransactionEvent e) {
            assertEquals(6, e.getEvents().size());
            for (final org.apache.geode.cache.CacheEvent<?, ?> cacheEvent : e.getEvents()) {
              EntryEvent ee = (EntryEvent) cacheEvent;
              assertEquals(callbackArg, ee.getCallbackArgument());
              assertEquals(true, ee.isCallbackArgumentAvailable());
            }
          }
        };
        ctm.addListener(tl1);
        ctm.begin();
        r2.put("b", "value1", callbackArg);
        r3.put("c", "value2", callbackArg);
        r1.put("a", "value3", callbackArg);
        r1.put("a2", "value4", callbackArg);
        r3.put("c2", "value5", callbackArg);
        r2.put("b2", "value6", callbackArg);
        ctm.commit();
      }
    });
  }
Test the getCallbackArgument in light of bug 34075.

@since GemFire 5.0
geode-core/src/distributedTest/java/org/apache/geode/cache30/CallbackArgDUnitTest.java