Program: 49453
Project: 49453
Buggy source:
protected void backup(ClusterOperation operation){
  final int localBackupCount=backupCount;
  final int localAsyncBackupCount=asyncBackupCount;
  final int totalBackupCount=localBackupCount + localAsyncBackupCount;
  if (localBackupCount <= 0 && localAsyncBackupCount <= 0) {
    return;
  }
  if (totalBackupCount > maxBackupCount) {
    String msg="String_Node_Str" + maxBackupCount + "String_Node_Str"+ totalBackupCount;
    logger.log(Level.SEVERE,msg);
    throw new HazelcastException(msg);
  }
  if (request.key == null || request.key.size() == 0) {
    throw new HazelcastException("String_Node_Str" + request.key);
  }
  final MBackup[] backupOps=new MBackup[localBackupCount];
  for (int i=0; i < totalBackupCount; i++) {
    final int replicaIndex=i + 1;
    if (i < localBackupCount) {
      MBackup backupOp=new MBackup();
      backupOps[i]=backupOp;
      backupOp.sendBackup(operation,replicaIndex,request);
    }
 else {
      final Request reqBackup=Request.copyFromRequest(request);
      reqBackup.operation=operation;
      enqueueAndReturn(new AsyncBackupProcessable(reqBackup,replicaIndex));
    }
  }
  for (int i=0; i < localBackupCount; i++) {
    MBackup backupOp=backupOps[i];
    try {
      if (!backupOp.getResultAsBoolean()) {
        if (logger.isLoggable(Level.FINEST)) {
          logger.log(Level.FINEST,"String_Node_Str" + request);
        }
      }
    }
 catch (    HazelcastException e) {
      final Level level=backupRedoEnabled ? Level.WARNING : Level.FINEST;
      logger.log(level,"String_Node_Str" + operation + "String_Node_Str"+ e.getClass().getName()+ "String_Node_Str"+ e.getMessage());
      logger.log(Level.FINEST,e.getMessage(),e);
    }
  }
}

Fixed version (ground truth):
protected void backup(ClusterOperation operation){
  final int localBackupCount=backupCount;
  final int localAsyncBackupCount=asyncBackupCount;
  final int totalBackupCount=localBackupCount + localAsyncBackupCount;
  if (localBackupCount <= 0 && localAsyncBackupCount <= 0) {
    return;
  }
  if (totalBackupCount > maxBackupCount) {
    String msg="String_Node_Str" + maxBackupCount + "String_Node_Str"+ totalBackupCount;
    logger.log(Level.SEVERE,msg);
    throw new HazelcastException(msg);
  }
  if (request.key == null || request.key.size() == 0) {
    throw new HazelcastException("String_Node_Str" + request.key);
  }
  final MBackup[] backupOps=new MBackup[localBackupCount];
  for (int i=0; i < totalBackupCount; i++) {
    final int replicaIndex=i + 1;
    if (i < localBackupCount) {
      MBackup backupOp=new MBackup();
      backupOps[i]=backupOp;
      backupOp.sendBackup(operation,replicaIndex,request);
    }
 else {
      final Request reqBackup=Request.copyFromRequest(request);
      reqBackup.operation=operation;
      enqueueAndReturn(new AsyncBackupProcessable(reqBackup,replicaIndex));
    }
  }
  for (int i=0; i < localBackupCount; i++) {
    MBackup backupOp=backupOps[i];
    try {
      if (!backupOp.getResultAsBoolean()) {
        if (logger.isLoggable(Level.FINEST)) {
          logger.log(Level.FINEST,"String_Node_Str" + request);
        }
      }
    }
 catch (    HazelcastException e) {
      final Level level=backupRedoEnabled ? Level.WARNING : Level.FINEST;
      logger.log(level,"String_Node_Str" + operation + "String_Node_Str"+ e.getClass().getName()+ "String_Node_Str"+ e.getMessage());
      logger.log(Level.FINEST,e.getMessage(),e);
    }
  }
  if (totalBackupCount > 0 && shouldRedoWhenOwnerDies() && target != null && node.getClusterImpl().getMember(target) == null) {
    logger.log(Level.WARNING,"String_Node_Str" + target + "String_Node_Str"+ "String_Node_Str"+ request.operation);
    doOp();
    getRedoAwareResult();
  }
}