The problem here is that we may skip some meta objects which shall not be
counted since they are not really queued. Besides, the counter itself is
not very accurate, e.g., if we set osd_target_transaction_size to 30, we
may actually queue 31 transactions to trigger a commit.
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
&next);
for (vector<ghobject_t>::iterator i = olist.begin();
i != olist.end();
- ++i, ++num) {
+ ++i) {
if (i->is_pgmeta())
continue;
OSDriver::OSTransaction _t(osdriver->get_transaction(&t));
assert(0);
}
t.remove(coll, *i);
- if (num >= cct->_conf->osd_target_transaction_size) {
+ if (++num >= cct->_conf->osd_target_transaction_size) {
C_SaferCond waiter;
store->queue_transaction(osr, std::move(t), &waiter);
bool cont = dstate->pause_clearing();