Program: 50040
Project: 50040
Buggy source:
public Object get(String name,Object key,long timeout){
  this.keyObject=key;
  final ThreadContext tc=ThreadContext.get();
  TransactionImpl txn=tc.getCallContext().getTransaction();
  if (txn != null && txn.getStatus() == Transaction.TXN_STATUS_ACTIVE) {
    if (txn.has(name,key)) {
      return txn.get(name,key);
    }
  }
  final CMap cMap=maps.get(name);
  if (cMap != null) {
    nearCache=cMap.mapNearCache;
    if (nearCache != null) {
      Object value=nearCache.get(key);
      if (value != null) {
        return value;
      }
    }
    final Data dataKey=toData(key);
    Record ownedRecord=cMap.getOwnedRecord(dataKey);
    if (ownedRecord != null && ownedRecord.isActive() && ownedRecord.isValid()) {
      long version=ownedRecord.getVersion();
      Object result=null;
      if (tc.isClient()) {
        final Data valueData=ownedRecord.getValueData();
        if (valueData != null && valueData.size() > 0) {
          result=valueData;
        }
      }
 else {
        final Object value=ownedRecord.getValue();
        if (value != null) {
          result=value;
        }
      }
      if (result != null && ownedRecord.getVersion() == version) {
        ownedRecord.setLastAccessed();
        return result;
      }
    }
    if (cMap.readBackupData) {
      final Record record=cMap.mapRecords.get(dataKey);
      if (record != null && cMap.isBackup(record) && record.isActive() && record.isValid()) {
        final Data valueData=record.getValueData();
        if (valueData != null && valueData.size() > 0) {
          return tc.isClient() ? valueData : toObject(valueData);
        }
      }
    }
  }
  Object value=objectCall(CONCURRENT_MAP_GET,name,key,null,timeout,-1);
  if (value instanceof AddressAwareException) {
    rethrowException(request.operation,(AddressAwareException)value);
  }
  return value;
}

Fixed version (ground truth):
public Object get(String name,Object key,long timeout){
  this.keyObject=key;
  final ThreadContext tc=ThreadContext.get();
  TransactionImpl txn=tc.getCallContext().getTransaction();
  if (txn != null && txn.getStatus() == Transaction.TXN_STATUS_ACTIVE) {
    if (txn.has(name,key)) {
      return txn.get(name,key);
    }
  }
  final CMap cMap=maps.get(name);
  if (cMap != null) {
    MapNearCache nearCache=cMap.mapNearCache;
    if (nearCache != null) {
      Object value=nearCache.get(key);
      if (value != null) {
        return value;
      }
    }
    final Data dataKey=toData(key);
    Record ownedRecord=cMap.getOwnedRecord(dataKey);
    if (ownedRecord != null && ownedRecord.isActive() && ownedRecord.isValid()) {
      long version=ownedRecord.getVersion();
      Object result=null;
      if (tc.isClient()) {
        final Data valueData=ownedRecord.getValueData();
        if (valueData != null && valueData.size() > 0) {
          result=valueData;
        }
      }
 else {
        final Object value=ownedRecord.getValue();
        if (value != null) {
          result=value;
        }
      }
      if (result != null && ownedRecord.getVersion() == version) {
        ownedRecord.setLastAccessed();
        return result;
      }
    }
    if (cMap.readBackupData) {
      final Record record=cMap.mapRecords.get(dataKey);
      if (record != null && cMap.isBackup(record) && record.isActive() && record.isValid()) {
        final Data valueData=record.getValueData();
        if (valueData != null && valueData.size() > 0) {
          return tc.isClient() ? valueData : toObject(valueData);
        }
      }
    }
  }
  Object value=objectCall(CONCURRENT_MAP_GET,name,key,null,timeout,-1);
  if (value instanceof AddressAwareException) {
    rethrowException(request.operation,(AddressAwareException)value);
  }
  return value;
}