def METHOD_NAME(self, gpdb_list=None):
    """
    :return: two lists of Segment objects (as defined in gparray) for successes and failures,
    where successes have successfully reported their checksum values
    """
    failures = []
    successes = []
    if not gpdb_list:
        gpdb_list = []
        for segment in self.gparray.getSegmentList():
            gpdb_list.extend(segment.get_dbs())
    completed = self._get_pgcontrol_data_from_segments(gpdb_list)
    for pg_control_data in completed:
        result = pg_control_data.get_results()
        gparray_gpdb = pg_control_data.gparray_gpdb
        if result.rc == 0:
            self.logger.info("Successfully finished pg_controldata {} for dbid {}:\nstdout: {}\nstderr: {}".format(
                gparray_gpdb.getSegmentDataDirectory(), gparray_gpdb.getSegmentDbId(), result.stdout, result.stderr))
            try:
                checksum = pg_control_data.get_value('Data page checksum version')
                gparray_gpdb.heap_checksum = checksum
                successes.append(gparray_gpdb)
            except Exception as e:
                failures.append(gparray_gpdb)
                self._logger_warn("cannot access heap checksum from pg_controldata for dbid %s "
                                  "on host %s; got pgcontrol_data: %s and exception %s" % (
                                      gparray_gpdb.dbid, gparray_gpdb.getSegmentHostName(),
                                      pg_control_data, str(e)))
        else:
            failures.append(gparray_gpdb)
            self._logger_warn("cannot access pg_controldata for dbid %s on host %s" % (
                gparray_gpdb.dbid, gparray_gpdb.getSegmentHostName()))
    return successes, failures