// Check for split!
set<spg_t> children;
spg_t parent(pg->pg_id);
- if (parent.is_split(
+ if (nextmap->have_pg_pool(pg->pg_id.pool()) &&
+ parent.is_split(
lastmap->get_pg_num(pg->pg_id.pool()),
nextmap->get_pg_num(pg->pg_id.pool()),
&children)) {
void PGPool::update(CephContext *cct, OSDMapRef map)
{
const pg_pool_t *pi = map->get_pg_pool(id);
- assert(pi);
+ if (!pi) {
+ return; // pool has been deleted
+ }
info = *pi;
auid = pi->auid;
name = map->get_pool_name(id);
changed = true;
}
const pg_pool_t *pi = osdmap->get_pg_pool(info.pgid.pool());
- assert(pi);
+ if (!pi) {
+ return; // pool deleted
+ }
if (pi->has_flag(pg_pool_t::FLAG_FULL)) {
const pg_pool_t *opi = lastmap->get_pg_pool(info.pgid.pool());
if (!opi || !opi->has_flag(pg_pool_t::FLAG_FULL)) {
dirty_info = true;
dirty_big_info = true;
info.history.same_interval_since = osdmap->get_epoch();
- if (info.pgid.pgid.is_split(lastmap->get_pg_num(info.pgid.pgid.pool()),
+ if (osdmap->have_pg_pool(info.pgid.pgid.pool()) &&
+ info.pgid.pgid.is_split(lastmap->get_pg_num(info.pgid.pgid.pool()),
osdmap->get_pg_num(info.pgid.pgid.pool()),
nullptr)) {
info.history.last_epoch_split = osdmap->get_epoch();