pgs = self.get_pg_stats()
return self._get_num_active_down(pgs) == len(pgs)
+ def dump_pgs_not_active_clean(self):
+ """
+ Dumps all pgs that are not active+clean
+ """
+ pgs = self.get_pg_stats()
+ for pg in pgs:
+ if pg['state'] != 'active+clean':
+ self.log('PG %s is not active+clean' % pg['pgid'])
+ self.log(pg)
+
+ def dump_pgs_not_active_down(self):
+ """
+ Dumps all pgs that are not active or down
+ """
+ pgs = self.get_pg_stats()
+ for pg in pgs:
+ if 'active' not in pg['state'] and 'down' not in pg['state']:
+ self.log('PG %s is not active or down' % pg['pgid'])
+ self.log(pg)
+
+ def dump_pgs_not_active(self):
+ """
+ Dumps all pgs that are not active
+ """
+ pgs = self.get_pg_stats()
+ for pg in pgs:
+ if 'active' not in pg['state']:
+ self.log('PG %s is not active' % pg['pgid'])
+ self.log(pg)
+
def wait_for_clean(self, timeout=1200):
"""
Returns true when all pgs are clean.
else:
self.log("no progress seen, keeping timeout for now")
if time.time() - start >= timeout:
- self.log('dumping pgs')
- out = self.raw_cluster_cmd('pg', 'dump')
- self.log(out)
+ self.log('dumping pgs not clean')
+ self.dump_pgs_not_active_clean()
assert time.time() - start < timeout, \
- 'failed to become clean before timeout expired'
+ 'wait_for_clean: failed before timeout expired'
cur_active_clean = self.get_num_active_clean()
if cur_active_clean != num_active_clean:
start = time.time()
if now - start >= timeout:
if self.is_recovered():
break
- self.log('dumping pgs')
- out = self.raw_cluster_cmd('pg', 'dump')
- self.log(out)
+ self.log('dumping pgs not recovered yet')
+ self.dump_pgs_not_active_clean()
assert now - start < timeout, \
- 'failed to recover before timeout expired'
+ 'wait_for_recovery: failed before timeout expired'
cur_active_recovered = self.get_num_active_recovered()
if cur_active_recovered != num_active_recovered:
start = time.time()
while not self.is_active():
if timeout is not None:
if time.time() - start >= timeout:
- self.log('dumping pgs')
- out = self.raw_cluster_cmd('pg', 'dump')
- self.log(out)
+ self.log('dumping pgs not active')
+ self.dump_pgs_not_active()
assert time.time() - start < timeout, \
- 'failed to recover before timeout expired'
+ 'wait_for_active: failed before timeout expired'
cur_active = self.get_num_active()
if cur_active != num_active:
start = time.time()
while not self.is_active_or_down():
if timeout is not None:
if time.time() - start >= timeout:
- self.log('dumping pgs')
- out = self.raw_cluster_cmd('pg', 'dump')
- self.log(out)
+ self.log('dumping pgs not active or down')
+ self.dump_pgs_not_active_down()
assert time.time() - start < timeout, \
- 'failed to recover before timeout expired'
+ 'wait_for_active_or_down: failed before timeout expired'
cur_active_down = self.get_num_active_down()
if cur_active_down != num_active_down:
start = time.time()
while not self.is_active():
if timeout is not None:
if time.time() - start >= timeout:
- self.log('dumping pgs')
- out = self.raw_cluster_cmd('pg', 'dump')
- self.log(out)
+ self.log('dumping pgs not active')
+ self.dump_pgs_not_active()
assert time.time() - start < timeout, \
- 'failed to become active before timeout expired'
+ 'wait_till_active: failed before timeout expired'
time.sleep(3)
self.log("active!")