bug: CREATE OR REPLACE VIEW ClickHouse migration incompatible with NFS filesystems (Amazon EFS)

用户在自托管 Langfuse 环境中,ClickHouse 数据目录挂载了 NFS 文件系统(如 Amazon EFS)。当升级到包含 PR #14872 的版本(该 PR 引入了 CREATE OR REPLACE VIEW 语句)后,ClickHouse 迁移在启动时失败,导致 ClickHo

bug: CREATE OR REPLACE VIEW ClickHouse migration incompatible with NFS filesystems (Amazon EFS)

bug: CREATE OR REPLACE VIEW ClickHouse migration incompatible with NFS filesystems (Amazon EFS)

快速结论:该报错发生在自托管 Langfuse 并且 ClickHouse 数据目录使用 NFS 文件系统(如 Amazon EFS)时。优先排查是否使用了 CREATE OR REPLACE VIEW 这类原子替换语句,并考虑回退到 v3.198.0 或改用 DROP VIEW + CREATE VIEW 方式。

问题场景

用户在自托管 Langfuse 环境中,ClickHouse 数据目录挂载了 NFS 文件系统(如 Amazon EFS)。当升级到包含 PR #14872 的版本(该 PR 引入了 CREATE OR REPLACE VIEW 语句)后,ClickHouse 迁移在启动时失败,导致 ClickHouse 服务停止且无法自动恢复。

报错原文

ClickHouse migration using CREATE OR REPLACE VIEW fails due to incompatibility with NFS-based filesystems (e.g., Amazon EFS). The migration aborts, and the ClickHouse server stops.

原因分析

根本原因是 CREATE OR REPLACE VIEW 是 ClickHouse 的原子替换操作,需要文件系统支持原子重命名(如 POSIX rename 原子性)。NFS 文件系统(包括 Amazon EFS)不保证该操作的原子性,因此会失败。

可能原因还包括:使用了其他原子替换语句(如 CREATE OR REPLACE TABLEEXCHANGE TABLES 等),这些语句在 NFS 上同样不兼容。

环境排查

  • 确认 ClickHouse 数据目录是否挂载在 NFS 文件系统(如 Amazon EFS)上。
  • 检查 Langfuse 版本是否包含 PR #14872 的变更(即引入了 CREATE OR REPLACE VIEW 的版本)。
  • 确认回退到旧版本(如 v3.198.0)是否能解决问题。
  • 查看 ClickHouse 服务器日志,确认迁移失败的具体 SQL 语句。

解决步骤

  1. 临时回退:将 Langfuse 版本回退到迁移未引入 CREATE OR REPLACE VIEW 的版本(例如 v3.198.0),确保服务恢复正常。
  2. 修改迁移脚本:CREATE OR REPLACE VIEW 替换为两步操作:DROP VIEW <view_name>CREATE VIEW <view_name> AS <query>
  3. 检查所有原子替换语句:排查迁移脚本中是否还包含其他不兼容的语句(如 CREATE OR REPLACE TABLEEXCHANGE TABLESEXCHANGE DICTIONARIES),并改用非原子操作。
  4. 应用补丁:如果官方已发布修复版本,直接升级到包含修复的版本。

验证方法

完成修改后重新启动 ClickHouse 和 Langfuse,观察迁移是否完整执行且不报错。可以通过 ClickHouse 客户端查询视图是否存在并返回正确结果。如果使用回退方案,确认服务稳定运行两天以上。

参考来源

langfuse/langfuse #14906

celebrityanime
celebrityanime
文章: 13361

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注