/////////////////////////////////////////////////////////////////////
| 212 | |
| 213 | ////////////////////////////////////////////////////////////////////////// |
| 214 | void AsyncStartGroupRequest(TJobDescription* descr, |
| 215 | TRemoteQueryProcessor* queryProc, IUserContext* userContext, |
| 216 | IMRCommandCompleteNotify* mrNotify) { |
| 217 | TIntrusivePtr<TJobRequest> jr = new TJobRequest; |
| 218 | jr->Descr.Cmds.swap(descr->Cmds); |
| 219 | jr->Descr.ParamsData.swap(descr->ParamsData); |
| 220 | jr->Descr.ParamsPtr.swap(descr->ParamsPtr); |
| 221 | jr->EnvId2Version = userContext->GetEnvId2Version(); |
| 222 | jr->IsLowPriority = false; |
| 223 | |
| 224 | int hostIdCount = userContext->GetHostIdCount(); |
| 225 | |
| 226 | for (int i = 0; i < descr->ExecList.ysize(); ++i) { |
| 227 | TJobParams jp = descr->ExecList[i]; |
| 228 | if (jp.HostId == TJobDescription::MAP_HOST_ID) { |
| 229 | // its a map request, assign to several hosts |
| 230 | for (int hostId = 0; hostId < hostIdCount; ++hostId) { |
| 231 | jp.HostId = hostId; |
| 232 | jr->Descr.ExecList.push_back(jp); |
| 233 | } |
| 234 | } else { |
| 235 | // direct request |
| 236 | Y_ABORT_UNLESS( |
| 237 | (jp.HostId >= 0 && jp.HostId < hostIdCount) || jp.HostId == TJobDescription::ANYWHERE_HOST_ID, |
| 238 | "jp.HostId=%d, hostIdCount=%d", |
| 239 | jp.HostId, hostIdCount); |
| 240 | jr->Descr.ExecList.push_back(jp); |
| 241 | } |
| 242 | } |
| 243 | |
| 244 | if (queryProc) |
| 245 | TSplitMRExec::Launch(jr.Get(), queryProc, userContext, mrNotify); |
| 246 | else |
| 247 | LaunchLocalJobRequest(jr.Get(), -1, userContext, mrNotify); |
| 248 | } |
| 249 | } |
no test coverage detected