private function retryOperation($node_id, $idc_list, $new_val, $op_user, $batch_type, $note = "") { //echo "$node_id, $idc_list, $new_val, $note, $op_user, $batch_type".PHP_EOL; $node_row = NodeServ::getNode($node_id); $node_whole = $node_row["node_whole"]; $main_buss_id = $node_row["main_buss_id"]; $sub_buss_id = $node_row["sub_buss_id"]; $MAX_RETRY_TIMES = 3; $failed_idcs = $idc_list; //outside loop for failed idcs $outside_retry_time = 0; while (count($failed_idcs) != 0 && $outside_retry_time < $MAX_RETRY_TIMES) { $tmp_list = $failed_idcs; $failed_idcs = array(); foreach ($tmp_list as $one_idc) { switch ($batch_type) { case InfoDescUtil::OP_TYPE_BATCH_MOD_VALUE: $ret = NodeController::modNodeValue($node_id, $one_idc, $node_whole, $main_buss_id, $sub_buss_id, $new_val, $note, $op_user); break; case InfoDescUtil::OP_TYPE_BATCH_ADD_SERV: $ret = ServiceController::addService($node_row, $one_idc, $new_val, $op_user); break; } if ($ret != 0) { array_push($failed_idcs, $one_idc); } } $outside_retry_time++; } return $failed_idcs; }