anchor.diff:          // All other exceptions will be handled by the caller; however,
           // any exception thrown by a method other than commit() needs
           // to do a rollback to avoid leaking the transaction state.
  -        if(mgr.exists()) {
  -          mgr.rollback();
  +        if(txManager.exists()) {
  +          txManager.rollback();
           }       
         }
       
  
positive.code:     // interfered with the transaction, or the server is gone.
      // Any exception thrown by a method other than commit() needs
      // to do a rollback to avoid leaking the transaction state.
      if(mgr.exists()) {
          mgr.rollback();
      }       
  }
  ```
  
negative.code:     Region<ProductId, Integer> inventoryRegion = rfc.getDataSet();
  
      CacheTransactionManager 
          txManager = context.getCache().getCacheTransactionManager();
  
      // single argument will be a ProductId and a quantity
      ProductRequest request = (ProductRequest) rfc.getArguments();
      ProductId productRequested = request.getProductId();
      Integer qtyRequested = request.getQuantity();
   
      boolean success = false;
  
      do {
        boolean commitConflict = false;
        try {
          txManager.begin();
  
          Integer qtyAvailable = inventoryRegion.get(productRequested);
          if (qtyAvailable >= qtyRequested) {
            // enough inventory is available, so process request
            Integer remaining = qtyAvailable - qtyRequested;
            inventoryRegion.put(productRequested, remaining);
            txManager.commit();
            success = true;
          } 
  
        } catch (CommitConflictException conflict) {
          // retry transaction, as another request on this same key succeeded,
          // so this transaction attempt failed
  