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);