Ejemplo n.º 1
0
static void
recover2PCForDatabase(database_info *db_info)
{
	PGconn 		*coord_conn;
	txn_info   	*cur_txn;

	if (verbose_opt)
		fprintf(outf, "%s: recovering 2PC for database \"%s\"\n", progname, db_info->database_name);
	coord_conn = loginDatabase(coordinator_host, coordinator_port, username, password, db_info->database_name,
							   progname, "auto", password_prompt);
	if (coord_conn == NULL)
	{
		fprintf(errf, "Could not connect to the database %s.\n", db_info->database_name);
		return;
	}
	if (!setMaintenanceMode(coord_conn))
	{
		/* Cannot recover */
		fprintf(errf, "Skipping database %s.\n", db_info->database_name);
		PQfinish(coord_conn);
		return;
	}
	if (verbose_opt)
		fprintf(outf, "%s: connected to the database \"%s\"\n", progname, db_info->database_name);
	for(cur_txn = db_info->head_txn_info; cur_txn; cur_txn = cur_txn->next)
	{
		recover2PC(coord_conn, cur_txn);
	}
	PQfinish(coord_conn);
}
Ejemplo n.º 2
0
    Status LegacyReplicationCoordinator::processReplSetMaintenance(OperationContext* txn,
                                                                   bool activate,
                                                                   BSONObjBuilder* resultObj) {
        if (!setMaintenanceMode(txn, activate)) {
            if (theReplSet->isPrimary()) {
                return Status(ErrorCodes::NotSecondary, "primaries can't modify maintenance mode");
            }
            else {
                return Status(ErrorCodes::OperationFailed, "already out of maintenance mode");
            }
        }

        return Status::OK();
    }
Ejemplo n.º 3
0
    Status LegacyReplicationCoordinator::processReplSetMaintenance(bool activate,
                                                                   BSONObjBuilder* resultObj) {
        Status status = _checkReplEnabledForCommand(resultObj);
        if (!status.isOK()) {
            return status;
        }
        if (!setMaintenanceMode(activate)) {
            if (theReplSet->isPrimary()) {
                return Status(ErrorCodes::NotSecondary, "primaries can't modify maintenance mode");
            }
            else {
                return Status(ErrorCodes::OperationFailed, "already out of maintenance mode");
            }
        }

        return Status::OK();
    }