MCPcopy Create free account
hub / github.com/apache/impala / CheckConsistencyFast

Method CheckConsistencyFast

be/src/runtime/buffered-tuple-stream.cc:110–148  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

108}
109
110void BufferedTupleStream::CheckConsistencyFast(const ReadIterator& read_it) const {
111 // All the below checks should be O(1).
112 DCHECK(has_write_iterator() || write_page_ == nullptr);
113 if (write_page_ != nullptr) {
114 CheckPageConsistency(write_page_);
115 DCHECK(write_page_->is_pinned());
116 DCHECK(write_page_->retrieved_buffer.Load());
117 const BufferHandle* write_buffer;
118 Status status = write_page_->GetBuffer(&write_buffer);
119 DCHECK(status.ok()); // Write buffer should never have been unpinned.
120 DCHECK_GE(write_ptr_, write_buffer->data());
121 DCHECK_EQ(write_end_ptr_, write_buffer->data() + write_page_->len());
122 DCHECK_GE(write_end_ptr_, write_ptr_);
123 }
124 DCHECK(read_it.is_valid() || read_it.read_page_ == pages_.end());
125 if (read_it.read_page_ != pages_.end()) {
126 CheckPageConsistency(&*read_it.read_page_);
127 if (!read_it.read_page_->attached_to_output_batch) {
128 DCHECK(read_it.read_page_->is_pinned());
129 DCHECK(read_it.read_page_->retrieved_buffer.Load());
130 // Can't check read buffer without affecting behaviour, because a read may be in
131 // flight and this would required blocking on that write.
132 DCHECK_GE(read_it.read_end_ptr_, read_it.read_ptr_);
133 }
134 }
135 DCHECK(&read_it == &read_it_ || !read_it_.attach_on_read_)
136 << "External read iterators cannot coexist with attach_on_read mode";
137 if (&read_it == &read_it_ && NeedReadReservation()) {
138 DCHECK_EQ(default_page_len_, read_page_reservation_.GetReservation())
139 << DebugString();
140 } else if (!read_page_reservation_.is_closed()) {
141 DCHECK_EQ(0, read_page_reservation_.GetReservation());
142 }
143 if (NeedWriteReservation()) {
144 DCHECK_EQ(default_page_len_, write_page_reservation_.GetReservation());
145 } else if (!write_page_reservation_.is_closed()) {
146 DCHECK_EQ(0, write_page_reservation_.GetReservation());
147 }
148}
149
150void BufferedTupleStream::CheckPageConsistency(const Page* page) const {
151 if (page->attached_to_output_batch) {

Callers

nothing calls this directly

Calls 11

DebugStringFunction · 0.50
is_pinnedMethod · 0.45
LoadMethod · 0.45
GetBufferMethod · 0.45
okMethod · 0.45
dataMethod · 0.45
lenMethod · 0.45
is_validMethod · 0.45
endMethod · 0.45
GetReservationMethod · 0.45
is_closedMethod · 0.45

Tested by

no test coverage detected