Skip to content

fix: restore vectors when segments are re-enabled via API - #39999

Open
jasonfish568 wants to merge 4 commits into
langgenius:mainfrom
jasonfish568:bugfix/fix-enable-segment
Open

fix: restore vectors when segments are re-enabled via API#39999
jasonfish568 wants to merge 4 commits into
langgenius:mainfrom
jasonfish568:bugfix/fix-enable-segment

Conversation

@jasonfish568

Copy link
Copy Markdown
Contributor

Summary

Fixes #39988.

The Service API used the segment update path for enabled: true. After a segment was disabled, its vector had already been deleted, so updating the missing Elasticsearch document did not restore it.

This change reuses the existing enable flow used by the Web Console when the request only sets enabled: true. Requests that also change content or keywords keep the current update behavior. This keeps Web and Service API behavior on the same code path and avoids duplicating indexing logic.

Validation

  • make lint
  • make type-check
  • make test TARGET_TESTS=api/tests/unit_tests/services/test_dataset_service_segment.py (44 passed)
  • Docker E2E with Tongyi embedding and Elasticsearch: disable removed the vector, API-only enable recreated it, and retrieval returned the segment

From Codex

Route enable-only segment updates through the existing async status flow so disabled vectors are rebuilt instead of synchronously updated.

Refs langgenius#39988
@dosubot dosubot Bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Aug 4, 2026
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Pyrefly Diff

base → PR
--- /tmp/pyrefly_base.txt	2026-08-05 13:06:44.221520285 +0000
+++ /tmp/pyrefly_pr.txt	2026-08-05 13:06:30.413423296 +0000
@@ -7663,13 +7663,13 @@
 ERROR Argument `SimpleNamespace` is not assignable to parameter `dataset` with type `Dataset` in function `services.dataset_service.SegmentService.delete_child_chunk` [bad-argument-type]
    --> tests/unit_tests/services/test_dataset_service_segment.py:280:64
 ERROR Argument `SimpleNamespace` is not assignable to parameter `segment` with type `DocumentSegment` in function `services.dataset_service.SegmentService.update_child_chunk` [bad-argument-type]
-   --> tests/unit_tests/services/test_dataset_service_segment.py:953:49
+    --> tests/unit_tests/services/test_dataset_service_segment.py:1010:49
 ERROR Argument `SimpleNamespace` is not assignable to parameter `document` with type `Document` in function `services.dataset_service.SegmentService.update_child_chunk` [bad-argument-type]
-   --> tests/unit_tests/services/test_dataset_service_segment.py:953:68
+    --> tests/unit_tests/services/test_dataset_service_segment.py:1010:68
 ERROR Argument `SimpleNamespace` is not assignable to parameter `dataset` with type `Dataset` in function `services.dataset_service.SegmentService.update_child_chunk` [bad-argument-type]
-   --> tests/unit_tests/services/test_dataset_service_segment.py:953:87
+    --> tests/unit_tests/services/test_dataset_service_segment.py:1010:87
 ERROR Argument `SimpleNamespace` is not assignable to parameter `dataset` with type `Dataset` in function `services.dataset_service.SegmentService.delete_child_chunk` [bad-argument-type]
-   --> tests/unit_tests/services/test_dataset_service_segment.py:967:60
+    --> tests/unit_tests/services/test_dataset_service_segment.py:1024:60
 ERROR Argument `str` is not assignable to parameter `type` with type `Literal['basic', 'bearer', 'custom'] | None` in function `services.entities.external_knowledge_entities.external_knowledge_entities.AuthorizationConfig.__init__` [bad-argument-type]
    --> tests/unit_tests/services/test_external_dataset_service.py:119:60
 ERROR Argument `str` is not assignable to parameter `type` with type `Literal['api-key', 'no-auth']` in function `services.entities.external_knowledge_entities.external_knowledge_entities.Authorization.__init__` [bad-argument-type]

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Pyrefly Type Coverage

Metric Base PR Delta
Type coverage 57.36% 57.36% -0.00%
Strict coverage 56.94% 56.94% -0.00%
Typed symbols 37,032 37,032 0
Untyped symbols 27,731 27,735 +4
Modules 3103 3103 0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS This PR changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Service API cannot re-enable a segment with Elasticsearch after disabling it (regression of #10445)

1 participant