Project

General

Profile

Actions

Bug #8991

closed

rgw: RGWRados::list_bi_log_entries() doesn't clear list

Added by Yehuda Sadeh over 9 years ago. Updated about 9 years ago.

Status:
Resolved
Priority:
High
Assignee:
-
Target version:
-
% Done:

0%

Source:
other
Tags:
Backport:
Regression:
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description


I think there are logic error about max_entries
betweenRGWOp_BILog_List::execute() and  store->list_bi_log_entries.

Look at the codes:
in RGWOp_BILog_List::execute()
  do {

    list<rgw_bi_log_entry> entries;
    int ret = store->list_bi_log_entries(bucket_info.bucket,
                                          marker, max_entries - count,
                                          entries, &truncated);
    if (ret < 0) {
      dout(5) << "ERROR: list_bi_log_entries()" << dendl;
      return;
    }

    count += entries.size();

    send_response(entries, marker);
  } while (truncated && count < max_entries);

and RGWRados::list_bi_log_entries
int ret = cls_rgw_bi_log_list(index_ctx, oid, marker, max -
result.size(), entries, truncated);

I think there is a conflict between  "max_entries - count" and "max -
result.size()".   I think this bug is hard to test since I don't know
how the bi log creates.

Vincent

It also calls list::size() which should be avoided.

Actions #1

Updated by Yehuda Sadeh about 9 years ago

  • Status changed from New to Resolved
Actions

Also available in: Atom PDF