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

Labels

ai-doneAI task completed successfullybugSomething isn't working | 功能异常memosCore MemOS logic (memory, MCP, scheduler, API, database) | 核心模块

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions