Program: 7049
Project: 7049
Buggy source:
/** 
 * Deletes specified dataset module
 * @param datasetModuleId {@link Id.DatasetModule} of the dataset module to delete
 * @return true if deleted successfully, false if module didn't exist: nothing to delete
 * @throws DatasetModuleConflictException when there are other modules depend on the specified one, in which casedeletion does NOT happen
 */
public boolean deleteModule(final Id.DatasetModule datasetModuleId) throws DatasetModuleConflictException {
  LOG.info("String_Node_Str",datasetModuleId);
  try {
    return mdsDatasets.execute(new TxCallable<MDSDatasets,Boolean>(){
      @Override public Boolean call(      MDSDatasets datasets) throws DatasetModuleConflictException {
        DatasetModuleMeta module=datasets.getTypeMDS().getModule(datasetModuleId);
        if (module == null) {
          return false;
        }
        if (module.getUsedByModules().size() > 0) {
          String msg=String.format("String_Node_Str",module);
          throw new DatasetModuleConflictException(msg);
        }
        Collection<DatasetSpecification> dependentInstances=datasets.getInstanceMDS().getByTypes(datasetModuleId.getNamespace(),ImmutableSet.copyOf(module.getTypes()));
        if (dependentInstances.size() > 0) {
          String msg=String.format("String_Node_Str",module);
          throw new DatasetModuleConflictException(msg);
        }
        for (        String usedModuleName : module.getUsesModules()) {
          Id.DatasetModule usedModuleId=Id.DatasetModule.from(datasetModuleId.getNamespace(),usedModuleName);
          DatasetModuleMeta usedModule=datasets.getTypeMDS().getModule(usedModuleId);
          if (usedModule == null) {
            usedModuleId=Id.DatasetModule.from(Constants.SYSTEM_NAMESPACE_ID,usedModuleName);
            usedModule=datasets.getTypeMDS().getModule(usedModuleId);
            Preconditions.checkState(usedModule != null,"String_Node_Str",usedModuleName,datasetModuleId.getId());
          }
          usedModule.removeUsedByModule(datasetModuleId.getId());
          datasets.getTypeMDS().writeModule(usedModuleId.getNamespace(),usedModule);
        }
        datasets.getTypeMDS().deleteModule(datasetModuleId);
        return true;
      }
    }
);
  }
 catch (  TransactionFailureException e) {
    if (e.getCause() != null && e.getCause() instanceof DatasetModuleConflictException) {
      throw (DatasetModuleConflictException)e.getCause();
    }
    throw Throwables.propagate(e);
  }
catch (  Exception e) {
    LOG.error("String_Node_Str",e);
    throw Throwables.propagate(e);
  }
}

Fixed version (ground truth):
/** 
 * Deletes specified dataset module
 * @param datasetModuleId {@link Id.DatasetModule} of the dataset module to delete
 * @return true if deleted successfully, false if module didn't exist: nothing to delete
 * @throws DatasetModuleConflictException when there are other modules depend on the specified one, in which casedeletion does NOT happen
 */
public boolean deleteModule(final Id.DatasetModule datasetModuleId) throws DatasetModuleConflictException {
  LOG.info("String_Node_Str",datasetModuleId);
  try {
    return mdsDatasets.execute(new TxCallable<MDSDatasets,Boolean>(){
      @Override public Boolean call(      MDSDatasets datasets) throws DatasetModuleConflictException, IOException {
        DatasetModuleMeta module=datasets.getTypeMDS().getModule(datasetModuleId);
        if (module == null) {
          return false;
        }
        if (module.getUsedByModules().size() > 0) {
          String msg=String.format("String_Node_Str",module);
          throw new DatasetModuleConflictException(msg);
        }
        Collection<DatasetSpecification> dependentInstances=datasets.getInstanceMDS().getByTypes(datasetModuleId.getNamespace(),ImmutableSet.copyOf(module.getTypes()));
        if (dependentInstances.size() > 0) {
          String msg=String.format("String_Node_Str",module);
          throw new DatasetModuleConflictException(msg);
        }
        for (        String usedModuleName : module.getUsesModules()) {
          Id.DatasetModule usedModuleId=Id.DatasetModule.from(datasetModuleId.getNamespace(),usedModuleName);
          DatasetModuleMeta usedModule=datasets.getTypeMDS().getModule(usedModuleId);
          if (usedModule == null) {
            usedModuleId=Id.DatasetModule.from(Constants.SYSTEM_NAMESPACE_ID,usedModuleName);
            usedModule=datasets.getTypeMDS().getModule(usedModuleId);
            Preconditions.checkState(usedModule != null,"String_Node_Str",usedModuleName,datasetModuleId.getId());
          }
          usedModule.removeUsedByModule(datasetModuleId.getId());
          datasets.getTypeMDS().writeModule(usedModuleId.getNamespace(),usedModule);
        }
        datasets.getTypeMDS().deleteModule(datasetModuleId);
        Location moduleJarLocation=locationFactory.create(module.getJarLocation());
        if (!moduleJarLocation.delete()) {
          LOG.debug("String_Node_Str");
        }
        return true;
      }
    }
);
  }
 catch (  TransactionFailureException e) {
    if (e.getCause() != null && e.getCause() instanceof DatasetModuleConflictException) {
      throw (DatasetModuleConflictException)e.getCause();
    }
    throw Throwables.propagate(e);
  }
catch (  Exception e) {
    LOG.error("String_Node_Str",e);
    throw Throwables.propagate(e);
  }
}