@Test
  public void testBug43081() throws Exception {
    createRegion(false, 0, null);
    Context ctx = getCache().getJNDIContext();
    UserTransaction tx = (UserTransaction) ctx.lookup("java:/UserTransaction");
    assertThat(Status.STATUS_NO_TRANSACTION).isEqualTo(tx.getStatus());
    Region pr = getCache().getRegion(CUSTOMER);
    Region rr = getCache().getRegion(D_REFERENCE);
    // test all ops
    for (int i = 0; i < 6; i++) {
      pr.put(new CustId(1), new Customer("name1", "address1"));
      rr.put("key1", "value1");
      tx.begin();
      switch (i) {
        case 0:
          pr.get(new CustId(1));
          rr.get("key1");
          break;
        case 1:
          pr.put(new CustId(1), new Customer("nameNew", "addressNew"));
          rr.put("key1", "valueNew");
          break;
        case 2:
          pr.invalidate(new CustId(1));
          rr.invalidate("key1");
          break;
        case 3:
          pr.destroy(new CustId(1));
          rr.destroy("key1");
          break;
        case 4:
          Map m = new HashMap();
          m.put(new CustId(1), new Customer("nameNew", "addressNew"));
          pr.putAll(m);
          m = new HashMap();
          m.put("key1", "valueNew");
          rr.putAll(m);
          break;
        case 5:
          Set s = new HashSet();
          s.add(new CustId(1));
          pr.getAll(s);
          s = new HashSet();
          s.add("key1");
          pr.getAll(s);
          break;
        case 6:
          pr.getEntry(new CustId(1));
          rr.getEntry("key1");
          break;
        default:
          break;
      }

      // Putting a string key causes this, the partition resolver
      // doesn't handle it.
      IgnoredException.addIgnoredException("IllegalStateException");
      assertThat(Status.STATUS_ACTIVE).isEqualTo(tx.getStatus());
      final CountDownLatch latch = new CountDownLatch(1);
      Thread t = new Thread(() -> {
        Context ctx1 = getCache().getJNDIContext();
        try {
          UserTransaction tx1 = (UserTransaction) ctx1.lookup("java:/UserTransaction");
        } catch (NamingException e) {
          e.printStackTrace();
        }
        Region pr1 = getCache().getRegion(CUSTOMER);
        Region rr1 = getCache().getRegion(D_REFERENCE);
        pr1.put(new CustId(1), new Customer("name11", "address11"));
        rr1.put("key1", "value1");
        latch.countDown();
      });
      t.start();
      latch.await();
      assertThatThrownBy(() -> {
        pr.put(new CustId(1), new Customer("name11", "address11"));
        tx.commit();
      }).isInstanceOf(RollbackException.class);
    }
  }
disabled because rather than throwing an exception, getAll catches all exceptions and logs a
warning message
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/RemoteTransactionDUnitTest.java