Stargate访问Cassandra的Materialized view返回404是什么原因?
Datastax Cassandra物化视图Stargate REST API 404问题解决方案
你收到的原始报错如下:
{ "description": "Resource not found: table 'view_user_by_status' not found", "code": 404 }
报错翻译:描述:未找到资源:表/视图view_user_by_status不存在,错误码:404
排查与解决步骤
- 元数据同步延迟
Stargate节点会缓存Cassandra集群的表、视图元数据,刚创建完物化视图就调用接口会因为缓存未刷新导致找不到资源。
解决方法:等待30~60秒后重试,或者重启Stargate节点强制刷新元数据缓存。 - 请求路径键空间配置错误
Stargate REST API需要在请求路径中明确指定键空间(keyspace),如果键空间拼写错误、和创建物化视图的键空间不一致就会返回404。
解决方法:检查请求路径是否符合规范,示例正确路径格式为http://<stargate服务地址>:8082/v2/keyspaces/<你的键空间名>/view_user_by_status,确认路径中键空间拼写、大小写和实际一致。 - 物化视图未创建成功
Cassandra物化视图创建是异步操作,执行创建语句不报错不代表视图构建完成,基表数据量过大、节点异常都可能导致构建失败。
解决方法:登录Cassandra节点执行CQL命令DESCRIBE MATERIALIZED VIEW <你的键空间名>.view_user_by_status;确认视图存在,不存在则重新执行创建语句。 - 权限配置错误
部分版本的Stargate在访问角色没有视图SELECT权限时,会返回404而非权限不足的403错误。
解决方法:给Stargate使用的Cassandra角色授权,执行CQL命令GRANT SELECT ON MATERIALIZED VIEW <你的键空间名>.view_user_by_status TO <stargate使用的角色名>;
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

