Program: 64007
Project: 64007
Buggy source:
@Override public void buildStack(Stack stack,String userData,Map<String,Object> setupProperties){
  retryingStackUpdater.updateStackStatus(stack.getId(),Status.REQUESTED);
  GccTemplate gccTemplate=(GccTemplate)stack.getTemplate();
  Set<Resource> resourceSet=new HashSet<>();
  GccCredential credential=(GccCredential)setupProperties.get(CREDENTIAL);
  Set<Resource> vms=new HashSet<>();
  try {
    Compute compute=gccStackUtil.buildCompute(credential,stack.getName());
    List<NetworkInterface> networkInterfaces=gccStackUtil.buildNetworkInterfaces(compute,credential.getProjectId(),stack.getName());
    resourceSet.add(new Resource(ResourceType.NETWORK,stack.getName(),stack));
    resourceSet.add(new Resource(ResourceType.NETWORK_INTERFACE,stack.getName(),stack));
    resourceSet.add(new Resource(ResourceType.FIREWALL,stack.getName(),stack));
    for (int i=0; i < stack.getNodeCount(); i++) {
      String forName=gccStackUtil.getVmName(stack.getName(),i);
      Disk disk=gccStackUtil.buildDisk(compute,stack,credential.getProjectId(),gccTemplate.getGccZone(),forName,SIZE);
      resourceSet.add(new Resource(ResourceType.DISK,forName,stack));
      List<AttachedDisk> attachedDisks=gccStackUtil.buildAttachedDisks(forName,disk,compute,stack);
      for (      AttachedDisk attachedDisk : attachedDisks) {
        if (!attachedDisk.getDeviceName().equals(forName)) {
          resourceSet.add(new Resource(ResourceType.ATTACHED_DISK,attachedDisk.getDeviceName(),stack));
        }
      }
      Instance instance=gccStackUtil.buildInstance(compute,stack,networkInterfaces,attachedDisks,forName,userData);
      resourceSet.add(new Resource(ResourceType.VIRTUAL_MACHINE,forName,stack));
      vms.add(new Resource(ResourceType.VIRTUAL_MACHINE,forName,stack));
    }
    if (gccTemplate.getContainerCount() > 0) {
      for (      Resource vm : vms) {
        gccStackUtil.buildRoute(compute,credential.getProjectId(),stack.getName(),stack,gccStackUtil.getVmIdByName(vm.getResourceName()),vm);
        resourceSet.add(new Resource(ResourceType.ROUTE,String.format("String_Node_Str",vm.getResourceName()),stack));
      }
    }
  }
 catch (  Exception e) {
    throw new BuildStackFailureException(e.getMessage(),e,resourceSet);
  }
  LOGGER.info("String_Node_Str",ReactorConfig.PROVISION_COMPLETE_EVENT,stack.getId());
  reactor.notify(ReactorConfig.PROVISION_COMPLETE_EVENT,Event.wrap(new ProvisionComplete(CloudPlatform.GCC,stack.getId(),resourceSet)));
}

Fixed version (ground truth):
@Override public void buildStack(Stack stack,String userData,Map<String,Object> setupProperties){
  retryingStackUpdater.updateStackStatus(stack.getId(),Status.REQUESTED);
  GccTemplate gccTemplate=(GccTemplate)stack.getTemplate();
  Set<Resource> resourceSet=new HashSet<>();
  GccCredential credential=(GccCredential)setupProperties.get(CREDENTIAL);
  Set<Resource> vms=new HashSet<>();
  try {
    Compute compute=gccStackUtil.buildCompute(credential,stack.getName());
    List<NetworkInterface> networkInterfaces=gccStackUtil.buildNetworkInterfaces(compute,credential.getProjectId(),stack.getName());
    resourceSet.add(new Resource(ResourceType.NETWORK,stack.getName(),stack));
    resourceSet.add(new Resource(ResourceType.NETWORK_INTERFACE,stack.getName(),stack));
    resourceSet.add(new Resource(ResourceType.FIREWALL,stack.getName() + "String_Node_Str",stack));
    resourceSet.add(new Resource(ResourceType.FIREWALL,stack.getName() + "String_Node_Str",stack));
    for (int i=0; i < stack.getNodeCount(); i++) {
      String forName=gccStackUtil.getVmName(stack.getName(),i);
      Disk disk=gccStackUtil.buildDisk(compute,stack,credential.getProjectId(),gccTemplate.getGccZone(),forName,SIZE);
      resourceSet.add(new Resource(ResourceType.DISK,forName,stack));
      List<AttachedDisk> attachedDisks=gccStackUtil.buildAttachedDisks(forName,disk,compute,stack);
      for (      AttachedDisk attachedDisk : attachedDisks) {
        if (!attachedDisk.getDeviceName().equals(forName)) {
          resourceSet.add(new Resource(ResourceType.ATTACHED_DISK,attachedDisk.getDeviceName(),stack));
        }
      }
      Instance instance=gccStackUtil.buildInstance(compute,stack,networkInterfaces,attachedDisks,forName,userData);
      resourceSet.add(new Resource(ResourceType.VIRTUAL_MACHINE,forName,stack));
      vms.add(new Resource(ResourceType.VIRTUAL_MACHINE,forName,stack));
    }
    if (gccTemplate.getContainerCount() > 0) {
      for (      Resource vm : vms) {
        gccStackUtil.buildRoute(compute,credential.getProjectId(),stack.getName(),stack,gccStackUtil.getVmIdByName(vm.getResourceName()),vm);
        resourceSet.add(new Resource(ResourceType.ROUTE,String.format("String_Node_Str",vm.getResourceName()),stack));
      }
    }
  }
 catch (  Exception e) {
    throw new BuildStackFailureException(e.getMessage(),e,resourceSet);
  }
  LOGGER.info("String_Node_Str",ReactorConfig.PROVISION_COMPLETE_EVENT,stack.getId());
  reactor.notify(ReactorConfig.PROVISION_COMPLETE_EVENT,Event.wrap(new ProvisionComplete(CloudPlatform.GCC,stack.getId(),resourceSet)));
}