S01004

错误代码

S01004

报错信息

<WARNING> openChunks attempted to colocate chunk <xxx> with sibling chunks but failed. The replicas for sibling chunks are expected to be xxx, but found xxx. RefId:S01004

错误原因

新增 chunk 时需要选择新 chunk 的副本置于哪些节点,选择逻辑是先选与新chunk有同样分区的其他chunk所在的节点,以确保同一分区下的所有 chunk 尽量分布在相同节点。由此,执行 SQL 查询时,同一个库下同一个分区的数据都可以在同一个节点获取。

如果新增 chunk 时找到的有同样分区的其他 chunk 所在的节点数少于副本数,该警告消息会抛出。具体而言,新增 chunk 时,对应的分区下有其他表,但其他表在该分区的 chunk 的副本不都在线。例如:表 pt1 在 20230101 分区存有数据,副本分布在节点 node1 和 node2 上,且此时 node2 不在线。此时,如果表 pt2 向 20230101 分区写入数据,并需要新增 chunk,会检测到同样分区的 chunk 只有一个副本在线,该警告消息抛出:

openChunks attempted to colocate chunk <xxx> with sibling chunks but failed. The replicas for sibling chunks are expected to be 2, but found 1. RefId:S01004

解决办法

检查该警告消息出现时是否有节点不在线。