infiniflow/ragflow · error · ConnectorValidationError

Invalid connector settings: 'repo_owner' must be provided.

Error message

Invalid connector settings: 'repo_owner' must be provided.

What it means

ConnectorValidationError raised when the 'repo_owner' setting is empty (falsy) during validate_connector_settings(). The owner is the organization or user whose repos will be indexed; without it the connector cannot form any 'owner/repo' API path. It is purely a configuration error — no GitHub API call has happened yet.

Source

Thrown at common/data_source/github/connector.py:674

        checkpoint: GithubConnectorCheckpoint,
    ) -> CheckpointOutput[GithubConnectorCheckpoint]:
        return self._load_from_checkpoint(start, end, checkpoint, include_permissions=False)

    @override
    def load_from_checkpoint_with_perm_sync(
        self,
        start: SecondsSinceUnixEpoch,
        end: SecondsSinceUnixEpoch,
        checkpoint: GithubConnectorCheckpoint,
    ) -> CheckpointOutput[GithubConnectorCheckpoint]:
        return self._load_from_checkpoint(start, end, checkpoint, include_permissions=True)

    def validate_connector_settings(self) -> None:
        if self.github_client is None:
            raise ConnectorMissingCredentialError("GitHub credentials not loaded.")

        if not self.repo_owner:
            raise ConnectorValidationError("Invalid connector settings: 'repo_owner' must be provided.")

        try:
            if self.repositories:
                if "," in self.repositories:
                    # Multiple repositories specified
                    repo_names = [name.strip() for name in self.repositories.split(",")]
                    if not repo_names:
                        raise ConnectorValidationError("Invalid connector settings: No valid repository names provided.")

                    # Validate at least one repository exists and is accessible
                    valid_repos = False
                    validation_errors = []

                    for repo_name in repo_names:
                        if not repo_name:
                            continue

                        try:

View on GitHub (pinned to 554fb1133a)

Solutions

  1. Set repo_owner to the GitHub org or user name that owns the target repositories.
  2. Add a required-field check in the form/API layer so the request fails before connector construction.
  3. Re-save the credential/connector pair so both owner and repositories travel together.

Example fix

// before
GithubConnector(repo_owner='', repositories='my-repo', ...)

// after
GithubConnector(repo_owner='my-org', repositories='my-repo', ...)
Defensive patterns

Strategy: validation

Validate before calling

if not (settings.get('repo_owner') or '').strip():
    raise ValueError("'repo_owner' is required")

Try / catch

try:
    connector.validate_connector_settings()
except ConnectorValidationError as e:
    return 400, str(e)  # user-fixable configuration problem

Prevention

When it happens

Trigger: Saving/validating a GitHub connector where the repo_owner field was omitted, left blank, or sent as an empty string in the request payload.

Common situations: UI form submitted without the owner field; API/terraform payload missing the key; whitespace-stripped value becoming '' after normalization upstream.

Related errors


AI-assisted analysis of infiniflow/ragflow@554fb1133a (2026-08-15). Data as JSON: /api/errors/97e9661f4f03d31e. Report an issue: GitHub.