{"record":{"id":"8ff1a71beffac042","repo":"infiniflow/ragflow","slug":"gitlab-8ff1a7","errorCode":null,"errorMessage":"Gitlab","messagePattern":"Gitlab","errorType":"validation","errorClass":"ConnectorMissingCredentialError","httpStatus":null,"severity":"error","filePath":"common/data_source/gitlab_connector.py","lineNumber":208,"sourceCode":"                f\"{self.project_owner}/{self.project_name}\",\n                lazy=True,\n            )\n\n        except gitlab.exceptions.GitlabAuthenticationError as e:\n            raise CredentialExpiredError(\"Invalid or expired GitLab credentials.\") from e\n\n        except gitlab.exceptions.GitlabAuthorizationError as e:\n            raise InsufficientPermissionsError(\"Insufficient permissions to access GitLab resources.\") from e\n\n        except gitlab.exceptions.GitlabGetError as e:\n            raise ConnectorValidationError(\"GitLab project not found or not accessible.\") from e\n\n        except Exception as e:\n            raise UnexpectedValidationError(f\"Unexpected error while validating GitLab settings: {e}\") from e\n\n    def _fetch_from_gitlab(self, start: datetime | None = None, end: datetime | None = None) -> GenerateDocumentsOutput:\n        if self.gitlab_client is None:\n            raise ConnectorMissingCredentialError(\"Gitlab\")\n        project: Project = self.gitlab_client.projects.get(f\"{self.project_owner}/{self.project_name}\")\n\n        start_utc = start.astimezone(timezone.utc) if start else None\n        end_utc = end.astimezone(timezone.utc) if end else None\n\n        # Fetch code files\n        if self.include_code_files:\n            # Fetching using BFS as project.report_tree with recursion causing slow load\n            queue = deque([\"\"])  # Start with the root directory\n            while queue:\n                current_path = queue.popleft()\n                files = project.repository_tree(path=current_path, all=True)\n                for file_batch in _batch_gitlab_objects(files, self.batch_size):\n                    code_doc_batch: list[Document] = []\n                    for file in file_batch:\n                        if _should_exclude(file[\"path\"]):\n                            continue\n","sourceCodeStart":190,"sourceCodeEnd":226,"githubUrl":"https://github.com/infiniflow/ragflow/blob/554fb1133ac3861732235ad9c377eb5e0a770665/common/data_source/gitlab_connector.py#L190-L226","documentation":"Error \"Gitlab\" thrown in infiniflow/ragflow.","triggerScenarios":"Thrown at common/data_source/gitlab_connector.py:208 when the library encounters an invalid state.","commonSituations":"A generic GitLab connector failure occurs, typically from incomplete credentials or an unreachable instance; completing the configuration prevents this error.","solutions":["Review the connector credential payload; required GitLab fields must be present.","Check connector logs for the specific validation failure."],"exampleFix":"credentials = {'gitlab_token': '<token>', 'project': 'group/project'}","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"554fb1133ac3861732235ad9c377eb5e0a770665","analyzedAt":"2026-08-15T09:20:16.380Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}