infiniflow/ragflow · error · ConnectorValidationError
Unexpected error during Dropbox settings validation: {e}
Error message
Unexpected error during Dropbox settings validation: {e} What it means
Catch-all raised by validate_connector_settings() when files_list_folder throws anything other than AuthError/ApiError: network timeouts, DNS failures, SSL errors, rate limiting surfaced as generic exceptions. The original exception text is embedded; e.user_message_text is not available on this path, so raw {e} is shown.
Source
Thrown at common/data_source/dropbox_connector.py:55
self.dropbox_client = Dropbox(access_token)
return None
def validate_connector_settings(self) -> None:
"""Validate Dropbox connector settings"""
if self.dropbox_client is None:
raise ConnectorMissingCredentialError("Dropbox")
try:
self.dropbox_client.files_list_folder(path="", limit=1)
except AuthError as e:
logger.exception("[Dropbox]: Failed to validate Dropbox credentials")
raise ConnectorValidationError(f"Dropbox credential is invalid: {e}")
except ApiError as e:
if e.error is not None and "insufficient_permissions" in str(e.error).lower():
raise InsufficientPermissionsError("Your Dropbox token does not have sufficient permissions.")
raise ConnectorValidationError(f"Unexpected Dropbox error during validation: {e.user_message_text or e}")
except Exception as e:
raise ConnectorValidationError(f"Unexpected error during Dropbox settings validation: {e}")
def _download_file(self, path: str) -> bytes:
"""Download a single file from Dropbox."""
if self.dropbox_client is None:
raise ConnectorMissingCredentialError("Dropbox")
_, resp = self.dropbox_client.files_download(path)
return resp.content
def _get_shared_link(self, path: str) -> str:
"""Create a shared link for a file in Dropbox."""
if self.dropbox_client is None:
raise ConnectorMissingCredentialError("Dropbox")
try:
shared_links = self.dropbox_client.sharing_list_shared_links(path=path)
if shared_links.links:
return shared_links.links[0].url
View on GitHub (pinned to 554fb1133a)
Solutions
- Inspect the embedded {e}: connection/SSL errors point to network egress, not credentials
- Test reachability: curl -v https://api.dropboxapi.com/2/files/list_folder from the connector host
- Add the proxy CA to the host trust store or configure HTTPS_PROXY for the connector process
- If transient (rate limit), retry validation after a backoff
Defensive patterns
Strategy: retry
Validate before calling
import requests
requests.head('https://api.dropboxapi.com', timeout=5) # fail early on egress problems Try / catch
try:
connector.validate_connector_settings()
except ConnectorValidationError as e:
if is_transient(str(e)): # timeout / rate limit heuristics
time.sleep(backoff)
connector.validate_connector_settings()
else:
raise Prevention
- Verify egress to api.dropboxapi.com from the connector host during deployment
- Distinguish network errors (retryable) from credential errors (not retryable) in handling code
When it happens
Trigger: Connector host cannot reach api.dropboxapi.com (firewall, proxy, VPN); TLS interception with an untrusted CA; transient 429/5xx wrapped by the SDK.
Common situations: Self-hosted Onenyx behind an egress proxy; corporate MITM certificates; sandboxed CI without network access.
Related errors
- Unexpected S3 client error (code={error_code}, status={statu
- Unexpected error while validating Confluence settings: {e}
- WhatsApp session is not running.
- Failed to create UCloud Agent Sandbox: {exc}
- UCloud Agent Sandbox execution failed: {exc}
AI-assisted analysis of infiniflow/ragflow@554fb1133a (2026-08-15).
Data as JSON: /api/errors/380bbeeb1e06b92e.
Report an issue: GitHub.