@Override
  public void run() throws Exception {
    if (!valid) {
      onExecutionFailure(
          new IllegalStateException("Wrong target! " + toString() + " cannot be processed!"));
      return;
    }

    NodeEngine nodeEngine = getNodeEngine();

    if (backupOp == null && backupOpData != null) {
      backupOp = nodeEngine.getSerializationService().toObject(backupOpData);
    }

    if (backupOp != null) {
      ensureBackupOperationInitialized();

      backupOp.beforeRun();
      backupOp.run();
      backupOp.afterRun();
    }

    InternalPartitionService partitionService = nodeEngine.getPartitionService();
    partitionService.updatePartitionReplicaVersions(
        getPartitionId(), replicaVersions, getReplicaIndex());
  }
 public void run() throws Exception {
   for (Operation op : opList) {
     op.setNodeEngine(getNodeEngine())
         .setServiceName(getServiceName())
         .setPartitionId(getPartitionId());
     op.beforeRun();
     op.run();
     op.afterRun();
   }
   getOrCreateContainer().unlock(dataKey, caller, threadId);
 }