Mercurial > hg > orthanc-transfers
comparison Framework/PullMode/PullJob.cpp @ 10:c9e28e31262e
new option: MaxHttpRetries
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 04 Mar 2019 15:26:49 +0100 |
parents | 7e207ade2f1a |
children | b06103a50c95 |
comparison
equal
deleted
inserted
replaced
9:7e207ade2f1a | 10:c9e28e31262e |
---|---|
99 | 99 |
100 std::vector<TransferBucket> buckets; | 100 std::vector<TransferBucket> buckets; |
101 scheduler.ComputePullBuckets(buckets, job.targetBucketSize_, 2 * job.targetBucketSize_, | 101 scheduler.ComputePullBuckets(buckets, job.targetBucketSize_, 2 * job.targetBucketSize_, |
102 baseUrl, job.query_.GetCompression()); | 102 baseUrl, job.query_.GetCompression()); |
103 area_.reset(new DownloadArea(scheduler)); | 103 area_.reset(new DownloadArea(scheduler)); |
104 | 104 |
105 queue_.SetMaxRetries(job.maxHttpRetries_); | |
105 queue_.Reserve(buckets.size()); | 106 queue_.Reserve(buckets.size()); |
106 | 107 |
107 for (size_t i = 0; i < buckets.size(); i++) | 108 for (size_t i = 0; i < buckets.size(); i++) |
108 { | 109 { |
109 queue_.Enqueue(new BucketPullQuery(*area_, buckets[i], job.query_.GetPeer(), job.query_.GetCompression())); | 110 queue_.Enqueue(new BucketPullQuery(*area_, buckets[i], job.query_.GetPeer(), job.query_.GetCompression())); |
169 { | 170 { |
170 Json::FastWriter writer; | 171 Json::FastWriter writer; |
171 const std::string lookup = writer.write(job_.query_.GetResources()); | 172 const std::string lookup = writer.write(job_.query_.GetResources()); |
172 | 173 |
173 Json::Value answer; | 174 Json::Value answer; |
174 if (!job_.peers_.DoPost(answer, job_.peerIndex_, URI_LOOKUP, lookup)) | 175 if (!DoPostPeer(answer, job_.peers_, job_.peerIndex_, URI_LOOKUP, lookup, job_.maxHttpRetries_)) |
175 { | 176 { |
176 LOG(ERROR) << "Cannot retrieve the list of instances to pull from peer \"" | 177 LOG(ERROR) << "Cannot retrieve the list of instances to pull from peer \"" |
177 << job_.query_.GetPeer() | 178 << job_.query_.GetPeer() |
178 << "\" (check that it has the transfers accelerator plugin installed)"; | 179 << "\" (check that it has the transfers accelerator plugin installed)"; |
179 return StateUpdate::Failure(); | 180 return StateUpdate::Failure(); |
228 } | 229 } |
229 | 230 |
230 | 231 |
231 PullJob::PullJob(const TransferQuery& query, | 232 PullJob::PullJob(const TransferQuery& query, |
232 size_t threadsCount, | 233 size_t threadsCount, |
233 size_t targetBucketSize) : | 234 size_t targetBucketSize, |
235 unsigned int maxHttpRetries) : | |
234 StatefulOrthancJob(JOB_TYPE_PULL), | 236 StatefulOrthancJob(JOB_TYPE_PULL), |
235 query_(query), | 237 query_(query), |
236 threadsCount_(threadsCount), | 238 threadsCount_(threadsCount), |
237 targetBucketSize_(targetBucketSize) | 239 targetBucketSize_(targetBucketSize), |
240 maxHttpRetries_(maxHttpRetries) | |
238 { | 241 { |
239 if (!peers_.LookupName(peerIndex_, query_.GetPeer())) | 242 if (!peers_.LookupName(peerIndex_, query_.GetPeer())) |
240 { | 243 { |
241 LOG(ERROR) << "Unknown Orthanc peer: " << query_.GetPeer(); | 244 LOG(ERROR) << "Unknown Orthanc peer: " << query_.GetPeer(); |
242 throw Orthanc::OrthancException(Orthanc::ErrorCode_UnknownResource); | 245 throw Orthanc::OrthancException(Orthanc::ErrorCode_UnknownResource); |