Only one caller can tolerate no segments; make a new
peek_current_segment() for them.
Motivated by paranoia tracking down a crash during client unmount, but
it wasn't this.
Signed-off-by: Sage Weil <sage@inktank.com>
{
dout(5) << "_expired segment " << ls->offset << " " << ls->num_events << " events" << dendl;
- if (!capped && ls == get_current_segment()) {
+ if (!capped && ls == peek_current_segment()) {
dout(5) << "_expired not expiring " << ls->offset << ", last one and !capped" << dendl;
} else {
// expired.
// -- segments --
void start_new_segment(Context *onsync=0);
+
+ LogSegment *peek_current_segment() {
+ return segments.empty() ? NULL : segments.rbegin()->second;
+ }
+
LogSegment *get_current_segment() {
- return segments.empty() ? 0:segments.rbegin()->second;
+ assert(!segments.empty());
+ return segments.rbegin()->second;
}
LogSegment *get_segment(uint64_t off) {