PartsManager: bugfixes
GitOrigin-RevId: d98139df4068f14bbecc5cc6f227d6f085c653b2
This commit is contained in:
parent
b1a1b332c7
commit
dddb598b58
@ -44,8 +44,8 @@ void PartsManager::set_streaming_offset(int64 offset) {
|
|||||||
|
|
||||||
streaming_offset_ = offset;
|
streaming_offset_ = offset;
|
||||||
first_streaming_empty_part_ = narrow_cast<int>(part_i);
|
first_streaming_empty_part_ = narrow_cast<int>(part_i);
|
||||||
if (part_count_ <= first_streaming_empty_part_) {
|
if (part_count_ < first_streaming_empty_part_) {
|
||||||
part_count_ = first_streaming_empty_part_ + 1;
|
part_count_ = first_streaming_empty_part_;
|
||||||
part_status_.resize(part_count_, PartStatus::Empty);
|
part_status_.resize(part_count_, PartStatus::Empty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -69,12 +69,8 @@ Status PartsManager::init_no_size(size_t part_size, const std::vector<int> &read
|
|||||||
part_size_ *= 2;
|
part_size_ *= 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
part_count_ = 0;
|
part_count_ =
|
||||||
if (known_prefix_flag_) {
|
std::accumulate(ready_parts.begin(), ready_parts.end(), 0, [](auto a, auto b) { return max(a, b + 1); });
|
||||||
part_count_ = static_cast<int>(known_prefix_size_ / part_size_);
|
|
||||||
}
|
|
||||||
part_count_ = max(part_count_, std::accumulate(ready_parts.begin(), ready_parts.end(), 0,
|
|
||||||
[](auto a, auto b) { return max(a, b + 1); }));
|
|
||||||
|
|
||||||
init_common(ready_parts);
|
init_common(ready_parts);
|
||||||
return Status::OK();
|
return Status::OK();
|
||||||
@ -180,17 +176,16 @@ string PartsManager::get_bitmask() const {
|
|||||||
Result<Part> PartsManager::start_part() {
|
Result<Part> PartsManager::start_part() {
|
||||||
update_first_empty_part();
|
update_first_empty_part();
|
||||||
auto part_i = first_streaming_empty_part_;
|
auto part_i = first_streaming_empty_part_;
|
||||||
|
if (known_prefix_flag_ && part_i >= static_cast<int>(known_prefix_size_ / part_size_)) {
|
||||||
|
return Status::Error(1, "Wait for prefix to be known");
|
||||||
|
}
|
||||||
if (part_i == part_count_) {
|
if (part_i == part_count_) {
|
||||||
if (unknown_size_flag_) {
|
if (unknown_size_flag_) {
|
||||||
if (known_prefix_flag_ == false) {
|
|
||||||
part_count_++;
|
part_count_++;
|
||||||
if (part_count_ > MAX_PART_COUNT) {
|
if (part_count_ > MAX_PART_COUNT) {
|
||||||
return Status::Error("Too big file with unknown size");
|
return Status::Error("Too big file with unknown size");
|
||||||
}
|
}
|
||||||
part_status_.push_back(PartStatus::Empty);
|
part_status_.push_back(PartStatus::Empty);
|
||||||
} else {
|
|
||||||
return Status::Error(1, "Wait for prefix to be known");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (first_empty_part_ < part_count_) {
|
if (first_empty_part_ < part_count_) {
|
||||||
part_i = first_empty_part_;
|
part_i = first_empty_part_;
|
||||||
@ -207,6 +202,9 @@ Result<Part> PartsManager::start_part() {
|
|||||||
Status PartsManager::set_known_prefix(size_t size, bool is_ready) {
|
Status PartsManager::set_known_prefix(size_t size, bool is_ready) {
|
||||||
CHECK(known_prefix_flag_) << unknown_size_flag_ << " " << size << " " << is_ready << " " << known_prefix_size_ << " "
|
CHECK(known_prefix_flag_) << unknown_size_flag_ << " " << size << " " << is_ready << " " << known_prefix_size_ << " "
|
||||||
<< expected_size_ << " " << part_count_ << " " << part_status_.size();
|
<< expected_size_ << " " << part_count_ << " " << part_status_.size();
|
||||||
|
if (size < static_cast<size_t>(known_prefix_size_)) {
|
||||||
|
return Status::Error("FILE_UPLOAD_RESTART");
|
||||||
|
}
|
||||||
CHECK(size >= static_cast<size_t>(known_prefix_size_))
|
CHECK(size >= static_cast<size_t>(known_prefix_size_))
|
||||||
<< unknown_size_flag_ << " " << size << " " << is_ready << " " << known_prefix_size_ << " " << expected_size_
|
<< unknown_size_flag_ << " " << size << " " << is_ready << " " << known_prefix_size_ << " " << expected_size_
|
||||||
<< " " << part_count_ << " " << part_status_.size();
|
<< " " << part_count_ << " " << part_status_.size();
|
||||||
@ -219,6 +217,7 @@ Status PartsManager::set_known_prefix(size_t size, bool is_ready) {
|
|||||||
|
|
||||||
size_ = narrow_cast<int64>(size);
|
size_ = narrow_cast<int64>(size);
|
||||||
unknown_size_flag_ = false;
|
unknown_size_flag_ = false;
|
||||||
|
known_prefix_flag_ = false;
|
||||||
} else {
|
} else {
|
||||||
part_count_ = static_cast<int>(size / part_size_);
|
part_count_ = static_cast<int>(size / part_size_);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user