Skip to content

[Bug修复] Neo4j社区版update_node未同步Qdrant + schedule依赖缺失导致Thread-3启动失败 #1469

@zwcf5200

Description

@zwcf5200

问题描述

问题1:Neo4jCommunityGraphDB update_node未同步Qdrant payload

严重性:High
影响范围:所有使用Neo4j社区版的用户

问题详情

  • Neo4jCommunityGraphDB继承父类update_node方法,只更新Neo4j数据库
  • 不同步关键字段(status, tags, memory_type等)到Qdrant向量数据库
  • 导致Neo4j和Qdrant状态不一致,搜索可能返回已归档的记忆

问题2:schedule依赖缺失导致Thread-3启动失败

严重性:Critical
影响范围:MemOS核心功能(冲突检测、记忆归档)

问题详情

  • reorganizer.py使用@require_python_package("schedule")装饰器
  • docker/requirements.txt缺少schedule模块定义
  • Thread-3启动时ImportError,冲突检测功能失效

已修复(dev分支)

Commit历史

Commit 修复内容
f3e7597 Neo4jCommunityGraphDB update_node同步Qdrant payload
c2447d8 load_dotenv指定路径+override确保环境变量加载
37b2e0f requirements.txt添加schedule==1.2.2依赖
12651c3 Dockerfile.dev pip代理禁用配置

修复详情

问题1修复(src/memos/graph_dbs/neo4j_community.py):

async def update_node(self, node_id: str, properties: dict) -> None:
    """Update node in Neo4j and sync key fields to Qdrant."""
    # 先更新Neo4j
    await super().update_node(node_id, properties)
    
    # 同步关键字段到Qdrant
    sync_fields = {"status", "tags", "memory_type", "content", "sources"}
    payload_updates = {k: v for k, v in properties.items() if k in sync_fields}
    if payload_updates:
        await self._qdrant.set_payload(payload_updates, {"node_id": node_id})

问题2修复(docker/requirements.txt):

schedule==1.2.2

问题3修复(docker/Dockerfile.dev):

RUN unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY no_proxy && \
    pip config set global.proxy "" && \
    pip install --upgrade pip --proxy="" && \
    pip install --no-cache-dir --proxy="" -r requirements.txt

验证结果

✅ Thread-3正常启动(is_alive=true)
✅ 冲突检测功能正常工作
✅ Neo4j和Qdrant状态同步一致


相关Issue

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions