diff --git a/docs/zh/01-index.md b/docs/zh/01-index.md index 6ba8f021a7..df6c327866 100644 --- a/docs/zh/01-index.md +++ b/docs/zh/01-index.md @@ -8,7 +8,7 @@ TDengine 是一款[开源](https://www.taosdata.com/tdengine/open_source_time-se TDengine 充分利用了时序数据的特点,提出了“一个数据采集点一张表”与“超级表”的概念,设计了创新的存储引擎,让数据的写入、查询和存储效率都得到极大的提升。为正确理解并使用 TDengine,无论如何,请您仔细阅读[快速入门](./basic)一章。 -如果你是开发工程师,请一定仔细阅读[开发指南](./develop)一章,该部分对数据库连接、建模、插入数据、查询、流式计算、缓存、数据订阅、用户自定义函数等功能都做了详细介绍,并配有各种编程语言的示例代码。大部分情况下,你只要复制粘贴示例代码,针对自己的应用稍作改动,就能跑起来。 +如果你是开发工程师,请一定仔细阅读[开发指南](./develop)一章,该部分对数据库连接、建模、插入数据、查询、流式计算、缓存、数据订阅、用户自定义函数等功能都做了详细介绍,并配有各种编程语言的示例代码。大部分情况下,你只要复制粘贴示例代码,针对自己的应用稍作改动,就能跑起来。对 REST API、各种编程语言的连接器(Connector)想做更多详细了解的话,请看[连接器](./reference/connector)一章。 我们已经生活在大数据时代,纵向扩展已经无法满足日益增长的业务需求,任何系统都必须具有水平扩展的能力,集群成为大数据以及 Database 系统的不可缺失功能。TDengine 团队不仅实现了集群功能,而且将这一重要核心功能开源。怎么部署、管理和维护 TDengine 集群,请仔细参考[运维管理](./operation)一章。 @@ -16,8 +16,6 @@ TDengine 采用 SQL 作为查询语言,大大降低学习成本、降低迁移 如果你是系统管理员,关心安装、升级、容错灾备、关心数据导入、导出、配置参数,如何监测 TDengine 是否健康运行,如何提升系统运行的性能,请仔细参考[运维指南](./operation)一章。 -如果你对 TDengine 的产品组件、REST API、各种编程语言的连接器(Connector)想做更多详细了解,请看[参考指南](./reference)一章。 - 最后,作为一个开源软件,欢迎大家的参与。如果发现文档有任何错误、描述不清晰的地方,请在每个页面的最下方,点击“编辑本文档”直接进行修改。 Together, we make a difference! diff --git a/docs/zh/04-get-started/01-docker.md b/docs/zh/04-get-started/01-docker.md index 364e00f8f2..1d425fed6b 100644 --- a/docs/zh/04-get-started/01-docker.md +++ b/docs/zh/04-get-started/01-docker.md @@ -1,6 +1,6 @@ --- -sidebar_label: Docker -title: 通过 Docker 快速体验 TDengine +sidebar_label: 用Docker快速体验 +title: 用 Docker 快速体验 TDengine description: 使用 Docker 快速体验 TDengine 的高效写入和查询 --- diff --git a/docs/zh/04-get-started/03-package.md b/docs/zh/04-get-started/03-package.md index 7df41af831..de479fb06e 100644 --- a/docs/zh/04-get-started/03-package.md +++ b/docs/zh/04-get-started/03-package.md @@ -1,6 +1,6 @@ --- -sidebar_label: 安装包 -title: 使用安装包立即开始 +sidebar_label: 用安装包快速体验 +title: 使用安装包快速体验 TDengine description: 使用安装包快速体验 TDengine --- diff --git a/docs/zh/04-get-started/05-cloud.md b/docs/zh/04-get-started/05-cloud.md index 1d01abb1bb..bd76add527 100644 --- a/docs/zh/04-get-started/05-cloud.md +++ b/docs/zh/04-get-started/05-cloud.md @@ -1,6 +1,6 @@ --- -sidebar_label: 云服务 -title: 通过 云服务 快速体验 TDengine +sidebar_label: 用云服务快速体验 +title: 通过云服务 快速体验 TDengine toc_max_heading_level: 4 --- diff --git a/docs/zh/04-get-started/index.md b/docs/zh/04-get-started/index.md index 4422efbf60..4d9f7ceae5 100644 --- a/docs/zh/04-get-started/index.md +++ b/docs/zh/04-get-started/index.md @@ -1,5 +1,5 @@ --- -title: 立即开始 +title: 快速体验 description: '快速设置 TDengine 环境并体验其高效写入和查询' --- diff --git a/docs/zh/05-basic/index.md b/docs/zh/05-basic/index.md index 18dcd3fc9c..f579dcb3a0 100644 --- a/docs/zh/05-basic/index.md +++ b/docs/zh/05-basic/index.md @@ -1,6 +1,6 @@ --- -title: 快速入门 -description: 'TDengine 基本功能' +title: 基础功能 +description: 'TDengine 基础功能' --- 本章主要介绍 TDengine 的数据模型以及写入和查询功能。 diff --git a/docs/zh/08-develop/01-connect/_connect_c.mdx b/docs/zh/07-develop/01-connect/_connect_c.mdx similarity index 100% rename from docs/zh/08-develop/01-connect/_connect_c.mdx rename to docs/zh/07-develop/01-connect/_connect_c.mdx diff --git a/docs/zh/08-develop/01-connect/_connect_cs.mdx b/docs/zh/07-develop/01-connect/_connect_cs.mdx similarity index 100% rename from docs/zh/08-develop/01-connect/_connect_cs.mdx rename to docs/zh/07-develop/01-connect/_connect_cs.mdx diff --git a/docs/zh/08-develop/01-connect/_connect_go.mdx b/docs/zh/07-develop/01-connect/_connect_go.mdx similarity index 100% rename from docs/zh/08-develop/01-connect/_connect_go.mdx rename to docs/zh/07-develop/01-connect/_connect_go.mdx diff --git a/docs/zh/08-develop/01-connect/_connect_java.mdx b/docs/zh/07-develop/01-connect/_connect_java.mdx similarity index 100% rename from docs/zh/08-develop/01-connect/_connect_java.mdx rename to docs/zh/07-develop/01-connect/_connect_java.mdx diff --git a/docs/zh/08-develop/01-connect/_connect_node.mdx b/docs/zh/07-develop/01-connect/_connect_node.mdx similarity index 100% rename from docs/zh/08-develop/01-connect/_connect_node.mdx rename to docs/zh/07-develop/01-connect/_connect_node.mdx diff --git a/docs/zh/08-develop/01-connect/_connect_php.mdx b/docs/zh/07-develop/01-connect/_connect_php.mdx similarity index 100% rename from docs/zh/08-develop/01-connect/_connect_php.mdx rename to docs/zh/07-develop/01-connect/_connect_php.mdx diff --git a/docs/zh/08-develop/01-connect/_connect_python.mdx b/docs/zh/07-develop/01-connect/_connect_python.mdx similarity index 100% rename from docs/zh/08-develop/01-connect/_connect_python.mdx rename to docs/zh/07-develop/01-connect/_connect_python.mdx diff --git a/docs/zh/08-develop/01-connect/_connect_r.mdx b/docs/zh/07-develop/01-connect/_connect_r.mdx similarity index 100% rename from docs/zh/08-develop/01-connect/_connect_r.mdx rename to docs/zh/07-develop/01-connect/_connect_r.mdx diff --git a/docs/zh/08-develop/01-connect/_connect_rust.mdx b/docs/zh/07-develop/01-connect/_connect_rust.mdx similarity index 100% rename from docs/zh/08-develop/01-connect/_connect_rust.mdx rename to docs/zh/07-develop/01-connect/_connect_rust.mdx diff --git a/docs/zh/08-develop/01-connect/connection-type-zh.webp b/docs/zh/07-develop/01-connect/connection-type-zh.webp similarity index 100% rename from docs/zh/08-develop/01-connect/connection-type-zh.webp rename to docs/zh/07-develop/01-connect/connection-type-zh.webp diff --git a/docs/zh/08-develop/01-connect/index.md b/docs/zh/07-develop/01-connect/index.md similarity index 100% rename from docs/zh/08-develop/01-connect/index.md rename to docs/zh/07-develop/01-connect/index.md diff --git a/docs/zh/08-develop/02-sql.md b/docs/zh/07-develop/02-sql.md similarity index 100% rename from docs/zh/08-develop/02-sql.md rename to docs/zh/07-develop/02-sql.md diff --git a/docs/zh/08-develop/04-schemaless.md b/docs/zh/07-develop/04-schemaless.md similarity index 100% rename from docs/zh/08-develop/04-schemaless.md rename to docs/zh/07-develop/04-schemaless.md diff --git a/docs/zh/08-develop/05-stmt.md b/docs/zh/07-develop/05-stmt.md similarity index 100% rename from docs/zh/08-develop/05-stmt.md rename to docs/zh/07-develop/05-stmt.md diff --git a/docs/zh/08-develop/07-tmq.md b/docs/zh/07-develop/07-tmq.md similarity index 100% rename from docs/zh/08-develop/07-tmq.md rename to docs/zh/07-develop/07-tmq.md diff --git a/docs/zh/08-develop/09-udf.md b/docs/zh/07-develop/09-udf.md similarity index 100% rename from docs/zh/08-develop/09-udf.md rename to docs/zh/07-develop/09-udf.md diff --git a/docs/zh/08-develop/15-high.md b/docs/zh/07-develop/15-high.md similarity index 100% rename from docs/zh/08-develop/15-high.md rename to docs/zh/07-develop/15-high.md diff --git a/docs/zh/08-develop/_sub_c.mdx b/docs/zh/07-develop/_sub_c.mdx similarity index 100% rename from docs/zh/08-develop/_sub_c.mdx rename to docs/zh/07-develop/_sub_c.mdx diff --git a/docs/zh/08-develop/_sub_cs.mdx b/docs/zh/07-develop/_sub_cs.mdx similarity index 100% rename from docs/zh/08-develop/_sub_cs.mdx rename to docs/zh/07-develop/_sub_cs.mdx diff --git a/docs/zh/08-develop/_sub_go.mdx b/docs/zh/07-develop/_sub_go.mdx similarity index 100% rename from docs/zh/08-develop/_sub_go.mdx rename to docs/zh/07-develop/_sub_go.mdx diff --git a/docs/zh/08-develop/_sub_java.mdx b/docs/zh/07-develop/_sub_java.mdx similarity index 100% rename from docs/zh/08-develop/_sub_java.mdx rename to docs/zh/07-develop/_sub_java.mdx diff --git a/docs/zh/08-develop/_sub_java_ws.mdx b/docs/zh/07-develop/_sub_java_ws.mdx similarity index 100% rename from docs/zh/08-develop/_sub_java_ws.mdx rename to docs/zh/07-develop/_sub_java_ws.mdx diff --git a/docs/zh/08-develop/_sub_node.mdx b/docs/zh/07-develop/_sub_node.mdx similarity index 100% rename from docs/zh/08-develop/_sub_node.mdx rename to docs/zh/07-develop/_sub_node.mdx diff --git a/docs/zh/08-develop/_sub_python.mdx b/docs/zh/07-develop/_sub_python.mdx similarity index 100% rename from docs/zh/08-develop/_sub_python.mdx rename to docs/zh/07-develop/_sub_python.mdx diff --git a/docs/zh/08-develop/_sub_rust.mdx b/docs/zh/07-develop/_sub_rust.mdx similarity index 100% rename from docs/zh/08-develop/_sub_rust.mdx rename to docs/zh/07-develop/_sub_rust.mdx diff --git a/docs/zh/08-develop/addsource.png b/docs/zh/07-develop/addsource.png similarity index 100% rename from docs/zh/08-develop/addsource.png rename to docs/zh/07-develop/addsource.png diff --git a/docs/zh/08-develop/dashboard.png b/docs/zh/07-develop/dashboard.png similarity index 100% rename from docs/zh/08-develop/dashboard.png rename to docs/zh/07-develop/dashboard.png diff --git a/docs/zh/08-develop/dashboard2.png b/docs/zh/07-develop/dashboard2.png similarity index 100% rename from docs/zh/08-develop/dashboard2.png rename to docs/zh/07-develop/dashboard2.png diff --git a/docs/zh/08-develop/highvolume.webp b/docs/zh/07-develop/highvolume.webp similarity index 100% rename from docs/zh/08-develop/highvolume.webp rename to docs/zh/07-develop/highvolume.webp diff --git a/docs/zh/08-develop/img_5.png b/docs/zh/07-develop/img_5.png similarity index 100% rename from docs/zh/08-develop/img_5.png rename to docs/zh/07-develop/img_5.png diff --git a/docs/zh/08-develop/img_6.png b/docs/zh/07-develop/img_6.png similarity index 100% rename from docs/zh/08-develop/img_6.png rename to docs/zh/07-develop/img_6.png diff --git a/docs/zh/08-develop/img_7.png b/docs/zh/07-develop/img_7.png similarity index 100% rename from docs/zh/08-develop/img_7.png rename to docs/zh/07-develop/img_7.png diff --git a/docs/zh/08-develop/index.md b/docs/zh/07-develop/index.md similarity index 100% rename from docs/zh/08-develop/index.md rename to docs/zh/07-develop/index.md diff --git a/docs/zh/07-operation/tdengine-topology.png b/docs/zh/07-operation/tdengine-topology.png deleted file mode 100644 index c2a2dee550..0000000000 Binary files a/docs/zh/07-operation/tdengine-topology.png and /dev/null differ diff --git a/docs/zh/07-operation/01-intro.md b/docs/zh/08-operation/01-intro.md similarity index 100% rename from docs/zh/07-operation/01-intro.md rename to docs/zh/08-operation/01-intro.md diff --git a/docs/zh/07-operation/02-planning.md b/docs/zh/08-operation/02-planning.md similarity index 100% rename from docs/zh/07-operation/02-planning.md rename to docs/zh/08-operation/02-planning.md diff --git a/docs/zh/07-operation/03-deployment.md b/docs/zh/08-operation/03-deployment.md similarity index 100% rename from docs/zh/07-operation/03-deployment.md rename to docs/zh/08-operation/03-deployment.md diff --git a/docs/zh/07-operation/04-maintenance.md b/docs/zh/08-operation/04-maintenance.md similarity index 100% rename from docs/zh/07-operation/04-maintenance.md rename to docs/zh/08-operation/04-maintenance.md diff --git a/docs/zh/07-operation/05-monitor.md b/docs/zh/08-operation/05-monitor.md similarity index 100% rename from docs/zh/07-operation/05-monitor.md rename to docs/zh/08-operation/05-monitor.md diff --git a/docs/zh/07-operation/06-gui.md b/docs/zh/08-operation/06-gui.md similarity index 100% rename from docs/zh/07-operation/06-gui.md rename to docs/zh/08-operation/06-gui.md diff --git a/docs/zh/07-operation/09-backup.md b/docs/zh/08-operation/09-backup.md similarity index 100% rename from docs/zh/07-operation/09-backup.md rename to docs/zh/08-operation/09-backup.md diff --git a/docs/zh/07-operation/10-disaster.md b/docs/zh/08-operation/10-disaster.md similarity index 100% rename from docs/zh/07-operation/10-disaster.md rename to docs/zh/08-operation/10-disaster.md diff --git a/docs/zh/07-operation/12-multi.md b/docs/zh/08-operation/12-multi.md similarity index 100% rename from docs/zh/07-operation/12-multi.md rename to docs/zh/08-operation/12-multi.md diff --git a/docs/zh/07-operation/14-user.md b/docs/zh/08-operation/14-user.md similarity index 100% rename from docs/zh/07-operation/14-user.md rename to docs/zh/08-operation/14-user.md diff --git a/docs/zh/07-operation/16-security.md b/docs/zh/08-operation/16-security.md similarity index 100% rename from docs/zh/07-operation/16-security.md rename to docs/zh/08-operation/16-security.md diff --git a/docs/zh/07-operation/18-dual.md b/docs/zh/08-operation/18-dual.md similarity index 100% rename from docs/zh/07-operation/18-dual.md rename to docs/zh/08-operation/18-dual.md diff --git a/docs/zh/07-operation/Active-Standby.png b/docs/zh/08-operation/Active-Standby.png similarity index 100% rename from docs/zh/07-operation/Active-Standby.png rename to docs/zh/08-operation/Active-Standby.png diff --git a/docs/zh/07-operation/TDinsight-1-cluster-status.webp b/docs/zh/08-operation/TDinsight-1-cluster-status.webp similarity index 100% rename from docs/zh/07-operation/TDinsight-1-cluster-status.webp rename to docs/zh/08-operation/TDinsight-1-cluster-status.webp diff --git a/docs/zh/07-operation/grafana.png b/docs/zh/08-operation/grafana.png similarity index 100% rename from docs/zh/07-operation/grafana.png rename to docs/zh/08-operation/grafana.png diff --git a/docs/zh/07-operation/index.md b/docs/zh/08-operation/index.md similarity index 100% rename from docs/zh/07-operation/index.md rename to docs/zh/08-operation/index.md diff --git a/docs/zh/07-operation/pic/Active-Standby.png b/docs/zh/08-operation/pic/Active-Standby.png similarity index 100% rename from docs/zh/07-operation/pic/Active-Standby.png rename to docs/zh/08-operation/pic/Active-Standby.png diff --git a/docs/zh/07-operation/pic/agent-01.png b/docs/zh/08-operation/pic/agent-01.png similarity index 100% rename from docs/zh/07-operation/pic/agent-01.png rename to docs/zh/08-operation/pic/agent-01.png diff --git a/docs/zh/07-operation/pic/agent-02.png b/docs/zh/08-operation/pic/agent-02.png similarity index 100% rename from docs/zh/07-operation/pic/agent-02.png rename to docs/zh/08-operation/pic/agent-02.png diff --git a/docs/zh/07-operation/pic/agent-03.png b/docs/zh/08-operation/pic/agent-03.png similarity index 100% rename from docs/zh/07-operation/pic/agent-03.png rename to docs/zh/08-operation/pic/agent-03.png diff --git a/docs/zh/07-operation/pic/agent-04.png b/docs/zh/08-operation/pic/agent-04.png similarity index 100% rename from docs/zh/07-operation/pic/agent-04.png rename to docs/zh/08-operation/pic/agent-04.png diff --git a/docs/zh/07-operation/pic/datain-01.png b/docs/zh/08-operation/pic/datain-01.png similarity index 100% rename from docs/zh/07-operation/pic/datain-01.png rename to docs/zh/08-operation/pic/datain-01.png diff --git a/docs/zh/07-operation/pic/datain-02.png b/docs/zh/08-operation/pic/datain-02.png similarity index 100% rename from docs/zh/07-operation/pic/datain-02.png rename to docs/zh/08-operation/pic/datain-02.png diff --git a/docs/zh/07-operation/pic/datain-03.png b/docs/zh/08-operation/pic/datain-03.png similarity index 100% rename from docs/zh/07-operation/pic/datain-03.png rename to docs/zh/08-operation/pic/datain-03.png diff --git a/docs/zh/07-operation/pic/explorer-01-explorer-entry.jpeg b/docs/zh/08-operation/pic/explorer-01-explorer-entry.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-01-explorer-entry.jpeg rename to docs/zh/08-operation/pic/explorer-01-explorer-entry.jpeg diff --git a/docs/zh/07-operation/pic/explorer-02-createDbentry.jpeg b/docs/zh/08-operation/pic/explorer-02-createDbentry.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-02-createDbentry.jpeg rename to docs/zh/08-operation/pic/explorer-02-createDbentry.jpeg diff --git a/docs/zh/07-operation/pic/explorer-03-createDbPage.jpeg b/docs/zh/08-operation/pic/explorer-03-createDbPage.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-03-createDbPage.jpeg rename to docs/zh/08-operation/pic/explorer-03-createDbPage.jpeg diff --git a/docs/zh/07-operation/pic/explorer-04-createDbPage2.jpeg b/docs/zh/08-operation/pic/explorer-04-createDbPage2.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-04-createDbPage2.jpeg rename to docs/zh/08-operation/pic/explorer-04-createDbPage2.jpeg diff --git a/docs/zh/07-operation/pic/explorer-05-createDbtest01.jpeg b/docs/zh/08-operation/pic/explorer-05-createDbtest01.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-05-createDbtest01.jpeg rename to docs/zh/08-operation/pic/explorer-05-createDbtest01.jpeg diff --git a/docs/zh/07-operation/pic/explorer-06-sqlCreateDb.jpeg b/docs/zh/08-operation/pic/explorer-06-sqlCreateDb.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-06-sqlCreateDb.jpeg rename to docs/zh/08-operation/pic/explorer-06-sqlCreateDb.jpeg diff --git a/docs/zh/07-operation/pic/explorer-07-createDbtest02.jpeg b/docs/zh/08-operation/pic/explorer-07-createDbtest02.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-07-createDbtest02.jpeg rename to docs/zh/08-operation/pic/explorer-07-createDbtest02.jpeg diff --git a/docs/zh/07-operation/pic/explorer-08-createStbEntry.jpeg b/docs/zh/08-operation/pic/explorer-08-createStbEntry.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-08-createStbEntry.jpeg rename to docs/zh/08-operation/pic/explorer-08-createStbEntry.jpeg diff --git a/docs/zh/07-operation/pic/explorer-09-createStbPage.jpeg b/docs/zh/08-operation/pic/explorer-09-createStbPage.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-09-createStbPage.jpeg rename to docs/zh/08-operation/pic/explorer-09-createStbPage.jpeg diff --git a/docs/zh/07-operation/pic/explorer-10-createStbSucc.jpeg b/docs/zh/08-operation/pic/explorer-10-createStbSucc.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-10-createStbSucc.jpeg rename to docs/zh/08-operation/pic/explorer-10-createStbSucc.jpeg diff --git a/docs/zh/07-operation/pic/explorer-11-viewStableEntry.jpeg b/docs/zh/08-operation/pic/explorer-11-viewStableEntry.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-11-viewStableEntry.jpeg rename to docs/zh/08-operation/pic/explorer-11-viewStableEntry.jpeg diff --git a/docs/zh/07-operation/pic/explorer-12-viewStableInfo.jpeg b/docs/zh/08-operation/pic/explorer-12-viewStableInfo.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-12-viewStableInfo.jpeg rename to docs/zh/08-operation/pic/explorer-12-viewStableInfo.jpeg diff --git a/docs/zh/07-operation/pic/explorer-13-editStableEntry.jpeg b/docs/zh/08-operation/pic/explorer-13-editStableEntry.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-13-editStableEntry.jpeg rename to docs/zh/08-operation/pic/explorer-13-editStableEntry.jpeg diff --git a/docs/zh/07-operation/pic/explorer-14-editStableInfo.jpeg b/docs/zh/08-operation/pic/explorer-14-editStableInfo.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-14-editStableInfo.jpeg rename to docs/zh/08-operation/pic/explorer-14-editStableInfo.jpeg diff --git a/docs/zh/07-operation/pic/explorer-15-delStb.jpeg b/docs/zh/08-operation/pic/explorer-15-delStb.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-15-delStb.jpeg rename to docs/zh/08-operation/pic/explorer-15-delStb.jpeg diff --git a/docs/zh/07-operation/pic/explorer-16-sqlEditor.jpeg b/docs/zh/08-operation/pic/explorer-16-sqlEditor.jpeg similarity index 100% rename from docs/zh/07-operation/pic/explorer-16-sqlEditor.jpeg rename to docs/zh/08-operation/pic/explorer-16-sqlEditor.jpeg diff --git a/docs/zh/07-operation/pic/explorer-17-favoritesAdd.png b/docs/zh/08-operation/pic/explorer-17-favoritesAdd.png similarity index 100% rename from docs/zh/07-operation/pic/explorer-17-favoritesAdd.png rename to docs/zh/08-operation/pic/explorer-17-favoritesAdd.png diff --git a/docs/zh/07-operation/pic/explorer-18-favoritesAddPublic.png b/docs/zh/08-operation/pic/explorer-18-favoritesAddPublic.png similarity index 100% rename from docs/zh/07-operation/pic/explorer-18-favoritesAddPublic.png rename to docs/zh/08-operation/pic/explorer-18-favoritesAddPublic.png diff --git a/docs/zh/07-operation/pic/explorer-19-favoritesPublic.png b/docs/zh/08-operation/pic/explorer-19-favoritesPublic.png similarity index 100% rename from docs/zh/07-operation/pic/explorer-19-favoritesPublic.png rename to docs/zh/08-operation/pic/explorer-19-favoritesPublic.png diff --git a/docs/zh/07-operation/pic/explorer-20-favoritesCancelPublic.png b/docs/zh/08-operation/pic/explorer-20-favoritesCancelPublic.png similarity index 100% rename from docs/zh/07-operation/pic/explorer-20-favoritesCancelPublic.png rename to docs/zh/08-operation/pic/explorer-20-favoritesCancelPublic.png diff --git a/docs/zh/07-operation/pic/explorer-21-favoritesSearch.png b/docs/zh/08-operation/pic/explorer-21-favoritesSearch.png similarity index 100% rename from docs/zh/07-operation/pic/explorer-21-favoritesSearch.png rename to docs/zh/08-operation/pic/explorer-21-favoritesSearch.png diff --git a/docs/zh/07-operation/pic/explorer-22-favoritesDelete.png b/docs/zh/08-operation/pic/explorer-22-favoritesDelete.png similarity index 100% rename from docs/zh/07-operation/pic/explorer-22-favoritesDelete.png rename to docs/zh/08-operation/pic/explorer-22-favoritesDelete.png diff --git a/docs/zh/07-operation/pic/explorer-23-favoritesNotes.png b/docs/zh/08-operation/pic/explorer-23-favoritesNotes.png similarity index 100% rename from docs/zh/07-operation/pic/explorer-23-favoritesNotes.png rename to docs/zh/08-operation/pic/explorer-23-favoritesNotes.png diff --git a/docs/zh/07-operation/pic/management-01-importInfo.jpeg b/docs/zh/08-operation/pic/management-01-importInfo.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-01-importInfo.jpeg rename to docs/zh/08-operation/pic/management-01-importInfo.jpeg diff --git a/docs/zh/07-operation/pic/management-01-slowsql.jpeg b/docs/zh/08-operation/pic/management-01-slowsql.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-01-slowsql.jpeg rename to docs/zh/08-operation/pic/management-01-slowsql.jpeg diff --git a/docs/zh/07-operation/pic/management-01-systemEntry.jpeg b/docs/zh/08-operation/pic/management-01-systemEntry.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-01-systemEntry.jpeg rename to docs/zh/08-operation/pic/management-01-systemEntry.jpeg diff --git a/docs/zh/07-operation/pic/management-02-addUser.jpeg b/docs/zh/08-operation/pic/management-02-addUser.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-02-addUser.jpeg rename to docs/zh/08-operation/pic/management-02-addUser.jpeg diff --git a/docs/zh/07-operation/pic/management-02-addUserSucc.jpeg b/docs/zh/08-operation/pic/management-02-addUserSucc.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-02-addUserSucc.jpeg rename to docs/zh/08-operation/pic/management-02-addUserSucc.jpeg diff --git a/docs/zh/07-operation/pic/management-02-slowsql.jpeg b/docs/zh/08-operation/pic/management-02-slowsql.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-02-slowsql.jpeg rename to docs/zh/08-operation/pic/management-02-slowsql.jpeg diff --git a/docs/zh/07-operation/pic/management-04-backupEntry.jpeg b/docs/zh/08-operation/pic/management-04-backupEntry.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-04-backupEntry.jpeg rename to docs/zh/08-operation/pic/management-04-backupEntry.jpeg diff --git a/docs/zh/07-operation/pic/management-04-backupModal.jpeg b/docs/zh/08-operation/pic/management-04-backupModal.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-04-backupModal.jpeg rename to docs/zh/08-operation/pic/management-04-backupModal.jpeg diff --git a/docs/zh/07-operation/pic/management-06-cluster.jpeg b/docs/zh/08-operation/pic/management-06-cluster.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-06-cluster.jpeg rename to docs/zh/08-operation/pic/management-06-cluster.jpeg diff --git a/docs/zh/07-operation/pic/management-07-license.jpeg b/docs/zh/08-operation/pic/management-07-license.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-07-license.jpeg rename to docs/zh/08-operation/pic/management-07-license.jpeg diff --git a/docs/zh/07-operation/pic/management-08-activationCode.jpeg b/docs/zh/08-operation/pic/management-08-activationCode.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-08-activationCode.jpeg rename to docs/zh/08-operation/pic/management-08-activationCode.jpeg diff --git a/docs/zh/07-operation/pic/management-09-audit.jpeg b/docs/zh/08-operation/pic/management-09-audit.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-09-audit.jpeg rename to docs/zh/08-operation/pic/management-09-audit.jpeg diff --git a/docs/zh/07-operation/pic/management-10-replicationEntry.jpeg b/docs/zh/08-operation/pic/management-10-replicationEntry.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-10-replicationEntry.jpeg rename to docs/zh/08-operation/pic/management-10-replicationEntry.jpeg diff --git a/docs/zh/07-operation/pic/management-11-replicationModal.jpeg b/docs/zh/08-operation/pic/management-11-replicationModal.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-11-replicationModal.jpeg rename to docs/zh/08-operation/pic/management-11-replicationModal.jpeg diff --git a/docs/zh/07-operation/pic/management-12-licenseNew.jpeg b/docs/zh/08-operation/pic/management-12-licenseNew.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-12-licenseNew.jpeg rename to docs/zh/08-operation/pic/management-12-licenseNew.jpeg diff --git a/docs/zh/07-operation/pic/management-13-activationCodeNew.jpeg b/docs/zh/08-operation/pic/management-13-activationCodeNew.jpeg similarity index 100% rename from docs/zh/07-operation/pic/management-13-activationCodeNew.jpeg rename to docs/zh/08-operation/pic/management-13-activationCodeNew.jpeg diff --git a/docs/zh/07-operation/pic/monitor-01.jpg b/docs/zh/08-operation/pic/monitor-01.jpg similarity index 100% rename from docs/zh/07-operation/pic/monitor-01.jpg rename to docs/zh/08-operation/pic/monitor-01.jpg diff --git a/docs/zh/07-operation/pic/monitor-02.jpg b/docs/zh/08-operation/pic/monitor-02.jpg similarity index 100% rename from docs/zh/07-operation/pic/monitor-02.jpg rename to docs/zh/08-operation/pic/monitor-02.jpg diff --git a/docs/zh/07-operation/pic/monitor-03.png b/docs/zh/08-operation/pic/monitor-03.png similarity index 100% rename from docs/zh/07-operation/pic/monitor-03.png rename to docs/zh/08-operation/pic/monitor-03.png diff --git a/docs/zh/07-operation/pic/monitor-04.jpg b/docs/zh/08-operation/pic/monitor-04.jpg similarity index 100% rename from docs/zh/07-operation/pic/monitor-04.jpg rename to docs/zh/08-operation/pic/monitor-04.jpg diff --git a/docs/zh/07-operation/pic/monitor-05.png b/docs/zh/08-operation/pic/monitor-05.png similarity index 100% rename from docs/zh/07-operation/pic/monitor-05.png rename to docs/zh/08-operation/pic/monitor-05.png diff --git a/docs/zh/07-operation/pic/monitor-06.jpg b/docs/zh/08-operation/pic/monitor-06.jpg similarity index 100% rename from docs/zh/07-operation/pic/monitor-06.jpg rename to docs/zh/08-operation/pic/monitor-06.jpg diff --git a/docs/zh/07-operation/pic/monitor-07.png b/docs/zh/08-operation/pic/monitor-07.png similarity index 100% rename from docs/zh/07-operation/pic/monitor-07.png rename to docs/zh/08-operation/pic/monitor-07.png diff --git a/docs/zh/07-operation/pic/monitor-08.png b/docs/zh/08-operation/pic/monitor-08.png similarity index 100% rename from docs/zh/07-operation/pic/monitor-08.png rename to docs/zh/08-operation/pic/monitor-08.png diff --git a/docs/zh/07-operation/pic/monitor-09.jpg b/docs/zh/08-operation/pic/monitor-09.jpg similarity index 100% rename from docs/zh/07-operation/pic/monitor-09.jpg rename to docs/zh/08-operation/pic/monitor-09.jpg diff --git a/docs/zh/07-operation/pic/monitor-10.jpg b/docs/zh/08-operation/pic/monitor-10.jpg similarity index 100% rename from docs/zh/07-operation/pic/monitor-10.jpg rename to docs/zh/08-operation/pic/monitor-10.jpg diff --git a/docs/zh/07-operation/pic/stream-01-streamEntry.jpeg b/docs/zh/08-operation/pic/stream-01-streamEntry.jpeg similarity index 100% rename from docs/zh/07-operation/pic/stream-01-streamEntry.jpeg rename to docs/zh/08-operation/pic/stream-01-streamEntry.jpeg diff --git a/docs/zh/07-operation/pic/stream-02-createStreamEntry.jpeg b/docs/zh/08-operation/pic/stream-02-createStreamEntry.jpeg similarity index 100% rename from docs/zh/07-operation/pic/stream-02-createStreamEntry.jpeg rename to docs/zh/08-operation/pic/stream-02-createStreamEntry.jpeg diff --git a/docs/zh/07-operation/pic/stream-03-createStreamWizard.jpeg b/docs/zh/08-operation/pic/stream-03-createStreamWizard.jpeg similarity index 100% rename from docs/zh/07-operation/pic/stream-03-createStreamWizard.jpeg rename to docs/zh/08-operation/pic/stream-03-createStreamWizard.jpeg diff --git a/docs/zh/07-operation/pic/stream-04-createStreamWizard.jpeg b/docs/zh/08-operation/pic/stream-04-createStreamWizard.jpeg similarity index 100% rename from docs/zh/07-operation/pic/stream-04-createStreamWizard.jpeg rename to docs/zh/08-operation/pic/stream-04-createStreamWizard.jpeg diff --git a/docs/zh/07-operation/pic/stream-05-createStreamSucc1.jpeg b/docs/zh/08-operation/pic/stream-05-createStreamSucc1.jpeg similarity index 100% rename from docs/zh/07-operation/pic/stream-05-createStreamSucc1.jpeg rename to docs/zh/08-operation/pic/stream-05-createStreamSucc1.jpeg diff --git a/docs/zh/07-operation/pic/stream-06-createStreamSql.jpeg b/docs/zh/08-operation/pic/stream-06-createStreamSql.jpeg similarity index 100% rename from docs/zh/07-operation/pic/stream-06-createStreamSql.jpeg rename to docs/zh/08-operation/pic/stream-06-createStreamSql.jpeg diff --git a/docs/zh/07-operation/pic/stream-07-createStreamSucc2.jpeg b/docs/zh/08-operation/pic/stream-07-createStreamSucc2.jpeg similarity index 100% rename from docs/zh/07-operation/pic/stream-07-createStreamSucc2.jpeg rename to docs/zh/08-operation/pic/stream-07-createStreamSucc2.jpeg diff --git a/docs/zh/07-operation/pic/topic-01-dataSubscription.jpeg b/docs/zh/08-operation/pic/topic-01-dataSubscription.jpeg similarity index 100% rename from docs/zh/07-operation/pic/topic-01-dataSubscription.jpeg rename to docs/zh/08-operation/pic/topic-01-dataSubscription.jpeg diff --git a/docs/zh/07-operation/pic/topic-02-addTopic.jpeg b/docs/zh/08-operation/pic/topic-02-addTopic.jpeg similarity index 100% rename from docs/zh/07-operation/pic/topic-02-addTopic.jpeg rename to docs/zh/08-operation/pic/topic-02-addTopic.jpeg diff --git a/docs/zh/07-operation/pic/topic-03-addTopicWizard.jpeg b/docs/zh/08-operation/pic/topic-03-addTopicWizard.jpeg similarity index 100% rename from docs/zh/07-operation/pic/topic-03-addTopicWizard.jpeg rename to docs/zh/08-operation/pic/topic-03-addTopicWizard.jpeg diff --git a/docs/zh/07-operation/pic/topic-05-addTopicSucc1.jpeg b/docs/zh/08-operation/pic/topic-05-addTopicSucc1.jpeg similarity index 100% rename from docs/zh/07-operation/pic/topic-05-addTopicSucc1.jpeg rename to docs/zh/08-operation/pic/topic-05-addTopicSucc1.jpeg diff --git a/docs/zh/07-operation/pic/topic-06-addTopicSql.jpeg b/docs/zh/08-operation/pic/topic-06-addTopicSql.jpeg similarity index 100% rename from docs/zh/07-operation/pic/topic-06-addTopicSql.jpeg rename to docs/zh/08-operation/pic/topic-06-addTopicSql.jpeg diff --git a/docs/zh/07-operation/pic/topic-07-addTopicsSucc2.jpeg b/docs/zh/08-operation/pic/topic-07-addTopicsSucc2.jpeg similarity index 100% rename from docs/zh/07-operation/pic/topic-07-addTopicsSucc2.jpeg rename to docs/zh/08-operation/pic/topic-07-addTopicsSucc2.jpeg diff --git a/docs/zh/07-operation/pic/topic-08-shareTopic.jpeg b/docs/zh/08-operation/pic/topic-08-shareTopic.jpeg similarity index 100% rename from docs/zh/07-operation/pic/topic-08-shareTopic.jpeg rename to docs/zh/08-operation/pic/topic-08-shareTopic.jpeg diff --git a/docs/zh/07-operation/pic/topic-09-sample.jpeg b/docs/zh/08-operation/pic/topic-09-sample.jpeg similarity index 100% rename from docs/zh/07-operation/pic/topic-09-sample.jpeg rename to docs/zh/08-operation/pic/topic-09-sample.jpeg diff --git a/docs/zh/07-operation/pic/topic-10-consumer.jpeg b/docs/zh/08-operation/pic/topic-10-consumer.jpeg similarity index 100% rename from docs/zh/07-operation/pic/topic-10-consumer.jpeg rename to docs/zh/08-operation/pic/topic-10-consumer.jpeg diff --git a/docs/zh/08-operation/tdengine-topology.png b/docs/zh/08-operation/tdengine-topology.png new file mode 100644 index 0000000000..7c3f8e078e Binary files /dev/null and b/docs/zh/08-operation/tdengine-topology.png differ diff --git a/docs/zh/14-reference/01-components/08-taos-cli.md b/docs/zh/14-reference/01-components/08-taos-cli.md index 3eea24ac7b..c388e7edda 100644 --- a/docs/zh/14-reference/01-components/08-taos-cli.md +++ b/docs/zh/14-reference/01-components/08-taos-cli.md @@ -82,7 +82,7 @@ taos -h h1.taos.com -s "use db; show tables;" ## 配置文件 -也可以通过配置文件中的参数设置来控制 TDengine CLI 的行为。可用配置参数请参考[客户端配置](../taosc) +也可以通过配置文件中的参数设置来控制 TDengine CLI 的行为。可用配置参数请参考[客户端配置](../../components/taosc) ## TDengine CLI 小技巧 diff --git a/docs/zh/14-reference/02-tools/08-taos-cli.md b/docs/zh/14-reference/02-tools/08-taos-cli.md new file mode 100644 index 0000000000..c388e7edda --- /dev/null +++ b/docs/zh/14-reference/02-tools/08-taos-cli.md @@ -0,0 +1,102 @@ +--- +title: TDengine CLI 参考手册 +sidebar_label: taos +toc_max_heading_level: 4 +--- + +TDengine 命令行程序(以下简称 TDengine CLI)是用户操作 TDengine 实例并与之交互的最简洁最常用的方式。 使用前需要安装 TDengine Server 安装包或 TDengine Client 安装包。 + +## 启动 + +要进入 TDengine CLI,您只要在终端执行 `taos` 即可。 + +```bash +taos +``` + +如果连接服务成功,将会打印出欢迎消息和版本信息。如果失败,则会打印错误消息。 + +TDengine CLI 的提示符号如下: + +```shell +taos> +``` + +进入 TDengine CLI 后,你可执行各种 SQL 语句,包括插入、查询以及各种管理命令。 + +## 执行 SQL 脚本 + +在 TDengine CLI 里可以通过 `source` 命令来运行脚本文件中的多条 SQL 命令。 + +```sql +taos> source ; +``` + +## 在线修改显示字符宽度 + +可以在 TDengine CLI 里使用如下命令调整字符显示宽度 + +```sql +taos> SET MAX_BINARY_DISPLAY_WIDTH ; +``` + +如显示的内容后面以 ... 结尾时,表示该内容已被截断,可通过本命令修改显示字符宽度以显示完整的内容。 + +## 命令行参数 + +您可通过配置命令行参数来改变 TDengine CLI 的行为。以下为常用的几个命令行参数: + +- -h HOST: 要连接的 TDengine 服务端所在服务器的 FQDN, 默认为连接本地服务 +- -P PORT: 指定服务端所用端口号 +- -u USER: 连接时使用的用户名 +- -p PASSWORD: 连接服务端时使用的密码 +- -?, --help: 打印出所有命令行参数 + +还有更多其他参数: + +- -a AUTHSTR: 连接服务端的授权信息 +- -A: 通过用户名和密码计算授权信息 +- -B: 设置 BI 工具显示模式,设置后所有输出都遵循 BI 工具的格式进行输出 +- -c CONFIGDIR: 指定配置文件目录,Linux 环境下默认为 `/etc/taos`,该目录下的配置文件默认名称为 `taos.cfg` +- -C: 打印 -c 指定的目录中 `taos.cfg` 的配置参数 +- -d DATABASE: 指定连接到服务端时使用的数据库 +- -E dsn: 使用 WebSocket DSN 连接云服务或者提供 WebSocket 连接的服务端 +- -f FILE: 以非交互模式执行 SQL 脚本文件。文件中一个 SQL 语句只能占一行 +- -k: 测试服务端运行状态,0: unavailable,1: network ok,2: service ok,3: service degraded,4: exiting +- -l PKTLEN: 网络测试时使用的测试包大小 +- -n NETROLE: 网络连接测试时的测试范围,默认为 `client`, 可选值为 `client`、`server` +- -N PKTNUM: 网络测试时使用的测试包数量 +- -r: 将时间输出出无符号 64 位整数类型(即 C 语音中 uint64_t) +- -R: 使用 RESTful 模式连接服务端 +- -s COMMAND: 以非交互模式执行的 SQL 命令 +- -t: 测试服务端启动状态,状态同-k +- -w DISPLAYWIDTH: 客户端列显示宽度 +- -z TIMEZONE: 指定时区,默认为本地时区 +- -V: 打印出当前版本号 + +示例: + +```bash +taos -h h1.taos.com -s "use db; show tables;" +``` + +## 配置文件 + +也可以通过配置文件中的参数设置来控制 TDengine CLI 的行为。可用配置参数请参考[客户端配置](../../components/taosc) + +## TDengine CLI 小技巧 + +- 可以使用上下光标键查看历史输入的指令 +- 在 TDengine CLI 中使用 `alter user` 命令可以修改用户密码,缺省密码为 `taosdata` +- Ctrl+C 中止正在进行中的查询 +- 执行 `RESET QUERY CACHE` 可清除本地表 Schema 的缓存 +- 批量执行 SQL 语句。可以将一系列的 TDengine CLI 命令(以英文 ; 结尾,每个 SQL 语句为一行)按行存放在文件里,在 TDengine CLI 里执行命令 `source ` 自动执行该文件里所有的 SQL 语句 +- 输入 `q` 或 `quit` 或 `exit` 回车,可以退出 TDengine CLI + +## TDengine CLI 导出查询结果到文件中 + +- 可以使用符号 “>>” 导出查询结果到某个文件中,语法为: sql 查询语句 >> ‘输出文件名’; 输出文件如果不写路径的话,将输出至当前目录下。如 select * from d0 >> ‘/root/d0.csv’; 将把查询结果输出到 /root/d0.csv 中。 + +## TDengine CLI 导入文件中的数据到表中 + +- 可以使用 insert into table_name file '输入文件名',把上一步中导出的数据文件再导入到指定表中。如 insert into d0 file '/root/d0.csv'; 表示把上面导出的数据全部再导致至 d0 表中。 diff --git a/docs/zh/14-reference/02-tools/09-taosdump.md b/docs/zh/14-reference/02-tools/09-taosdump.md new file mode 100644 index 0000000000..7afe8721ee --- /dev/null +++ b/docs/zh/14-reference/02-tools/09-taosdump.md @@ -0,0 +1,127 @@ +--- +title: taosdump 参考手册 +sidebar_label: taosdump +toc_max_heading_level: 4 +--- + +taosdump 是一个支持从运行中的 TDengine 集群备份数据并将备份的数据恢复到相同或另一个运行中的 TDengine 集群中的工具应用程序。 + +taosdump 可以用数据库、超级表或普通表作为逻辑数据单元进行备份,也可以对数据库、超级 +表和普通表中指定时间段内的数据记录进行备份。使用时可以指定数据备份的目录路径,如果 +不指定位置,taosdump 默认会将数据备份到当前目录。 + +如果指定的位置已经有数据文件,taosdump 会提示用户并立即退出,避免数据被覆盖。这意味着同一路径只能被用于一次备份。 +如果看到相关提示,请小心操作。 + +taosdump 是一个逻辑备份工具,它不应被用于备份任何原始数据、环境设置、 +硬件信息、服务端配置或集群的拓扑结构。taosdump 使用 +[ Apache AVRO ](https://avro.apache.org/)作为数据文件格式来存储备份数据。 + +## 安装 + +taosdump 有两种安装方式: + +- 安装 taosTools 官方安装包, 请从[发布历史页面](https://docs.taosdata.com/releases/tools/)页面找到 taosTools 并下载安装。 + +- 单独编译 taos-tools 并安装, 详情请参考 [taos-tools](https://github.com/taosdata/taos-tools) 仓库。 + +## 常用使用场景 + +### taosdump 备份数据 + +1. 备份所有数据库:指定 `-A` 或 `--all-databases` 参数; +2. 备份多个指定数据库:使用 `-D db1,db2,...` 参数; +3. 备份指定数据库中的某些超级表或普通表:使用 `dbname stbname1 stbname2 tbname1 tbname2 ...` 参数,注意这种输入序列第一个参数为数据库名称,且只支持一个数据库,第二个和之后的参数为该数据库中的超级表或普通表名称,中间以空格分隔; +4. 备份系统 log 库:TDengine 集群通常会包含一个系统数据库,名为 `log`,这个数据库内的数据为 TDengine 自我运行的数据,taosdump 默认不会对 log 库进行备份。如果有特定需求对 log 库进行备份,可以使用 `-a` 或 `--allow-sys` 命令行参数。 +5. “宽容”模式备份:taosdump 1.4.1 之后的版本提供 `-n` 参数和 `-L` 参数,用于备份数据时不使用转义字符和“宽容”模式,可以在表名、列名、标签名没使用转义字符的情况下减少备份数据时间和备份数据占用空间。如果不确定符合使用 `-n` 和 `-L` 条件时请使用默认参数进行“严格”模式进行备份。转义字符的说明请参考[官方文档](../../taos-sql/escape)。 + +:::tip +- taosdump 1.4.1 之后的版本提供 `-I` 参数,用于解析 avro 文件 schema 和数据,如果指定 `-s` 参数将只解析 schema。 +- taosdump 1.4.2 之后的备份使用 `-B` 参数指定的批次数,默认值为 16384,如果在某些环境下由于网络速度或磁盘性能不足导致 "Error actual dump .. batch .." 可以通过 `-B` 参数调整为更小的值进行尝试。 +- taosdump 的导出不支持中断恢复,所以当进程意外终止后,正确的处理方式是删除当前已导出或生成的所有相关文件。 +- taosdump 的导入支持中断恢复,但是当进程重新启动时,会收到一些“表已经存在”的提示,可以忽视。 + +::: + +### taosdump 恢复数据 + +恢复指定路径下的数据文件:使用 `-i` 参数加上数据文件所在路径。如前面提及,不应该使用同一个目录备份不同数据集合,也不应该在同一路径多次备份同一数据集,否则备份数据会造成覆盖或多次备份。 + +:::tip +taosdump 内部使用 TDengine stmt binding API 进行恢复数据的写入,为提高数据恢复性能,目前使用 16384 为一次写入批次。如果备份数据中有比较多列数据,可能会导致产生 "WAL size exceeds limit" 错误,此时可以通过使用 `-B` 参数调整为一个更小的值进行尝试。 + +::: + +## 详细命令行参数列表 + +以下为 taosdump 详细命令行参数列表: + +``` +Usage: taosdump [OPTION...] dbname [tbname ...] + or: taosdump [OPTION...] --databases db1,db2,... + or: taosdump [OPTION...] --all-databases + or: taosdump [OPTION...] -i inpath + or: taosdump [OPTION...] -o outpath + + -h, --host=HOST Server host dumping data from. Default is + localhost. + -p, --password User password to connect to server. Default is + taosdata. + -P, --port=PORT Port to connect + -u, --user=USER User name used to connect to server. Default is + root. + -c, --config-dir=CONFIG_DIR Configure directory. Default is /etc/taos + -i, --inpath=INPATH Input file path. + -o, --outpath=OUTPATH Output file path. + -r, --resultFile=RESULTFILE DumpOut/In Result file path and name. + -a, --allow-sys Allow to dump system database + -A, --all-databases Dump all databases. + -D, --databases=DATABASES Dump inputted databases. Use comma to separate + databases' name. + -e, --escape-character Use escaped character for database name + -N, --without-property Dump database without its properties. + -s, --schemaonly Only dump tables' schema. + -d, --avro-codec=snappy Choose an avro codec among null, deflate, snappy, + and lzma. + -S, --start-time=START_TIME Start time to dump. Either epoch or + ISO8601/RFC3339 format is acceptable. ISO8601 + format example: 2017-10-01T00:00:00.000+0800 or + 2017-10-0100:00:00:000+0800 or '2017-10-01 + 00:00:00.000+0800' + -E, --end-time=END_TIME End time to dump. Either epoch or ISO8601/RFC3339 + format is acceptable. ISO8601 format example: + 2017-10-01T00:00:00.000+0800 or + 2017-10-0100:00:00.000+0800 or '2017-10-01 + 00:00:00.000+0800' + -B, --data-batch=DATA_BATCH Number of data per query/insert statement when + backup/restore. Default value is 16384. If you see + 'error actual dump .. batch ..' when backup or if + you see 'WAL size exceeds limit' error when + restore, please adjust the value to a smaller one + and try. The workable value is related to the + length of the row and type of table schema. + -I, --inspect inspect avro file content and print on screen + -L, --loose-mode Using loose mode if the table name and column name + use letter and number only. Default is NOT. + -n, --no-escape No escape char '`'. Default is using it. + -Q, --dot-replace Repalce dot character with underline character in + the table name.(Version 2.5.3) + -T, --thread-num=THREAD_NUM Number of thread for dump in file. Default is + 8. + -C, --cloud=CLOUD_DSN specify a DSN to access TDengine cloud service + -R, --restful Use RESTful interface to connect TDengine + -t, --timeout=SECONDS The timeout seconds for websocket to interact. + -g, --debug Print debug info. + -?, --help Give this help list + --usage Give a short usage message + -V, --version Print program version + -W, --rename=RENAME-LIST Rename database name with new name during + importing data. RENAME-LIST: + "db1=newDB1|db2=newDB2" means rename db1 to newDB1 + and rename db2 to newDB2 (Version 2.5.4) + +Mandatory or optional arguments to long options are also mandatory or optional +for any corresponding short options. + +Report bugs to . +``` diff --git a/docs/zh/14-reference/02-tools/10-taosbenchmark.md b/docs/zh/14-reference/02-tools/10-taosbenchmark.md new file mode 100644 index 0000000000..3f15d6b8e3 --- /dev/null +++ b/docs/zh/14-reference/02-tools/10-taosbenchmark.md @@ -0,0 +1,485 @@ +--- +title: taosBenchmark 参考手册 +sidebar_label: taosBenchmark +toc_max_heading_level: 4 +--- + +taosBenchmark (曾用名 taosdemo ) 是一个用于测试 TDengine 产品性能的工具。taosBenchmark 可以测试 TDengine 的插入、查询和订阅等功能的性能,它可以模拟由大量设备产生的大量数据,还可以灵活地控制数据库、超级表、标签列的数量和类型、数据列的数量和类型、子表的数量、每张子表的数据量、插入数据的时间间隔、taosBenchmark 的工作线程数量、是否以及如何插入乱序数据等。为了兼容过往用户的使用习惯,安装包提供 了 taosdemo 作为 taosBenchmark 的软链接。 + +## 安装 + +taosBenchmark 有两种安装方式: + +- 安装 TDengine 官方安装包的同时会自动安装 taosBenchmark, 详情请参考[ TDengine 安装](../../../get-started/)。 + +- 单独编译 taos-tools 并安装, 详情请参考 [taos-tools](https://github.com/taosdata/taos-tools) 仓库。 + +## 运行 + +### 配置和运行方式 + +taosBenchmark 需要在操作系统的终端执行,该工具支持两种配置方式:[命令行参数](#命令行参数详解) 和 [JSON 配置文件](#配置文件参数详解)。这两种方式是互斥的,在使用配置文件时只能使用一个命令行参数 `-f ` 指定配置文件。在使用命令行参数运行 taosBenchmark 并控制其行为时则不能使用 `-f` 参数而要用其它参数来进行配置。除此之外,taosBenchmark 还提供了一种特殊的运行方式,即无参数运行。 + +taosBenchmark 支持对 TDengine 做完备的性能测试,其所支持的 TDengine 功能分为三大类:写入、查询和订阅。这三种功能之间是互斥的,每次运行 taosBenchmark 只能选择其中之一。值得注意的是,所要测试的功能类型在使用命令行配置方式时是不可配置的,命令行配置方式只能测试写入性能。若要测试 TDengine 的查询和订阅性能,必须使用配置文件的方式,通过配置文件中的参数 `filetype` 指定所要测试的功能类型。 + +**在运行 taosBenchmark 之前要确保 TDengine 集群已经在正确运行。** + +### 无命令行参数运行 + +执行下列命令即可快速体验 taosBenchmark 对 TDengine 进行基于默认配置的写入性能测试。 + +```bash +taosBenchmark +``` + +在无参数运行时,taosBenchmark 默认连接 `/etc/taos` 下指定的 TDengine 集群,并在 TDengine 中创建一个名为 test 的数据库,test 数据库下创建名为 meters 的一张超级表,超级表下创建 10000 张表,每张表中写入 10000 条记录。注意,如果已有 test 数据库,这个命令会先删除该数据库后建立一个全新的 test 数据库。 + +### 使用命令行配置参数运行 + +在使用命令行参数运行 taosBenchmark 并控制其行为时,`-f ` 参数不能使用。所有配置参数都必须通过命令行指定。以下是使用命令行方式测试 taosBenchmark 写入性能的一个示例。 + +```bash +taosBenchmark -I stmt -n 200 -t 100 +``` + +上面的命令 `taosBenchmark` 将创建一个名为`test`的数据库,在其中建立一张超级表`meters`,在该超级表中建立 100 张子表并使用参数绑定的方式为每张子表插入 200 条记录。 + +### 使用配置文件运行 + +taosBenchmark 安装包中提供了配置文件的示例,位于 `/examples/taosbenchmark-json` 下 + +使用如下命令行即可运行 taosBenchmark 并通过配置文件控制其行为。 + +```bash +taosBenchmark -f +``` + +**下面是几个配置文件的示例:** + +#### 插入场景 JSON 配置文件示例 + +
+insert.json + +```json +{{#include /taos-tools/example/insert.json}} +``` + +
+ +#### 查询场景 JSON 配置文件示例 + +
+query.json + +```json +{{#include /taos-tools/example/query.json}} +``` + +
+ +#### 订阅场景 JSON 配置文件示例 + +
+tmq.json + +```json +{{#include /taos-tools/example/tmq.json}} +``` + +
+ +## 命令行参数详解 + +- **-f/--file \** : + 要使用的 JSON 配置文件,由该文件指定所有参数,本参数与命令行其他参数不能同时使用。没有默认值。 + +- **-c/--config-dir \** : + TDengine 集群配置文件所在的目录,默认路径是 /etc/taos 。 + +- **-h/--host \** : + 指定要连接的 TDengine 服务端的 FQDN,默认值为 localhost 。 + +- **-P/--port \** : + 要连接的 TDengine 服务器的端口号,默认值为 6030 。 + +- **-I/--interface \** : + 插入模式,可选项有 taosc, rest, stmt, sml, sml-rest, 分别对应普通写入、restful 接口写入、参数绑定接口写入、schemaless 接口写入、restful schemaless 接口写入 (由 taosAdapter 提供)。默认值为 taosc。 + +- **-u/--user \** : + 用于连接 TDengine 服务端的用户名,默认为 root 。 + +- **-U/--supplement-insert ** : + 写入数据而不提前建数据库和表,默认关闭。 + +- **-p/--password \** : + 用于连接 TDengine 服务端的密码,默认值为 taosdata。 + +- **-o/--output \** : + 结果输出文件的路径,默认值为 ./output.txt。 + +- **-T/--thread \** : + 插入数据的线程数量,默认为 8 。 + +- **-B/--interlace-rows \** : + 启用交错插入模式并同时指定向每个子表每次插入的数据行数。交错插入模式是指依次向每张子表插入由本参数所指定的行数并重复这个过程,直到所有子表的数据都插入完成。默认值为 0, 即向一张子表完成数据插入后才会向下一张子表进行数据插入。 + +- **-i/--insert-interval \** : + 指定交错插入模式的插入间隔,单位为 ms,默认值为 0。 只有当 `-B/--interlace-rows` 大于 0 时才起作用。意味着数据插入线程在为每个子表插入隔行扫描记录后,会等待该值指定的时间间隔后再进行下一轮写入。 + +- **-r/--rec-per-req \** : + 每次向 TDengine 请求写入的数据行数,默认值为 30000 。 + +- **-t/--tables \** : + 指定子表的数量,默认为 10000 。 + +- **-S/--timestampstep \** : + 每个子表中插入数据的时间戳步长,单位是 ms,默认值是 1。 + +- **-n/--records \** : + 每个子表插入的记录数,默认值为 10000 。 + +- **-d/--database \** : + 所使用的数据库的名称,默认值为 test 。 + +- **-b/--data-type \** : + 超级表的数据列的类型。如果不使用则默认为有三个数据列,其类型分别为 FLOAT, INT, FLOAT 。 + +- **-l/--columns \** : + 超级表的数据列的总数量。如果同时设置了该参数和 `-b/--data-type`,则最后的结果列数为两者取大。如果本参数指定的数量大于 `-b/--data-type` 指定的列数,则未指定的列类型默认为 INT, 例如: `-l 5 -b float,double`, 那么最后的列为 `FLOAT,DOUBLE,INT,INT,INT`。如果 columns 指定的数量小于或等于 `-b/--data-type` 指定的列数,则结果为 `-b/--data-type` 指定的列和类型,例如: `-l 3 -b float,double,float,bigint`,那么最后的列为 `FLOAT,DOUBLE,FLOAT,BIGINT` 。 + +- **-L/--partial-col-num \ **: + 指定某些列写入数据,其他列数据为 NULL。默认所有列都写入数据。 + +- **-A/--tag-type \** : + 超级表的标签列类型。nchar 和 binary 类型可以同时设置长度,例如: + +``` +taosBenchmark -A INT,DOUBLE,NCHAR,BINARY(16) +``` + +如果没有设置标签类型,默认是两个标签,其类型分别为 INT 和 BINARY(16)。 +注意:在有的 shell 比如 bash 命令里面 “()” 需要转义,则上述指令应为: + +``` +taosBenchmark -A INT,DOUBLE,NCHAR,BINARY\(16\) +``` + +- **-w/--binwidth \**: + nchar 和 binary 类型的默认长度,默认值为 64。 + +- **-m/--table-prefix \** : + 子表名称的前缀,默认值为 "d"。 + +- **-E/--escape-character** : + 开关参数,指定在超级表和子表名称中是否使用转义字符。默认值为不使用。 + +- **-C/--chinese** : + 开关参数,指定 nchar 和 binary 是否使用 Unicode 中文字符。默认值为不使用。 + +- **-N/--normal-table** : + 开关参数,指定只创建普通表,不创建超级表。默认值为 false。仅当插入模式为 taosc, stmt, rest 模式下可以使用。 + +- **-M/--random** : + 开关参数,插入数据为生成的随机值。默认值为 false。若配置此参数,则随机生成要插入的数据。对于数值类型的 标签列/数据列,其值为该类型取值范围内的随机值。对于 NCHAR 和 BINARY 类型的 标签列/数据列,其值为指定长度范围内的随机字符串。 + +- **-x/--aggr-func** : + 开关参数,指示插入后查询聚合函数。默认值为 false。 + +- **-y/--answer-yes** : + 开关参数,要求用户在提示后确认才能继续。默认值为 false 。 + +- **-O/--disorder \** : + 指定乱序数据的百分比概率,其值域为 [0,50]。默认为 0,即没有乱序数据。 + +- **-R/--disorder-range \** : + 指定乱序数据的时间戳回退范围。所生成的乱序时间戳为非乱序情况下应该使用的时间戳减去这个范围内的一个随机值。仅在 `-O/--disorder` 指定的乱序数据百分比大于 0 时有效。 + +- **-F/--prepare_rand \** : + 生成的随机数据中唯一值的数量。若为 1 则表示所有数据都相同。默认值为 10000 。 + +- **-a/--replica \** : + 创建数据库时指定其副本数,默认值为 1 。 + +- ** -k/--keep-trying \** : 失败后进行重试的次数,默认不重试。需使用 v3.0.9 以上版本。 + +- ** -z/--trying-interval \** : 失败重试间隔时间,单位为毫秒,仅在 -k 指定重试后有效。需使用 v3.0.9 以上版本。 + +- **-v/--vgroups \** : + 创建数据库时指定 vgroups 数,仅对 TDengine v3.0+ 有效。 + +- **-V/--version** : + 显示版本信息并退出。不能与其它参数混用。 + +- **-?/--help** : + 显示帮助信息并退出。不能与其它参数混用。 + +## 配置文件参数详解 + +### 通用配置参数 + +本节所列参数适用于所有功能模式。 + +- **filetype** : 要测试的功能,可选值为 `insert`, `query` 和 `subscribe`。分别对应插入、查询和订阅功能。每个配置文件中只能指定其中之一。 +- **cfgdir** : TDengine 客户端配置文件所在的目录,默认路径是 /etc/taos 。 + +- **host** : 指定要连接的 TDengine 服务端的 FQDN,默认值为 localhost。 + +- **port** : 要连接的 TDengine 服务器的端口号,默认值为 6030。 + +- **user** : 用于连接 TDengine 服务端的用户名,默认为 root。 + +- **password** : 用于连接 TDengine 服务端的密码,默认值为 taosdata。 + +### 插入场景配置参数 + +插入场景下 `filetype` 必须设置为 `insert`,该参数及其它通用参数详见[通用配置参数](#通用配置参数) + +- ** keep_trying ** : 失败后进行重试的次数,默认不重试。需使用 v3.0.9 以上版本。 + +- ** trying_interval ** : 失败重试间隔时间,单位为毫秒,仅在 keep_trying 指定重试后有效。需使用 v3.0.9 以上版本。 +- ** childtable_from 和 childtable_to ** : 指定写入子表范围,开闭区间为 [childtable_from, childtable_to). +  +- ** continue_if_fail ** : 允许用户定义失败后行为 + + “continue_if_fail”:  “no”, 失败 taosBenchmark 自动退出,默认行为 + “continue_if_fail”: “yes”, 失败 taosBenchmark 警告用户,并继续写入 + “continue_if_fail”: “smart”, 如果子表不存在失败,taosBenchmark 会建立子表并继续写入 + +#### 数据库相关配置参数 + +创建数据库时的相关参数在 json 配置文件中的 `dbinfo` 中配置,个别具体参数如下。其余参数均与 TDengine 中 `create database` 时所指定的数据库参数相对应,详见[../../taos-sql/database] + +- **name** : 数据库名。 + +- **drop** : 插入前是否删除数据库,可选项为 "yes" 或者 "no", 为 "no" 时不创建。默认删除。 + +#### 流式计算相关配置参数 + +创建流式计算的相关参数在 json 配置文件中的 `stream` 中配置,具体参数如下。 + +- **stream_name** : 流式计算的名称,必填项。 + +- **stream_stb** : 流式计算对应的超级表名称,必填项。 + +- **stream_sql** : 流式计算的sql语句,必填项。 + +- **trigger_mode** : 流式计算的触发模式,可选项。 + +- **watermark** : 流式计算的水印,可选项。 + +- **drop** : 是否创建流式计算,可选项为 "yes" 或者 "no", 为 "no" 时不创建。 + +#### 超级表相关配置参数 + +创建超级表时的相关参数在 json 配置文件中的 `super_tables` 中配置,具体参数如下。 + +- **name**: 超级表名,必须配置,没有默认值。 + +- **child_table_exists** : 子表是否已经存在,默认值为 "no",可选值为 "yes" 或 "no"。 + +- **child_table_count** : 子表的数量,默认值为 10。 + +- **child_table_prefix** : 子表名称的前缀,必选配置项,没有默认值。 + +- **escape_character** : 超级表和子表名称中是否包含转义字符,默认值为 "no",可选值为 "yes" 或 "no"。 + +- **auto_create_table** : 仅当 insert_mode 为 taosc, rest, stmt 并且 child_table_exists 为 "no" 时生效,该参数为 "yes" 表示 taosBenchmark 在插入数据时会自动创建不存在的表;为 "no" 则表示先提前建好所有表再进行插入。 + +- **batch_create_tbl_num** : 创建子表时每批次的建表数量,默认为 10。注:实际的批数不一定与该值相同,当执行的 SQL 语句大于支持的最大长度时,会自动截断再执行,继续创建。 + +- **data_source** : 数据的来源,默认为 taosBenchmark 随机产生,可以配置为 "rand" 和 "sample"。为 "sample" 时使用 sample_file 参数指定的文件内的数据。 + +- **insert_mode** : 插入模式,可选项有 taosc, rest, stmt, sml, sml-rest, 分别对应普通写入、restful 接口写入、参数绑定接口写入、schemaless 接口写入、restful schemaless 接口写入 (由 taosAdapter 提供)。默认值为 taosc 。 + +- **non_stop_mode** : 指定是否持续写入,若为 "yes" 则 insert_rows 失效,直到 Ctrl + C 停止程序,写入才会停止。默认值为 "no",即写入指定数量的记录后停止。注:即使在持续写入模式下 insert_rows 失效,但其也必须被配置为一个非零正整数。 + +- **line_protocol** : 使用行协议插入数据,仅当 insert_mode 为 sml 或 sml-rest 时生效,可选项为 line, telnet, json。 + +- **tcp_transfer** : telnet 模式下的通信协议,仅当 insert_mode 为 sml-rest 并且 line_protocol 为 telnet 时生效。如果不配置,则默认为 http 协议。 + +- **insert_rows** : 每个子表插入的记录数,默认为 0 。 + +- **childtable_offset** : 仅当 child_table_exists 为 yes 时生效,指定从超级表获取子表列表时的偏移量,即从第几个子表开始。 + +- **childtable_limit** : 仅当 child_table_exists 为 yes 时生效,指定从超级表获取子表列表的上限。 + +- **interlace_rows** : 启用交错插入模式并同时指定向每个子表每次插入的数据行数。交错插入模式是指依次向每张子表插入由本参数所指定的行数并重复这个过程,直到所有子表的数据都插入完成。默认值为 0, 即向一张子表完成数据插入后才会向下一张子表进行数据插入。 + +- **insert_interval** : 指定交错插入模式的插入间隔,单位为 ms,默认值为 0。 只有当 `-B/--interlace-rows` 大于 0 时才起作用。意味着数据插入线程在为每个子表插入隔行扫描记录后,会等待该值指定的时间间隔后再进行下一轮写入。 + +- **partial_col_num** : 若该值为正数 n 时, 则仅向前 n 列写入,仅当 insert_mode 为 taosc 和 rest 时生效,如果 n 为 0 则是向全部列写入。 + +- **disorder_ratio** : 指定乱序数据的百分比概率,其值域为 [0,50]。默认为 0,即没有乱序数据。 + +- **disorder_range** : 指定乱序数据的时间戳回退范围。所生成的乱序时间戳为非乱序情况下应该使用的时间戳减去这个范围内的一个随机值。仅在 `-O/--disorder` 指定的乱序数据百分比大于 0 时有效。 + +- **timestamp_step** : 每个子表中插入数据的时间戳步长,单位与数据库的 `precision` 一致,默认值是 1。 + +- **start_timestamp** : 每个子表的时间戳起始值,默认值是 now。 + +- **sample_format** : 样本数据文件的类型,现在只支持 "csv" 。 + +- **sample_file** : 指定 csv 格式的文件作为数据源,仅当 data_source 为 sample 时生效。若 csv 文件内的数据行数小于等于 prepared_rand,那么会循环读取 csv 文件数据直到与 prepared_rand 相同;否则则会只读取 prepared_rand 个数的行的数据。也即最终生成的数据行数为二者取小。 + +- **use_sample_ts** : 仅当 data_source 为 sample 时生效,表示 sample_file 指定的 csv 文件内是否包含第一列时间戳,默认为 no。 若设置为 yes, 则使用 csv 文件第一列作为时间戳,由于同一子表时间戳不能重复,生成的数据量取决于 csv 文件内的数据行数相同,此时 insert_rows 失效。 + +- **tags_file** : 仅当 insert_mode 为 taosc, rest 的模式下生效。 最终的 tag 的数值与 childtable_count 有关,如果 csv 文件内的 tag 数据行小于给定的子表数量,那么会循环读取 csv 文件数据直到生成 childtable_count 指定的子表数量;否则则只会读取 childtable_count 行 tag 数据。也即最终生成的子表数量为二者取小。 + +- **primary_key** : 指定超级表是否有复合主键,取值 1 和 0, 复合主键列只能是超级表的第二列,指定生成复合主键后要确保第二列符合复合主键的数据类型,否则会报错 +- **repeat_ts_min** : 数值类型,复合主键开启情况下指定生成相同时间戳记录的最小个数,生成相同时间戳记录的个数是在范围[repeat_ts_min, repeat_ts_max] 内的随机值, 最小值等于最大值时为固定个数 +- **repeat_ts_max** : 数值类型,复合主键开启情况下指定生成相同时间戳记录的最大个数 +- **sqls** : 字符串数组类型,指定超级表创建成功后要执行的 sql 数组,sql 中指定表名前面要带数据库名,否则会报未指定数据库错误 + +#### tsma配置参数 + +指定tsma的配置参数在 `super_tables` 中的 `tsmas` 中,具体参数如下。 + +- **name** : 指定 tsma 的名字,必选项。 + +- **function** : 指定 tsma 的函数,必选项。 + +- **interval** : 指定 tsma 的时间间隔,必选项。 + +- **sliding** : 指定 tsma 的窗口时间位移,必选项。 + +- **custom** : 指定 tsma 的创建语句结尾追加的自定义配置,可选项。 + +- **start_when_inserted** : 指定当插入多少行时创建 tsma,可选项,默认为 0。 + +#### 标签列与数据列配置参数 + +指定超级表标签列与数据列的配置参数分别在 `super_tables` 中的 `columns` 和 `tag` 中。 + +- **type** : 指定列类型,可选值请参考 TDengine 支持的数据类型。 + 注:JSON 数据类型比较特殊,只能用于标签,当使用 JSON 类型作为 tag 时有且只能有这一个标签,此时 count 和 len 代表的意义分别是 JSON tag 内的 key-value pair 的个数和每个 KV pair 的 value 的值的长度,value 默认为 string。 + +- **len** : 指定该数据类型的长度,对 NCHAR,BINARY 和 JSON 数据类型有效。如果对其他数据类型配置了该参数,若为 0 , 则代表该列始终都是以 null 值写入;如果不为 0 则被忽略。 + +- **count** : 指定该类型列连续出现的数量,例如 "count": 4096 即可生成 4096 个指定类型的列。 + +- **name** : 列的名字,若与 count 同时使用,比如 "name":"current", "count":3, 则 3 个列的名字分别为 current, current_2. current_3。 + +- **min** : 数据类型的 列/标签 的最小值。生成的值将大于或等于最小值。 + +- **max** : 数据类型的 列/标签 的最大值。生成的值将小于最小值。 + +- **fun** : 此列数据以函数填充,目前只支持 sin 和 cos 两函数,输入参数为时间戳换算成角度值,换算公式: 角度 x = 输入的时间列ts值 % 360。同时支持系数调节,随机波动因子调节,以固定格式的表达式展现,如 fun=“10\*sin(x)+100\*random(5)” , x 表示角度,取值 0 ~ 360度,增长步长与时间列步长一致。10 表示乘的系数,100 表示加或减的系数,5 表示波动幅度在 5% 的随机范围内。目前支持的数据类型为 int, bigint, float, double 四种数据类型。注意:表达式为固定模式,不可前后颠倒。 + +- **values** : nchar/binary 列/标签的值域,将从值中随机选择。 + +- **sma**: 将该列加入 SMA 中,值为 "yes" 或者 "no",默认为 "no"。 + +- **encode**: 字符串类型,指定此列两级压缩中的第一级编码算法,详细参见创建超级表 + +- **compress**: 字符串类型,指定此列两级压缩中的第二级加密算法,详细参见创建超级表 + +- **level**: 字符串类型,指定此列两级压缩中的第二级加密算法的压缩率高低,详细参见创建超级表 + +- **gen**: 字符串类型,指定此列生成数据的方式,不指定为随机,若指定为 “order”, 会按自然数顺序增长 + +- **fillNull**: 字符串类型,指定此列是否随机插入 NULL 值,可指定为 “true” 或 "false", 只有当 generate_row_rule 为 2 时有效 + +#### 插入行为配置参数 + +- **thread_count** : 插入数据的线程数量,默认为 8。 + +- **thread_bind_vgroup** : 写入时 vgroup 是否和写入线程绑定,绑定后可提升写入速度, 取值为 "yes" 或 "no",默认值为 “no”, 设置为 “no” 后与原来行为一致。 当设为 “yes” 时,如果 thread_count 数量大小写入数据库的 vgroups 数量, thread_count 自动调整为 vgroups 数量;如果 thread_count 数量小于 vgroups 数量,写入线程数量不做调整,一个线程写完一个 vgroup 数据后再写下一个,同时保持一个 vgroup 同时只能由一个线程写入的规则。 + +- **create_table_thread_count** : 建表的线程数量,默认为 8。 + +- **connection_pool_size** : 预先建立的与 TDengine 服务端之间的连接的数量。若不配置,则与所指定的线程数相同。 + +- **result_file** : 结果输出文件的路径,默认值为 ./output.txt。 + +- **confirm_parameter_prompt** : 开关参数,要求用户在提示后确认才能继续。默认值为 false 。 + +- **interlace_rows** : 启用交错插入模式并同时指定向每个子表每次插入的数据行数。交错插入模式是指依次向每张子表插入由本参数所指定的行数并重复这个过程,直到所有子表的数据都插入完成。默认值为 0, 即向一张子表完成数据插入后才会向下一张子表进行数据插入。 + 在 `super_tables` 中也可以配置该参数,若配置则以 `super_tables` 中的配置为高优先级,覆盖全局设置。 + +- **insert_interval** : + 指定交错插入模式的插入间隔,单位为 ms,默认值为 0。 只有当 `-B/--interlace-rows` 大于 0 时才起作用。意味着数据插入线程在为每个子表插入隔行扫描记录后,会等待该值指定的时间间隔后再进行下一轮写入。 + 在 `super_tables` 中也可以配置该参数,若配置则以 `super_tables` 中的配置为高优先级,覆盖全局设置。 + +- **num_of_records_per_req** : + 每次向 TDengine 请求写入的数据行数,默认值为 30000 。当其设置过大时,TDengine 客户端驱动会返回相应的错误信息,此时需要调低这个参数的设置以满足写入要求。 + +- **prepare_rand** : 生成的随机数据中唯一值的数量。若为 1 则表示所有数据都相同。默认值为 10000 。 + +- **pre_load_tb_meta** :是否提前加载子表的 meta 数据,取值为 “yes” or "no"。当子表数量非常多时,打开此选项可提高写入速度。 + +### 查询场景配置参数 + +查询场景下 `filetype` 必须设置为 `query`。 +`query_times` 指定运行查询的次数,数值类型 + +查询场景可以通过设置 `kill_slow_query_threshold` 和 `kill_slow_query_interval` 参数来控制杀掉慢查询语句的执行,threshold 控制如果 exec_usec 超过指定时间的查询将被 taosBenchmark 杀掉,单位为秒;interval 控制休眠时间,避免持续查询慢查询消耗 CPU ,单位为秒。 + +其它通用参数详见[通用配置参数](#通用配置参数)。 + +#### 执行指定查询语句的配置参数 + +查询指定表(可以指定超级表、子表或普通表)的配置参数在 `specified_table_query` 中设置。 + +- **query_interval** : 查询时间间隔,单位是秒,默认值为 0。 + +- **threads** : 执行查询 SQL 的线程数,默认值为 1。 + +- **sqls**: + - **sql**: 执行的 SQL 命令,必填。 + - **result**: 保存查询结果的文件,未指定则不保存。 + +#### 查询超级表的配置参数 + +查询超级表的配置参数在 `super_table_query` 中设置。 + +- **stblname** : 指定要查询的超级表的名称,必填。 + +- **query_interval** : 查询时间间隔,单位是秒,默认值为 0。 + +- **threads** : 执行查询 SQL 的线程数,默认值为 1。 + +- **sqls** : + - **sql** : 执行的 SQL 命令,必填;对于超级表的查询 SQL,在 SQL 命令中保留 "xxxx",程序会自动将其替换为超级表的所有子表名。 + 替换为超级表中所有的子表名。 + - **result** : 保存查询结果的文件,未指定则不保存。 + +### 订阅场景配置参数 + +订阅场景下 `filetype` 必须设置为 `subscribe`,该参数及其它通用参数详见[通用配置参数](#通用配置参数) + +#### 执行指定订阅语句的配置参数 + +订阅指定表(可以指定超级表、子表或者普通表)的配置参数在 `specified_table_query` 中设置。 + +- **threads/concurrent** : 执行 SQL 的线程数,默认为 1。 + +- **sqls** : + - **sql** : 执行的 SQL 命令,必填。 + + +#### 配置文件中数据类型书写对照表 + +| # | **引擎** | **taosBenchmark** +| --- | :----------------: | :---------------: +| 1 | TIMESTAMP | timestamp +| 2 | INT | int +| 3 | INT UNSIGNED | uint +| 4 | BIGINT | bigint +| 5 | BIGINT UNSIGNED | ubigint +| 6 | FLOAT | float +| 7 | DOUBLE | double +| 8 | BINARY | binary +| 9 | SMALLINT | smallint +| 10 | SMALLINT UNSIGNED | usmallint +| 11 | TINYINT | tinyint +| 12 | TINYINT UNSIGNED | utinyint +| 13 | BOOL | bool +| 14 | NCHAR | nchar +| 15 | VARCHAR | varchar +| 15 | JSON | json + +注意:taosBenchmark 配置文件中数据类型必须小写方可识别 + + + diff --git a/docs/zh/14-reference/02-tools/index.md b/docs/zh/14-reference/02-tools/index.md new file mode 100644 index 0000000000..37ed3a460e --- /dev/null +++ b/docs/zh/14-reference/02-tools/index.md @@ -0,0 +1,13 @@ +--- +title: 工具 +description: TDengine 工具 +--- + +本节详细说明 TDengine 中的主要工具的功能和用法。 + +```mdx-code-block +import DocCardList from '@theme/DocCardList'; +import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; + + +``` \ No newline at end of file diff --git a/docs/zh/14-reference/05-connector/43-r-lang.mdx b/docs/zh/14-reference/05-connector/43-r-lang.mdx index e8929e5ca0..13734dec8c 100644 --- a/docs/zh/14-reference/05-connector/43-r-lang.mdx +++ b/docs/zh/14-reference/05-connector/43-r-lang.mdx @@ -7,7 +7,7 @@ title: R Language Connector import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -import Rdemo from "../../08-develop/01-connect/_connect_r.mdx" +import Rdemo from "../../07-develop/01-connect/_connect_r.mdx" 通过 R 语言中的 RJDBC 库可以使 R 语言程序支持访问 TDengine 数据。以下是安装过程、配置过程以及 R 语言示例代码。 diff --git a/include/dnode/mnode/mnode.h b/include/dnode/mnode/mnode.h index 1f205b3f11..4abf8c27fd 100644 --- a/include/dnode/mnode/mnode.h +++ b/include/dnode/mnode/mnode.h @@ -119,9 +119,9 @@ void mndPostProcessQueryMsg(SRpcMsg *pMsg); */ void mndGenerateMachineCode(); -void mndDumpSdb(); +int32_t mndDumpSdb(); -void mndDeleteTrans(); +int32_t mndDeleteTrans(); #ifdef __cplusplus } diff --git a/include/libs/nodes/querynodes.h b/include/libs/nodes/querynodes.h index 1b02203c07..5f9a4a1110 100644 --- a/include/libs/nodes/querynodes.h +++ b/include/libs/nodes/querynodes.h @@ -57,7 +57,6 @@ typedef struct SExprNode { char aliasName[TSDB_COL_NAME_LEN]; char userAlias[TSDB_COL_NAME_LEN]; SArray* pAssociation; - bool orderAlias; bool asAlias; bool asParam; bool asPosition; diff --git a/source/client/src/clientImpl.c b/source/client/src/clientImpl.c index 1c0be6b3ac..18cdd58639 100644 --- a/source/client/src/clientImpl.c +++ b/source/client/src/clientImpl.c @@ -37,7 +37,6 @@ void setQueryRequest(int64_t rId) { pReq->isQuery = true; (void)releaseRequest(rId); } - } static bool stringLengthCheck(const char* str, size_t maxsize) { @@ -2245,7 +2244,7 @@ static int32_t doConvertJson(SReqResultInfo* pResultInfo, int32_t numOfCols, int } else if (tTagIsJson(data)) { char* jsonString = NULL; parseTagDatatoJson(data, &jsonString); - if(jsonString == NULL) { + if (jsonString == NULL) { tscError("doConvertJson error: parseTagDatatoJson failed"); return terrno; } @@ -2517,10 +2516,10 @@ TSDB_SERVER_STATUS taos_check_server_status(const char* fqdn, int port, char* de void* clientRpc = NULL; SServerStatusRsp statusRsp = {0}; SEpSet epSet = {.inUse = 0, .numOfEps = 1}; - SRpcMsg rpcMsg = {.info.ahandle = (void*)0x9526, .msgType = TDMT_DND_SERVER_STATUS}; - SRpcMsg rpcRsp = {0}; - SRpcInit rpcInit = {0}; - char pass[TSDB_PASSWORD_LEN + 1] = {0}; + SRpcMsg rpcMsg = {.info.ahandle = (void*)0x9527, .info.notFreeAhandle = 1, .msgType = TDMT_DND_SERVER_STATUS}; + SRpcMsg rpcRsp = {0}; + SRpcInit rpcInit = {0}; + char pass[TSDB_PASSWORD_LEN + 1] = {0}; rpcInit.label = "CHK"; rpcInit.numOfThreads = 1; @@ -3032,7 +3031,8 @@ void taosAsyncFetchImpl(SRequestObj* pRequest, __taos_async_fn_t fp, void* param void doRequestCallback(SRequestObj* pRequest, int32_t code) { pRequest->inCallback = true; int64_t this = pRequest->self; - if (tsQueryTbNotExistAsEmpty && TD_RES_QUERY(&pRequest->resType) && pRequest->isQuery && (code == TSDB_CODE_PAR_TABLE_NOT_EXIST || code == TSDB_CODE_TDB_TABLE_NOT_EXIST)) { + if (tsQueryTbNotExistAsEmpty && TD_RES_QUERY(&pRequest->resType) && pRequest->isQuery && + (code == TSDB_CODE_PAR_TABLE_NOT_EXIST || code == TSDB_CODE_TDB_TABLE_NOT_EXIST)) { code = TSDB_CODE_SUCCESS; pRequest->type = TSDB_SQL_RETRIEVE_EMPTY_RESULT; } diff --git a/source/client/src/clientMonitor.c b/source/client/src/clientMonitor.c index aeaa3bef8b..dbcc046b4a 100644 --- a/source/client/src/clientMonitor.c +++ b/source/client/src/clientMonitor.c @@ -216,9 +216,7 @@ static void reportSendProcess(void* param, void* tmrId) { SEpSet ep = getEpSet_s(&pInst->mgmtEp); generateClusterReport(pMonitor->registry, pInst->pTransporter, &ep); bool reset = taosTmrReset(reportSendProcess, pInst->monitorParas.tsMonitorInterval * 1000, param, monitorTimer, &tmrId); - if (!reset){ - tscError("failed to reset timer, pMonitor:%p", pMonitor); - } + tscDebug("reset timer, pMonitor:%p, %d", pMonitor, reset); taosRUnLockLatch(&monitorLock); } @@ -736,6 +734,16 @@ static void monitorSendAllSlowLogFromTempDir(int64_t clusterId) { continue; } char* tmp = taosStrdup(filename); + if (tmp == NULL) { + tscError("failed to dup string:%s since %s", filename, terrstr()); + if (taosUnLockFile(pFile) != 0) { + tscError("failed to unlock file:%s, terrno:%d", filename, terrno); + } + if (taosCloseFile(&(pFile)) != 0) { + tscError("failed to close file:%s, terrno:%d", filename, terrno); + } + continue; + } monitorSendSlowLogAtBeginning(clusterId, &tmp, pFile, 0); taosMemoryFree(tmp); } diff --git a/source/client/src/clientSml.c b/source/client/src/clientSml.c index 082daa805c..6a19f61383 100644 --- a/source/client/src/clientSml.c +++ b/source/client/src/clientSml.c @@ -1939,6 +1939,10 @@ int32_t smlClearForRerun(SSmlHandle *info) { return TSDB_CODE_SML_INVALID_DATA; } info->lines = (SSmlLineInfo *)taosMemoryCalloc(info->lineNum, sizeof(SSmlLineInfo)); + if (unlikely(info->lines == NULL)) { + uError("SML:0x%" PRIx64 " info->lines == NULL", info->id); + return terrno; + } } (void)memset(&info->preLine, 0, sizeof(SSmlLineInfo)); @@ -1971,10 +1975,14 @@ static bool getLine(SSmlHandle *info, char *lines[], char **rawLine, char *rawLi if (*rawLine != NULL && (uDebugFlag & DEBUG_DEBUG)) { char *print = taosMemoryCalloc(*len + 1, 1); - (void)memcpy(print, *tmp, *len); - uDebug("SML:0x%" PRIx64 " smlParseLine is raw, numLines:%d, protocol:%d, len:%d, data:%s", info->id, numLines, - info->protocol, *len, print); - taosMemoryFree(print); + if (print != NULL){ + (void)memcpy(print, *tmp, *len); + uDebug("SML:0x%" PRIx64 " smlParseLine is raw, numLines:%d, protocol:%d, len:%d, data:%s", info->id, numLines, + info->protocol, *len, print); + taosMemoryFree(print); + } else{ + uError("SML:0x%" PRIx64 " smlParseLine taosMemoryCalloc failed", info->id); + } } else { uDebug("SML:0x%" PRIx64 " smlParseLine is not numLines:%d, protocol:%d, len:%d, data:%s", info->id, numLines, info->protocol, *len, *tmp); diff --git a/source/client/src/clientTmq.c b/source/client/src/clientTmq.c index 8836fce31a..2c92824855 100644 --- a/source/client/src/clientTmq.c +++ b/source/client/src/clientTmq.c @@ -300,6 +300,7 @@ void tmq_conf_destroy(tmq_conf_t* conf) { tmq_conf_res_t tmq_conf_set(tmq_conf_t* conf, const char* key, const char* value) { int32_t code = 0; if (conf == NULL || key == NULL || value == NULL) { + tscError("tmq_conf_set null, conf:%p key:%p value:%p", conf, key, value); return TMQ_CONF_INVALID; } if (strcasecmp(key, "group.id") == 0) { @@ -320,6 +321,7 @@ tmq_conf_res_t tmq_conf_set(tmq_conf_t* conf, const char* key, const char* value conf->autoCommit = false; return TMQ_CONF_OK; } else { + tscError("invalid value for enable.auto.commit: %s", value); return TMQ_CONF_INVALID; } } @@ -328,6 +330,7 @@ tmq_conf_res_t tmq_conf_set(tmq_conf_t* conf, const char* key, const char* value int64_t tmp; code = taosStr2int64(value, &tmp); if (tmp < 0 || code != 0) { + tscError("invalid value for auto.commit.interval.ms: %s", value); return TMQ_CONF_INVALID; } conf->autoCommitInterval = (tmp > INT32_MAX ? INT32_MAX : tmp); @@ -338,6 +341,7 @@ tmq_conf_res_t tmq_conf_set(tmq_conf_t* conf, const char* key, const char* value int64_t tmp; code = taosStr2int64(value, &tmp); if (tmp < 6000 || tmp > 1800000 || code != 0) { + tscError("invalid value for session.timeout.ms: %s", value); return TMQ_CONF_INVALID; } conf->sessionTimeoutMs = tmp; @@ -348,6 +352,7 @@ tmq_conf_res_t tmq_conf_set(tmq_conf_t* conf, const char* key, const char* value int64_t tmp; code = taosStr2int64(value, &tmp); if (tmp < 1000 || tmp >= conf->sessionTimeoutMs || code != 0) { + tscError("invalid value for heartbeat.interval.ms: %s", value); return TMQ_CONF_INVALID; } conf->heartBeatIntervalMs = tmp; @@ -358,6 +363,7 @@ tmq_conf_res_t tmq_conf_set(tmq_conf_t* conf, const char* key, const char* value int32_t tmp; code = taosStr2int32(value, &tmp); if (tmp < 1000 || code != 0) { + tscError("invalid value for max.poll.interval.ms: %s", value); return TMQ_CONF_INVALID; } conf->maxPollIntervalMs = tmp; @@ -375,6 +381,7 @@ tmq_conf_res_t tmq_conf_set(tmq_conf_t* conf, const char* key, const char* value conf->resetOffset = TMQ_OFFSET__RESET_LATEST; return TMQ_CONF_OK; } else { + tscError("invalid value for auto.offset.reset: %s", value); return TMQ_CONF_INVALID; } } @@ -387,6 +394,7 @@ tmq_conf_res_t tmq_conf_set(tmq_conf_t* conf, const char* key, const char* value conf->withTbName = false; return TMQ_CONF_OK; } else { + tscError("invalid value for msg.with.table.name: %s", value); return TMQ_CONF_INVALID; } } @@ -399,22 +407,38 @@ tmq_conf_res_t tmq_conf_set(tmq_conf_t* conf, const char* key, const char* value conf->snapEnable = false; return TMQ_CONF_OK; } else { + tscError("invalid value for experimental.snapshot.enable: %s", value); return TMQ_CONF_INVALID; } } if (strcasecmp(key, "td.connect.ip") == 0) { - conf->ip = taosStrdup(value); + void *tmp = taosStrdup(value); + if (tmp == NULL) { + tscError("tmq_conf_set out of memory:%d", terrno); + return TMQ_CONF_INVALID; + } + conf->ip = tmp; return TMQ_CONF_OK; } if (strcasecmp(key, "td.connect.user") == 0) { - conf->user = taosStrdup(value); + void *tmp = taosStrdup(value); + if (tmp == NULL) { + tscError("tmq_conf_set out of memory:%d", terrno); + return TMQ_CONF_INVALID; + } + conf->user = tmp; return TMQ_CONF_OK; } if (strcasecmp(key, "td.connect.pass") == 0) { - conf->pass = taosStrdup(value); + void *tmp = taosStrdup(value); + if (tmp == NULL) { + tscError("tmq_conf_set out of memory:%d", terrno); + return TMQ_CONF_INVALID; + } + conf->pass = tmp; return TMQ_CONF_OK; } @@ -422,6 +446,7 @@ tmq_conf_res_t tmq_conf_set(tmq_conf_t* conf, const char* key, const char* value int64_t tmp; code = taosStr2int64(value, &tmp); if (tmp <= 0 || tmp > 65535 || code != 0) { + tscError("invalid value for td.connect.port: %s", value); return TMQ_CONF_INVALID; } @@ -437,6 +462,7 @@ tmq_conf_res_t tmq_conf_set(tmq_conf_t* conf, const char* key, const char* value conf->replayEnable = false; return TMQ_CONF_OK; } else { + tscError("invalid value for enable.replay: %s", value); return TMQ_CONF_INVALID; } } @@ -458,6 +484,7 @@ tmq_conf_res_t tmq_conf_set(tmq_conf_t* conf, const char* key, const char* value return TMQ_CONF_OK; } + tscError("unknown key: %s", key); return TMQ_CONF_UNKNOWN; } @@ -468,7 +495,11 @@ int32_t tmq_list_append(tmq_list_t* list, const char* src) { SArray* container = &list->container; if (src == NULL || src[0] == 0) return TSDB_CODE_INVALID_PARA; char* topic = taosStrdup(src); - if (taosArrayPush(container, &topic) == NULL) return TSDB_CODE_INVALID_PARA; + if (topic == NULL) return terrno; + if (taosArrayPush(container, &topic) == NULL) { + taosMemoryFree(topic); + return terrno; + } return 0; } @@ -947,13 +978,13 @@ void tmqSendHbReq(void* param, void* tmrId) { int32_t tlen = tSerializeSMqHbReq(NULL, 0, &req); if (tlen < 0) { - tscError("tSerializeSMqHbReq failed"); + tscError("tSerializeSMqHbReq failed, size:%d", tlen); goto OVER; } void* pReq = taosMemoryCalloc(1, tlen); - if (tlen < 0) { - tscError("failed to malloc MqHbReq msg, size:%d", tlen); + if (pReq == NULL) { + tscError("failed to malloc MqHbReq msg, code:%d", terrno); goto OVER; } @@ -989,9 +1020,7 @@ OVER: tDestroySMqHbReq(&req); if (tmrId != NULL) { bool ret = taosTmrReset(tmqSendHbReq, tmq->heartBeatIntervalMs, param, tmqMgmt.timer, &tmq->hbLiveTimer); - if (!ret){ - tscError("failed to reset timer fo tmq hb"); - } + tscDebug("reset timer fo tmq hb:%d", ret); } int32_t ret = taosReleaseRef(tmqMgmt.rsetId, refId); if (ret != 0){ @@ -1033,9 +1062,7 @@ void tmqHandleAllDelayedTask(tmq_t* pTmq) { tscDebug("consumer:0x%" PRIx64 " retrieve ep from mnode in 1s", pTmq->consumerId); bool ret = taosTmrReset(tmqAssignAskEpTask, DEFAULT_ASKEP_INTERVAL, (void*)(pTmq->refId), tmqMgmt.timer, &pTmq->epTimer); - if (!ret){ - tscError("failed to reset timer fo tmq ask ep"); - } + tscDebug("reset timer fo tmq ask ep:%d", ret); } else if (*pTaskType == TMQ_DELAYED_TASK__COMMIT) { tmq_commit_cb* pCallbackFn = pTmq->commitCb ? pTmq->commitCb : defaultCommitCbFn; asyncCommitAllOffsets(pTmq, pCallbackFn, pTmq->commitCbUserParam); @@ -1043,9 +1070,7 @@ void tmqHandleAllDelayedTask(tmq_t* pTmq) { pTmq->autoCommitInterval / 1000.0); bool ret = taosTmrReset(tmqAssignDelayedCommitTask, pTmq->autoCommitInterval, (void*)(pTmq->refId), tmqMgmt.timer, &pTmq->commitTimer); - if (!ret){ - tscError("failed to reset timer fo commit"); - } + tscDebug("reset timer fo commit:%d", ret); } else { tscError("consumer:0x%" PRIx64 " invalid task type:%d", pTmq->consumerId, *pTaskType); } @@ -3514,6 +3539,10 @@ int32_t tmq_get_topic_assignment(tmq_t* tmq, const char* pTopicName, tmq_topic_a } (void)taosThreadMutexInit(&pCommon->mutex, 0); pCommon->pTopicName = taosStrdup(pTopic->topicName); + if (pCommon->pTopicName == NULL) { + code = terrno; + goto end; + } pCommon->consumerId = tmq->consumerId; for (int32_t i = 0; i < (*numOfAssignment); ++i) { diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 810129e694..a3220706c7 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -1092,6 +1092,9 @@ int32_t taosSetSlowLogScope(char *pScopeStr, int32_t *pScope) { while((scope = strsep(&pScopeStr, "|")) != NULL){ taosMemoryFreeClear(tmp); tmp = taosStrdup(scope); + if (tmp == NULL) { + TAOS_RETURN(terrno); + } (void)strtrim(tmp); if (0 == strcasecmp(tmp, "all")) { slowScope |= SLOW_LOG_TYPE_ALL; diff --git a/source/dnode/mgmt/exe/dmMain.c b/source/dnode/mgmt/exe/dmMain.c index 9f5db9b0eb..1fb5271a0e 100644 --- a/source/dnode/mgmt/exe/dmMain.c +++ b/source/dnode/mgmt/exe/dmMain.c @@ -433,7 +433,8 @@ int mainWindows(int argc, char **argv) { } if (global.dumpSdb) { - mndDumpSdb(); + int32_t code = 0; + TAOS_CHECK_RETURN(mndDumpSdb()); taosCleanupCfg(); taosCloseLog(); taosCleanupArgs(); @@ -442,6 +443,7 @@ int mainWindows(int argc, char **argv) { } if (global.deleteTrans) { + int32_t code = 0; TdFilePtr pFile; if ((code = dmCheckRunning(tsDataDir, &pFile)) != 0) { printf("failed to generate encrypt code since taosd is running, please stop it first, reason:%s", @@ -449,7 +451,7 @@ int mainWindows(int argc, char **argv) { return code; } - mndDeleteTrans(); + TAOS_CHECK_RETURN(mndDeleteTrans()); taosCleanupCfg(); taosCloseLog(); taosCleanupArgs(); diff --git a/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c b/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c index ae12bf6c99..020a8077b2 100644 --- a/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c +++ b/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c @@ -69,6 +69,7 @@ static void dmMayShouldUpdateIpWhiteList(SDnodeMgmt *pMgmt, int64_t ver) { .contLen = contLen, .msgType = TDMT_MND_RETRIEVE_IP_WHITE, .info.ahandle = (void *)0x9527, + .info.notFreeAhandle = 1, .info.refId = 0, .info.noResp = 0, .info.handle = 0}; @@ -185,6 +186,7 @@ void dmSendStatusReq(SDnodeMgmt *pMgmt) { .contLen = contLen, .msgType = TDMT_MND_STATUS, .info.ahandle = (void *)0x9527, + .info.notFreeAhandle = 1, .info.refId = 0, .info.noResp = 0, .info.handle = 0}; @@ -234,6 +236,7 @@ void dmSendNotifyReq(SDnodeMgmt *pMgmt, SNotifyReq *pReq) { .contLen = contLen, .msgType = TDMT_MND_NOTIFY, .info.ahandle = (void *)0x9527, + .info.notFreeAhandle = 1, .info.refId = 0, .info.noResp = 1, .info.handle = 0}; @@ -483,7 +486,7 @@ int32_t dmProcessRetrieve(SDnodeMgmt *pMgmt, SRpcMsg *pMsg) { } int32_t len = blockEncode(pBlock, pStart, numOfCols); - if(len < 0) { + if (len < 0) { dError("failed to retrieve data since %s", tstrerror(code)); blockDataDestroy(pBlock); rpcFreeCont(pRsp); diff --git a/source/dnode/mgmt/node_mgmt/src/dmTransport.c b/source/dnode/mgmt/node_mgmt/src/dmTransport.c index 986bbc4ac8..e204b5d4aa 100644 --- a/source/dnode/mgmt/node_mgmt/src/dmTransport.c +++ b/source/dnode/mgmt/node_mgmt/src/dmTransport.c @@ -24,6 +24,12 @@ static inline void dmBuildMnodeRedirectRsp(SDnode *pDnode, SRpcMsg *pMsg) { SEpSet epSet = {0}; dmGetMnodeEpSetForRedirect(&pDnode->data, pMsg, &epSet); + if (epSet.numOfEps <= 1) { + pMsg->pCont = NULL; + pMsg->code = TSDB_CODE_MNODE_NOT_FOUND; + return; + } + int32_t contLen = tSerializeSEpSet(NULL, 0, &epSet); pMsg->pCont = rpcMallocCont(contLen); if (pMsg->pCont == NULL) { @@ -109,7 +115,8 @@ static void dmProcessRpcMsg(SDnode *pDnode, SRpcMsg *pRpc, SEpSet *pEpSet) { int32_t svrVer = 0; (void)taosVersionStrToInt(version, &svrVer); if ((code = taosCheckVersionCompatible(pRpc->info.cliVer, svrVer, 3)) != 0) { - dError("Version not compatible, cli ver: %d, svr ver: %d, ip:0x%x", pRpc->info.cliVer, svrVer, pRpc->info.conn.clientIp); + dError("Version not compatible, cli ver: %d, svr ver: %d, ip:0x%x", pRpc->info.cliVer, svrVer, + pRpc->info.conn.clientIp); goto _OVER; } @@ -437,7 +444,7 @@ int32_t dmInitStatusClient(SDnode *pDnode) { pTrans->statusRpc = rpcOpen(&rpcInit); if (pTrans->statusRpc == NULL) { - dError("failed to init dnode rpc status client since %s", tstrerror(terrno)); + dError("failed to init dnode rpc status client since %s", tstrerror(terrno)); return terrno; } diff --git a/source/dnode/mnode/impl/inc/mndStream.h b/source/dnode/mnode/impl/inc/mndStream.h index dceb86c963..b97eaf31d1 100644 --- a/source/dnode/mnode/impl/inc/mndStream.h +++ b/source/dnode/mnode/impl/inc/mndStream.h @@ -35,6 +35,7 @@ extern "C" { #define MND_STREAM_TASK_UPDATE_NAME "stream-task-update" #define MND_STREAM_CHKPT_UPDATE_NAME "stream-chkpt-update" #define MND_STREAM_CHKPT_CONSEN_NAME "stream-chkpt-consen" +#define MND_STREAM_RESTART_NAME "stream-restart" typedef struct SStreamTransInfo { int64_t startTime; @@ -120,6 +121,7 @@ int32_t mndStreamGetRelTrans(SMnode *pMnode, int64_t streamId); int32_t mndGetNumOfStreams(SMnode *pMnode, char *dbName, int32_t *pNumOfStreams); int32_t mndGetNumOfStreamTasks(const SStreamObj *pStream); int32_t mndTakeVgroupSnapshot(SMnode *pMnode, bool *allReady, SArray** pList); +void mndDestroyVgroupChangeInfo(SVgroupChangeInfo *pInfo); void mndKillTransImpl(SMnode *pMnode, int32_t transId, const char *pDbName); int32_t setTransAction(STrans *pTrans, void *pCont, int32_t contLen, int32_t msgType, const SEpSet *pEpset, int32_t retryCode, int32_t acceptCode); @@ -127,31 +129,39 @@ int32_t doCreateTrans(SMnode *pMnode, SStreamObj *pStream, SRpcMsg *pReq, ETrnC const char *pMsg, STrans **pTrans1); int32_t mndPersistTransLog(SStreamObj *pStream, STrans *pTrans, int32_t status); SSdbRaw *mndStreamActionEncode(SStreamObj *pStream); -void killAllCheckpointTrans(SMnode *pMnode, SVgroupChangeInfo *pChangeInfo); int32_t mndStreamSetUpdateEpsetAction(SMnode *pMnode, SStreamObj *pStream, SVgroupChangeInfo *pInfo, STrans *pTrans); int32_t mndGetStreamObj(SMnode *pMnode, int64_t streamId, SStreamObj** pStream); +bool mndStreamNodeIsUpdated(SMnode *pMnode); + int32_t extractNodeEpset(SMnode *pMnode, SEpSet *pEpSet, bool *hasEpset, int32_t taskId, int32_t nodeId); int32_t mndProcessStreamHb(SRpcMsg *pReq); -void saveTaskAndNodeInfoIntoBuf(SStreamObj *pStream, SStreamExecInfo *pExecNode); int32_t extractStreamNodeList(SMnode *pMnode); int32_t mndStreamSetResumeAction(STrans *pTrans, SMnode *pMnode, SStreamObj *pStream, int8_t igUntreated); int32_t mndStreamSetPauseAction(SMnode *pMnode, STrans *pTrans, SStreamObj *pStream); int32_t mndStreamSetDropAction(SMnode *pMnode, STrans *pTrans, SStreamObj *pStream); int32_t mndStreamSetDropActionFromList(SMnode *pMnode, STrans *pTrans, SArray *pList); int32_t mndStreamSetResetTaskAction(SMnode *pMnode, STrans *pTrans, SStreamObj *pStream); -int32_t mndCreateStreamResetStatusTrans(SMnode *pMnode, SStreamObj *pStream); int32_t mndStreamSetUpdateChkptAction(SMnode *pMnode, STrans *pTrans, SStreamObj *pStream); +int32_t mndCreateStreamResetStatusTrans(SMnode *pMnode, SStreamObj *pStream); +int32_t mndStreamSetChkptIdAction(SMnode *pMnode, STrans *pTrans, SStreamTask* pTask, int64_t checkpointId, int64_t ts); +int32_t mndStreamSetRestartAction(SMnode* pMnode, STrans *pTrans, SStreamObj* pStream); +int32_t mndStreamSetCheckpointAction(SMnode *pMnode, STrans *pTrans, SStreamTask *pTask, int64_t checkpointId, + int8_t mndTrigger); int32_t mndCreateStreamChkptInfoUpdateTrans(SMnode *pMnode, SStreamObj *pStream, SArray *pChkptInfoList); int32_t mndScanCheckpointReportInfo(SRpcMsg *pReq); int32_t mndCreateSetConsensusChkptIdTrans(SMnode *pMnode, SStreamObj *pStream, int32_t taskId, int64_t checkpointId, int64_t ts); void removeTasksInBuf(SArray *pTaskIds, SStreamExecInfo *pExecInfo); +int32_t mndFindChangedNodeInfo(SMnode *pMnode, const SArray *pPrevNodeList, const SArray *pNodeList, + SVgroupChangeInfo *pInfo); +void killAllCheckpointTrans(SMnode *pMnode, SVgroupChangeInfo *pChangeInfo); int32_t createStreamTaskIter(SStreamObj *pStream, SStreamTaskIter **pIter); void destroyStreamTaskIter(SStreamTaskIter *pIter); bool streamTaskIterNextTask(SStreamTaskIter *pIter); int32_t streamTaskIterGetCurrent(SStreamTaskIter *pIter, SStreamTask **pTask); + int32_t mndInitExecInfo(); void mndInitStreamExecInfo(SMnode *pMnode, SStreamExecInfo *pExecInfo); void mndStreamResetInitTaskListLoadFlag(); diff --git a/source/dnode/mnode/impl/src/mndCompact.c b/source/dnode/mnode/impl/src/mndCompact.c index 82824eb6e8..2e40965c18 100644 --- a/source/dnode/mnode/impl/src/mndCompact.c +++ b/source/dnode/mnode/impl/src/mndCompact.c @@ -287,6 +287,8 @@ int32_t mndRetrieveCompact(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, SCompactObj *pCompact = NULL; char *sep = NULL; SDbObj *pDb = NULL; + int32_t code = 0; + int32_t lino = 0; if (strlen(pShow->db) > 0) { sep = strchr(pShow->db, '.'); @@ -310,26 +312,30 @@ int32_t mndRetrieveCompact(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, char tmpBuf[TSDB_SHOW_SQL_LEN + VARSTR_HEADER_SIZE] = {0}; pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pCompact->compactId, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)&pCompact->compactId, false), pCompact, &lino, + _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); if (pDb != NULL || !IS_SYS_DBNAME(pCompact->dbname)) { SName name = {0}; - (void)tNameFromString(&name, pCompact->dbname, T_NAME_ACCT | T_NAME_DB); + TAOS_CHECK_GOTO(tNameFromString(&name, pCompact->dbname, T_NAME_ACCT | T_NAME_DB), &lino, _OVER); (void)tNameGetDbName(&name, varDataVal(tmpBuf)); } else { (void)strncpy(varDataVal(tmpBuf), pCompact->dbname, TSDB_SHOW_SQL_LEN); } varDataSetLen(tmpBuf, strlen(varDataVal(tmpBuf))); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)tmpBuf, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)tmpBuf, false), pCompact, &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pCompact->startTime, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)&pCompact->startTime, false), pCompact, &lino, + _OVER); numOfRows++; sdbRelease(pSdb, pCompact); } +_OVER: + if (code != 0) mError("failed to retrieve at line:%d, since %s", lino, tstrerror(code)); pShow->numOfRows += numOfRows; mndReleaseDb(pMnode, pDb); return numOfRows; @@ -468,7 +474,7 @@ static int32_t mndKillCompact(SMnode *pMnode, SRpcMsg *pReq, SCompactObj *pCompa mndTransDrop(pTrans); return -1; } - (void)sdbSetRawStatus(pCommitRaw, SDB_STATUS_DROPPED); + sdbSetRawStatus(pCommitRaw, SDB_STATUS_DROPPED); */ } diff --git a/source/dnode/mnode/impl/src/mndConsumer.c b/source/dnode/mnode/impl/src/mndConsumer.c index 9704ccaa83..4365b83f86 100644 --- a/source/dnode/mnode/impl/src/mndConsumer.c +++ b/source/dnode/mnode/impl/src/mndConsumer.c @@ -463,6 +463,15 @@ static void freeItem(void *param) { } } +#define ADD_TOPIC_TO_ARRAY(element, array) \ +char *newTopicCopy = taosStrdup(element); \ +MND_TMQ_NULL_CHECK(newTopicCopy);\ +if (taosArrayPush(pConsumerNew->array, &newTopicCopy) == NULL){\ + taosMemoryFree(newTopicCopy);\ + code = terrno;\ + goto END;\ +} + static int32_t getTopicAddDelete(SMqConsumerObj *pExistedConsumer, SMqConsumerObj *pConsumerNew){ int32_t code = 0; pConsumerNew->rebNewTopics = taosArrayInit(0, sizeof(void *)); @@ -477,15 +486,13 @@ static int32_t getTopicAddDelete(SMqConsumerObj *pExistedConsumer, SMqConsumerOb if (i >= oldTopicNum) { void* tmp = taosArrayGetP(pConsumerNew->assignedTopics, j); MND_TMQ_NULL_CHECK(tmp); - char *newTopicCopy = taosStrdup(tmp); - MND_TMQ_NULL_CHECK(taosArrayPush(pConsumerNew->rebNewTopics, &newTopicCopy)); + ADD_TOPIC_TO_ARRAY(tmp, rebNewTopics); j++; continue; } else if (j >= newTopicNum) { void* tmp = taosArrayGetP(pExistedConsumer->currentTopics, i); MND_TMQ_NULL_CHECK(tmp); - char *oldTopicCopy = taosStrdup(tmp); - MND_TMQ_NULL_CHECK(taosArrayPush(pConsumerNew->rebRemovedTopics, &oldTopicCopy)); + ADD_TOPIC_TO_ARRAY(tmp, rebRemovedTopics); i++; continue; } else { @@ -499,13 +506,11 @@ static int32_t getTopicAddDelete(SMqConsumerObj *pExistedConsumer, SMqConsumerOb j++; continue; } else if (comp < 0) { - char *oldTopicCopy = taosStrdup(oldTopic); - MND_TMQ_NULL_CHECK(taosArrayPush(pConsumerNew->rebRemovedTopics, &oldTopicCopy)); + ADD_TOPIC_TO_ARRAY(oldTopic, rebRemovedTopics); i++; continue; } else { - char *newTopicCopy = taosStrdup(newTopic); - MND_TMQ_NULL_CHECK(taosArrayPush(pConsumerNew->rebNewTopics, &newTopicCopy)); + ADD_TOPIC_TO_ARRAY(newTopic, rebNewTopics); j++; continue; } @@ -789,6 +794,9 @@ static int32_t mndConsumerActionUpdate(SSdb *pSdb, SMqConsumerObj *pOldConsumer, return TSDB_CODE_TMQ_INVALID_MSG; } char *pNewTopic = taosStrdup(tmp); + if (pNewTopic == NULL) { + return terrno; + } removeFromTopicList(pOldConsumer->rebNewTopics, pNewTopic, pOldConsumer->consumerId, "new"); bool existing = existInCurrentTopicList(pOldConsumer, pNewTopic); if (existing) { diff --git a/source/dnode/mnode/impl/src/mndDb.c b/source/dnode/mnode/impl/src/mndDb.c index efa98e3b40..4a09aa44a0 100644 --- a/source/dnode/mnode/impl/src/mndDb.c +++ b/source/dnode/mnode/impl/src/mndDb.c @@ -981,7 +981,8 @@ static int32_t mndProcessCreateDbReq(SRpcMsg *pReq) { if (code == 0) code = TSDB_CODE_ACTION_IN_PROGRESS; SName name = {0}; - (void)tNameFromString(&name, createReq.db, T_NAME_ACCT | T_NAME_DB); + if (tNameFromString(&name, createReq.db, T_NAME_ACCT | T_NAME_DB) < 0) + mError("db:%s, failed to parse db name", createReq.db); auditRecord(pReq, pMnode->clusterId, "createDB", name.dbname, "", createReq.sql, createReq.sqlLen); @@ -1135,7 +1136,10 @@ static int32_t mndSetAlterDbPrepareLogs(SMnode *pMnode, STrans *pTrans, SDbObj * TAOS_RETURN(code); } - (void)sdbSetRawStatus(pRedoRaw, SDB_STATUS_READY); + if ((code = sdbSetRawStatus(pRedoRaw, SDB_STATUS_READY)) != 0) { + sdbFreeRaw(pRedoRaw); + TAOS_RETURN(code); + } return 0; } @@ -1152,7 +1156,10 @@ static int32_t mndSetAlterDbCommitLogs(SMnode *pMnode, STrans *pTrans, SDbObj *p TAOS_RETURN(code); } - (void)sdbSetRawStatus(pCommitRaw, SDB_STATUS_READY); + if ((code = sdbSetRawStatus(pCommitRaw, SDB_STATUS_READY)) != 0) { + sdbFreeRaw(pCommitRaw); + TAOS_RETURN(code); + } TAOS_RETURN(code); } @@ -1284,7 +1291,8 @@ static int32_t mndProcessAlterDbReq(SRpcMsg *pReq) { } SName name = {0}; - (void)tNameFromString(&name, alterReq.db, T_NAME_ACCT | T_NAME_DB); + if (tNameFromString(&name, alterReq.db, T_NAME_ACCT | T_NAME_DB) < 0) + mError("db:%s, failed to parse db name", alterReq.db); auditRecord(pReq, pMnode->clusterId, "alterDB", name.dbname, "", alterReq.sql, alterReq.sqlLen); @@ -1371,7 +1379,11 @@ static int32_t mndProcessGetDbCfgReq(SRpcMsg *pReq) { goto _OVER; } - (void)tSerializeSDbCfgRsp(pRsp, contLen, &cfgRsp); + int32_t ret = 0; + if ((ret = tSerializeSDbCfgRsp(pRsp, contLen, &cfgRsp)) < 0) { + code = ret; + goto _OVER; + } pReq->info.rsp = pRsp; pReq->info.rspLen = contLen; @@ -1473,7 +1485,11 @@ static int32_t mndSetDropDbCommitLogs(SMnode *pMnode, STrans *pTrans, SDbObj *pD sdbRelease(pSdb, pVgroup); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pVgRaw, SDB_STATUS_DROPPED); + if ((code = sdbSetRawStatus(pVgRaw, SDB_STATUS_DROPPED)) != 0) { + sdbCancelFetch(pSdb, pIter); + sdbRelease(pSdb, pVgroup); + TAOS_RETURN(code); + } } sdbRelease(pSdb, pVgroup); @@ -1498,7 +1514,11 @@ static int32_t mndSetDropDbCommitLogs(SMnode *pMnode, STrans *pTrans, SDbObj *pD sdbRelease(pSdb, pStbRaw); return -1; } - (void)sdbSetRawStatus(pStbRaw, SDB_STATUS_DROPPED); + if ((code = sdbSetRawStatus(pStbRaw, SDB_STATUS_DROPPED)) != 0) { + sdbCancelFetch(pSdb, pIter); + sdbRelease(pSdb, pStbRaw); + return -1; + } } sdbRelease(pSdb, pStb); @@ -1562,7 +1582,8 @@ static int32_t mndBuildDropDbRsp(SDbObj *pDb, int32_t *pRspLen, void **ppRsp, bo TAOS_RETURN(code); } - (void)tSerializeSDropDbRsp(pRsp, rspLen, &dropRsp); + int32_t ret = 0; + if ((ret = tSerializeSDropDbRsp(pRsp, rspLen, &dropRsp)) < 0) return ret; *pRspLen = rspLen; *ppRsp = pRsp; TAOS_RETURN(code); @@ -1643,7 +1664,8 @@ static int32_t mndProcessDropDbReq(SRpcMsg *pReq) { } SName name = {0}; - (void)tNameFromString(&name, dropReq.db, T_NAME_ACCT | T_NAME_DB); + if (tNameFromString(&name, dropReq.db, T_NAME_ACCT | T_NAME_DB) < 0) + mError("db:%s, failed to parse db name", dropReq.db); auditRecord(pReq, pMnode->clusterId, "dropDB", name.dbname, "", dropReq.sql, dropReq.sqlLen); @@ -1805,14 +1827,18 @@ static int32_t mndProcessUseDbReq(SRpcMsg *pReq) { goto _OVER; } - (void)tSerializeSUseDbRsp(pRsp, contLen, &usedbRsp); + int32_t ret = 0; + if ((ret = tSerializeSUseDbRsp(pRsp, contLen, &usedbRsp)) < 0) { + code = ret; + goto _OVER; + } pReq->info.rsp = pRsp; pReq->info.rspLen = contLen; _OVER: if (code != 0 && code != TSDB_CODE_ACTION_IN_PROGRESS) { - mError("db:%s, failed to process use db req since %s", usedbReq.db, terrstr()); + mError("db:%s, failed to process use db req since %s", usedbReq.db, tstrerror(code)); } mndReleaseDb(pMnode, pDb); @@ -1964,7 +1990,8 @@ int32_t mndValidateDbInfo(SMnode *pMnode, SDbCacheInfo *pDbs, int32_t numOfDbs, tFreeSDbHbBatchRsp(&batchRsp); return -1; } - (void)tSerializeSDbHbBatchRsp(pRsp, rspLen, &batchRsp); + int32_t ret = 0; + if ((ret = tSerializeSDbHbBatchRsp(pRsp, rspLen, &batchRsp)) < 0) return ret; *ppRsp = pRsp; *pRspLen = rspLen; @@ -1977,6 +2004,7 @@ static int32_t mndTrimDb(SMnode *pMnode, SDbObj *pDb) { SSdb *pSdb = pMnode->pSdb; SVgObj *pVgroup = NULL; void *pIter = NULL; + int32_t code = 0; SVTrimDbReq trimReq = {.timestamp = taosGetTimestampSec()}; int32_t reqLen = tSerializeSVTrimDbReq(NULL, 0, &trimReq); int32_t contLen = reqLen + sizeof(SMsgHead); @@ -1993,7 +2021,11 @@ static int32_t mndTrimDb(SMnode *pMnode, SDbObj *pDb) { } pHead->contLen = htonl(contLen); pHead->vgId = htonl(pVgroup->vgId); - (void)tSerializeSVTrimDbReq((char *)pHead + sizeof(SMsgHead), contLen, &trimReq); + int32_t ret = 0; + if ((ret = tSerializeSVTrimDbReq((char *)pHead + sizeof(SMsgHead), contLen, &trimReq)) < 0) { + sdbRelease(pSdb, pVgroup); + return ret; + } SRpcMsg rpcMsg = {.msgType = TDMT_VND_TRIM, .pCont = pHead, .contLen = contLen}; SEpSet epSet = mndGetVgroupEpset(pMnode, pVgroup); @@ -2046,6 +2078,7 @@ static int32_t mndS3MigrateDb(SMnode *pMnode, SDbObj *pDb) { SVS3MigrateDbReq s3migrateReq = {.timestamp = taosGetTimestampSec()}; int32_t reqLen = tSerializeSVS3MigrateDbReq(NULL, 0, &s3migrateReq); int32_t contLen = reqLen + sizeof(SMsgHead); + int32_t code = 0; while (1) { pIter = sdbFetch(pSdb, SDB_VGROUP, pIter, (void **)&pVgroup); @@ -2061,7 +2094,11 @@ static int32_t mndS3MigrateDb(SMnode *pMnode, SDbObj *pDb) { } pHead->contLen = htonl(contLen); pHead->vgId = htonl(pVgroup->vgId); - (void)tSerializeSVS3MigrateDbReq((char *)pHead + sizeof(SMsgHead), contLen, &s3migrateReq); + int32_t ret = 0; + if ((ret = tSerializeSVS3MigrateDbReq((char *)pHead + sizeof(SMsgHead), contLen, &s3migrateReq)) < 0) { + sdbRelease(pSdb, pVgroup); + return ret; + } SRpcMsg rpcMsg = {.msgType = TDMT_VND_S3MIGRATE, .pCont = pHead, .contLen = contLen}; SEpSet epSet = mndGetVgroupEpset(pMnode, pVgroup); @@ -2243,6 +2280,8 @@ static void mndDumpDbInfoData(SMnode *pMnode, SSDataBlock *pBlock, SDbObj *pDb, int32_t cols = 0; int32_t bytes = pShow->pMeta->pSchemas[cols].bytes; char *buf = taosMemoryMalloc(bytes); + int32_t code = 0; + int32_t lino = 0; const char *name = mndGetDbStr(pDb->name); if (name != NULL) { @@ -2286,47 +2325,47 @@ static void mndDumpDbInfoData(SMnode *pMnode, SSDataBlock *pBlock, SDbObj *pDb, for (int32_t i = 0; i < pShow->numOfColumns; ++i) { SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, i); if (i == 0) { - (void)colDataSetVal(pColInfo, rows, buf, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, buf, false), &lino, _OVER); } else if (i == 1) { - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->createdTime, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->createdTime, false), &lino, _OVER); } else if (i == 3) { - (void)colDataSetVal(pColInfo, rows, (const char *)&numOfTables, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&numOfTables, false), &lino, _OVER); } else if (i == 14) { - (void)colDataSetVal(pColInfo, rows, precVstr, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, precVstr, false), &lino, _OVER); } else if (i == 15) { - (void)colDataSetVal(pColInfo, rows, statusVstr, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, statusVstr, false), &lino, _OVER); } else { colDataSetNULL(pColInfo, rows); } } } else { SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, buf, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, buf, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->createdTime, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->createdTime, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.numOfVgroups, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.numOfVgroups, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&numOfTables, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&numOfTables, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.replications, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.replications, false), &lino, _OVER); const char *strictStr = pDb->cfg.strict ? "on" : "off"; char strictVstr[24] = {0}; STR_WITH_MAXSIZE_TO_VARSTR(strictVstr, strictStr, 24); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)strictVstr, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)strictVstr, false), &lino, _OVER); char durationVstr[128] = {0}; int32_t len = formatDurationOrKeep(&durationVstr[VARSTR_HEADER_SIZE], pDb->cfg.daysPerFile); varDataSetLen(durationVstr, len); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)durationVstr, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)durationVstr, false), &lino, _OVER); char keepVstr[512] = {0}; char keep0Str[128] = {0}; @@ -2344,67 +2383,67 @@ static void mndDumpDbInfoData(SMnode *pMnode, SSDataBlock *pBlock, SDbObj *pDb, } varDataSetLen(keepVstr, len); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)keepVstr, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)keepVstr, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.buffer, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.buffer, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.pageSize, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.pageSize, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.pages, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.pages, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.minRows, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.minRows, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.maxRows, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.maxRows, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.compression, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.compression, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)precVstr, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)precVstr, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)statusVstr, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)statusVstr, false), &lino, _OVER); char *rentensionVstr = buildRetension(pDb->cfg.pRetensions); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); if (rentensionVstr == NULL) { colDataSetNULL(pColInfo, rows); } else { - (void)colDataSetVal(pColInfo, rows, (const char *)rentensionVstr, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)rentensionVstr, false), &lino, _OVER); taosMemoryFree(rentensionVstr); } pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.numOfStables, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.numOfStables, false), &lino, _OVER); const char *cacheModelStr = getCacheModelStr(pDb->cfg.cacheLast); char cacheModelVstr[24] = {0}; STR_WITH_MAXSIZE_TO_VARSTR(cacheModelVstr, cacheModelStr, 24); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)cacheModelVstr, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)cacheModelVstr, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.cacheLastSize, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.cacheLastSize, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.walLevel, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.walLevel, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.walFsyncPeriod, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.walFsyncPeriod, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.walRetentionPeriod, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.walRetentionPeriod, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.walRetentionSize, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.walRetentionSize, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.sstTrigger, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.sstTrigger, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); int16_t hashPrefix = pDb->cfg.hashPrefix; @@ -2413,39 +2452,40 @@ static void mndDumpDbInfoData(SMnode *pMnode, SSDataBlock *pBlock, SDbObj *pDb, } else if (hashPrefix < 0) { hashPrefix = pDb->cfg.hashPrefix + strlen(pDb->name) + 1; } - (void)colDataSetVal(pColInfo, rows, (const char *)&hashPrefix, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&hashPrefix, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.hashSuffix, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.hashSuffix, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.tsdbPageSize, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.tsdbPageSize, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.keepTimeOffset, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.keepTimeOffset, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.s3ChunkSize, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.s3ChunkSize, false), &lino, _OVER); char keeplocalVstr[128] = {0}; len = sprintf(&keeplocalVstr[VARSTR_HEADER_SIZE], "%dm", pDb->cfg.s3KeepLocal); varDataSetLen(keeplocalVstr, len); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)keeplocalVstr, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)keeplocalVstr, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.s3Compact, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.s3Compact, false), &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.withArbitrator, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.withArbitrator, false), &lino, _OVER); const char *encryptAlgorithmStr = getEncryptAlgorithmStr(pDb->cfg.encryptAlgorithm); char encryptAlgorithmVStr[24] = {0}; STR_WITH_MAXSIZE_TO_VARSTR(encryptAlgorithmVStr, encryptAlgorithmStr, 24); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, rows, (const char *)encryptAlgorithmVStr, false); + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)encryptAlgorithmVStr, false), &lino, _OVER); } - +_OVER: + if (code != 0) mError("failed to retrieve at line:%d, since %s", lino, tstrerror(code)); taosMemoryFree(buf); } diff --git a/source/dnode/mnode/impl/src/mndDump.c b/source/dnode/mnode/impl/src/mndDump.c index 7613282ef8..d1dd99b319 100644 --- a/source/dnode/mnode/impl/src/mndDump.c +++ b/source/dnode/mnode/impl/src/mndDump.c @@ -16,6 +16,7 @@ #define _DEFAULT_SOURCE #include "mndDb.h" #include "mndInt.h" +#include "mndShow.h" #include "mndStb.h" #include "sdb.h" #include "tconfig.h" @@ -46,7 +47,9 @@ char *i642str(int64_t val) { } void dumpFunc(SSdb *pSdb, SJson *json) { - void *pIter = NULL; + int32_t code = 0; + int32_t lino = 0; + void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "funcs"); while (1) { @@ -55,26 +58,30 @@ void dumpFunc(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "name", pObj->name); - (void)tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)); - (void)tjsonAddStringToObject(item, "funcType", i642str(pObj->funcType)); - (void)tjsonAddStringToObject(item, "scriptType", i642str(pObj->scriptType)); - (void)tjsonAddStringToObject(item, "align", i642str(pObj->align)); - (void)tjsonAddStringToObject(item, "outputType", i642str(pObj->outputType)); - (void)tjsonAddStringToObject(item, "outputLen", i642str(pObj->outputLen)); - (void)tjsonAddStringToObject(item, "bufSize", i642str(pObj->bufSize)); - (void)tjsonAddStringToObject(item, "signature", i642str(pObj->signature)); - (void)tjsonAddStringToObject(item, "commentSize", i642str(pObj->commentSize)); - (void)tjsonAddStringToObject(item, "codeSize", i642str(pObj->codeSize)); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", pObj->name), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "funcType", i642str(pObj->funcType)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "scriptType", i642str(pObj->scriptType)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "align", i642str(pObj->align)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "outputType", i642str(pObj->outputType)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "outputLen", i642str(pObj->outputLen)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "bufSize", i642str(pObj->bufSize)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "signature", i642str(pObj->signature)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "commentSize", i642str(pObj->commentSize)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "codeSize", i642str(pObj->codeSize)), pObj, &lino, _OVER); sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump func info at line:%d since %s", lino, tstrerror(code)); } void dumpDb(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; void *pIter = NULL; SJson *items = tjsonCreateObject(); - (void)tjsonAddItemToObject(json, "dbs", items); + TAOS_CHECK_GOTO(tjsonAddItemToObject(json, "dbs", items), &lino, _OVER); while (1) { SDbObj *pObj = NULL; @@ -82,65 +89,86 @@ void dumpDb(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToObject(items, "db", item); + RETRIEVE_CHECK_GOTO(tjsonAddItemToObject(items, "db", item), pObj, &lino, _OVER); - (void)tjsonAddStringToObject(item, "name", mndGetDbStr(pObj->name)); - (void)tjsonAddStringToObject(item, "acct", pObj->acct); - (void)tjsonAddStringToObject(item, "createUser", pObj->createUser); - (void)tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)); - (void)tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)); - (void)tjsonAddStringToObject(item, "uid", i642str(pObj->uid)); - (void)tjsonAddStringToObject(item, "cfgVersion", i642str(pObj->cfgVersion)); - (void)tjsonAddStringToObject(item, "vgVersion", i642str(pObj->vgVersion)); - (void)tjsonAddStringToObject(item, "numOfVgroups", i642str(pObj->cfg.numOfVgroups)); - (void)tjsonAddStringToObject(item, "numOfStables", i642str(pObj->cfg.numOfStables)); - (void)tjsonAddStringToObject(item, "buffer", i642str(pObj->cfg.buffer)); - (void)tjsonAddStringToObject(item, "pageSize", i642str(pObj->cfg.pageSize)); - (void)tjsonAddStringToObject(item, "pages", i642str(pObj->cfg.pages)); - (void)tjsonAddStringToObject(item, "cacheLastSize", i642str(pObj->cfg.cacheLastSize)); - (void)tjsonAddStringToObject(item, "daysPerFile", i642str(pObj->cfg.daysPerFile)); - (void)tjsonAddStringToObject(item, "daysToKeep0", i642str(pObj->cfg.daysToKeep0)); - (void)tjsonAddStringToObject(item, "daysToKeep1", i642str(pObj->cfg.daysToKeep1)); - (void)tjsonAddStringToObject(item, "daysToKeep2", i642str(pObj->cfg.daysToKeep2)); - (void)tjsonAddStringToObject(item, "minRows", i642str(pObj->cfg.minRows)); - (void)tjsonAddStringToObject(item, "maxRows", i642str(pObj->cfg.maxRows)); - (void)tjsonAddStringToObject(item, "precision", i642str(pObj->cfg.precision)); - (void)tjsonAddStringToObject(item, "compression", i642str(pObj->cfg.compression)); - (void)tjsonAddStringToObject(item, "encryptAlgorithm", i642str(pObj->cfg.encryptAlgorithm)); - (void)tjsonAddStringToObject(item, "replications", i642str(pObj->cfg.replications)); - (void)tjsonAddStringToObject(item, "strict", i642str(pObj->cfg.strict)); - (void)tjsonAddStringToObject(item, "cacheLast", i642str(pObj->cfg.cacheLast)); - (void)tjsonAddStringToObject(item, "hashMethod", i642str(pObj->cfg.hashMethod)); - (void)tjsonAddStringToObject(item, "hashPrefix", i642str(pObj->cfg.hashPrefix)); - (void)tjsonAddStringToObject(item, "hashSuffix", i642str(pObj->cfg.hashSuffix)); - (void)tjsonAddStringToObject(item, "sstTrigger", i642str(pObj->cfg.sstTrigger)); - (void)tjsonAddStringToObject(item, "tsdbPageSize", i642str(pObj->cfg.tsdbPageSize)); - (void)tjsonAddStringToObject(item, "schemaless", i642str(pObj->cfg.schemaless)); - (void)tjsonAddStringToObject(item, "walLevel", i642str(pObj->cfg.walLevel)); - (void)tjsonAddStringToObject(item, "walFsyncPeriod", i642str(pObj->cfg.walFsyncPeriod)); - (void)tjsonAddStringToObject(item, "walRetentionPeriod", i642str(pObj->cfg.walRetentionPeriod)); - (void)tjsonAddStringToObject(item, "walRetentionSize", i642str(pObj->cfg.walRetentionSize)); - (void)tjsonAddStringToObject(item, "walRollPeriod", i642str(pObj->cfg.walRollPeriod)); - (void)tjsonAddStringToObject(item, "walSegmentSize", i642str(pObj->cfg.walSegmentSize)); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", mndGetDbStr(pObj->name)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "acct", pObj->acct), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createUser", pObj->createUser), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "uid", i642str(pObj->uid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "cfgVersion", i642str(pObj->cfgVersion)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "vgVersion", i642str(pObj->vgVersion)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfVgroups", i642str(pObj->cfg.numOfVgroups)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfStables", i642str(pObj->cfg.numOfStables)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "buffer", i642str(pObj->cfg.buffer)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "pageSize", i642str(pObj->cfg.pageSize)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "pages", i642str(pObj->cfg.pages)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "cacheLastSize", i642str(pObj->cfg.cacheLastSize)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "daysPerFile", i642str(pObj->cfg.daysPerFile)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "daysToKeep0", i642str(pObj->cfg.daysToKeep0)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "daysToKeep1", i642str(pObj->cfg.daysToKeep1)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "daysToKeep2", i642str(pObj->cfg.daysToKeep2)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "minRows", i642str(pObj->cfg.minRows)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "maxRows", i642str(pObj->cfg.maxRows)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "precision", i642str(pObj->cfg.precision)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "compression", i642str(pObj->cfg.compression)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "encryptAlgorithm", i642str(pObj->cfg.encryptAlgorithm)), pObj, + &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "replications", i642str(pObj->cfg.replications)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "strict", i642str(pObj->cfg.strict)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "cacheLast", i642str(pObj->cfg.cacheLast)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "hashMethod", i642str(pObj->cfg.hashMethod)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "hashPrefix", i642str(pObj->cfg.hashPrefix)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "hashSuffix", i642str(pObj->cfg.hashSuffix)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "sstTrigger", i642str(pObj->cfg.sstTrigger)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "tsdbPageSize", i642str(pObj->cfg.tsdbPageSize)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "schemaless", i642str(pObj->cfg.schemaless)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "walLevel", i642str(pObj->cfg.walLevel)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "walFsyncPeriod", i642str(pObj->cfg.walFsyncPeriod)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "walRetentionPeriod", i642str(pObj->cfg.walRetentionPeriod)), pObj, + &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "walRetentionSize", i642str(pObj->cfg.walRetentionSize)), pObj, + &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "walRollPeriod", i642str(pObj->cfg.walRollPeriod)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "walSegmentSize", i642str(pObj->cfg.walSegmentSize)), pObj, &lino, + _OVER); - (void)tjsonAddStringToObject(item, "numOfRetensions", i642str(pObj->cfg.numOfRetensions)); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfRetensions", i642str(pObj->cfg.numOfRetensions)), pObj, + &lino, _OVER); for (int32_t i = 0; i < pObj->cfg.numOfRetensions; ++i) { SJson *rentensions = tjsonAddArrayToObject(item, "rentensions"); SJson *rentension = tjsonCreateObject(); - (void)tjsonAddItemToArray(rentensions, rentension); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(rentensions, rentension), pObj, &lino, _OVER); SRetention *pRetension = taosArrayGet(pObj->cfg.pRetensions, i); - (void)tjsonAddStringToObject(item, "freq", i642str(pRetension->freq)); - (void)tjsonAddStringToObject(item, "freqUnit", i642str(pRetension->freqUnit)); - (void)tjsonAddStringToObject(item, "keep", i642str(pRetension->keep)); - (void)tjsonAddStringToObject(item, "keepUnit", i642str(pRetension->keepUnit)); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "freq", i642str(pRetension->freq)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "freqUnit", i642str(pRetension->freqUnit)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "keep", i642str(pRetension->keep)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "keepUnit", i642str(pRetension->keepUnit)), pObj, &lino, _OVER); } sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump db info at line:%d since %s", lino, tstrerror(code)); } void dumpStb(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "stbs"); @@ -150,62 +178,67 @@ void dumpStb(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "name", mndGetStbStr(pObj->name)); - (void)tjsonAddStringToObject(item, "db", mndGetDbStr(pObj->db)); - (void)tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)); - (void)tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)); - (void)tjsonAddStringToObject(item, "uid", i642str(pObj->uid)); - (void)tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)); - (void)tjsonAddStringToObject(item, "tagVer", i642str(pObj->tagVer)); - (void)tjsonAddStringToObject(item, "colVer", i642str(pObj->colVer)); - (void)tjsonAddStringToObject(item, "smaVer", i642str(pObj->smaVer)); - (void)tjsonAddStringToObject(item, "nextColId", i642str(pObj->nextColId)); - (void)tjsonAddStringToObject(item, "watermark1", i642str(pObj->watermark[0])); - (void)tjsonAddStringToObject(item, "watermark2", i642str(pObj->watermark[1])); - (void)tjsonAddStringToObject(item, "maxdelay0", i642str(pObj->maxdelay[0])); - (void)tjsonAddStringToObject(item, "maxdelay1", i642str(pObj->maxdelay[1])); - (void)tjsonAddStringToObject(item, "ttl", i642str(pObj->ttl)); - (void)tjsonAddStringToObject(item, "numOfFuncs", i642str(pObj->numOfFuncs)); - (void)tjsonAddStringToObject(item, "commentLen", i642str(pObj->commentLen)); - (void)tjsonAddStringToObject(item, "ast1Len", i642str(pObj->ast1Len)); - (void)tjsonAddStringToObject(item, "ast2Len", i642str(pObj->ast2Len)); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", mndGetStbStr(pObj->name)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "db", mndGetDbStr(pObj->db)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "uid", i642str(pObj->uid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "tagVer", i642str(pObj->tagVer)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "colVer", i642str(pObj->colVer)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "smaVer", i642str(pObj->smaVer)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "nextColId", i642str(pObj->nextColId)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "watermark1", i642str(pObj->watermark[0])), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "watermark2", i642str(pObj->watermark[1])), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "maxdelay0", i642str(pObj->maxdelay[0])), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "maxdelay1", i642str(pObj->maxdelay[1])), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "ttl", i642str(pObj->ttl)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfFuncs", i642str(pObj->numOfFuncs)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "commentLen", i642str(pObj->commentLen)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "ast1Len", i642str(pObj->ast1Len)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "ast2Len", i642str(pObj->ast2Len)), pObj, &lino, _OVER); - (void)tjsonAddStringToObject(item, "numOfColumns", i642str(pObj->numOfColumns)); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfColumns", i642str(pObj->numOfColumns)), pObj, &lino, _OVER); SJson *columns = tjsonAddArrayToObject(item, "columns"); for (int32_t i = 0; i < pObj->numOfColumns; ++i) { SJson *column = tjsonCreateObject(); - (void)tjsonAddItemToArray(columns, column); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(columns, column), pObj, &lino, _OVER); SSchema *pColumn = &pObj->pColumns[i]; - (void)tjsonAddStringToObject(column, "type", i642str(pColumn->type)); - (void)tjsonAddStringToObject(column, "typestr", tDataTypes[pColumn->type].name); - (void)tjsonAddStringToObject(column, "flags", i642str(pColumn->flags)); - (void)tjsonAddStringToObject(column, "colId", i642str(pColumn->colId)); - (void)tjsonAddStringToObject(column, "bytes", i642str(pColumn->bytes)); - (void)tjsonAddStringToObject(column, "name", pColumn->name); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(column, "type", i642str(pColumn->type)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(column, "typestr", tDataTypes[pColumn->type].name), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(column, "flags", i642str(pColumn->flags)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(column, "colId", i642str(pColumn->colId)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(column, "bytes", i642str(pColumn->bytes)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(column, "name", pColumn->name), pObj, &lino, _OVER); } - (void)tjsonAddStringToObject(item, "numOfTags", i642str(pObj->numOfTags)); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfTags", i642str(pObj->numOfTags)), pObj, &lino, _OVER); SJson *tags = tjsonAddArrayToObject(item, "tags"); for (int32_t i = 0; i < pObj->numOfTags; ++i) { SJson *tag = tjsonCreateObject(); - (void)tjsonAddItemToArray(tags, tag); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(tags, tag), pObj, &lino, _OVER); SSchema *pTag = &pObj->pTags[i]; - (void)tjsonAddStringToObject(tag, "type", i642str(pTag->type)); - (void)tjsonAddStringToObject(tag, "typestr", tDataTypes[pTag->type].name); - (void)tjsonAddStringToObject(tag, "flags", i642str(pTag->flags)); - (void)tjsonAddStringToObject(tag, "colId", i642str(pTag->colId)); - (void)tjsonAddStringToObject(tag, "bytes", i642str(pTag->bytes)); - (void)tjsonAddStringToObject(tag, "name", pTag->name); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(tag, "type", i642str(pTag->type)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(tag, "typestr", tDataTypes[pTag->type].name), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(tag, "flags", i642str(pTag->flags)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(tag, "colId", i642str(pTag->colId)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(tag, "bytes", i642str(pTag->bytes)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(tag, "name", pTag->name), pObj, &lino, _OVER); } sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump stable info at line:%d since %s", lino, tstrerror(code)); } void dumpSma(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "smas"); @@ -215,32 +248,37 @@ void dumpSma(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "name", mndGetStbStr(pObj->name)); - (void)tjsonAddStringToObject(item, "stb", mndGetStbStr(pObj->stb)); - (void)tjsonAddStringToObject(item, "db", mndGetDbStr(pObj->db)); - (void)tjsonAddStringToObject(item, "dstTbName", mndGetStbStr(pObj->dstTbName)); - (void)tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)); - (void)tjsonAddStringToObject(item, "uid", i642str(pObj->uid)); - (void)tjsonAddStringToObject(item, "stbUid", i642str(pObj->stbUid)); - (void)tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)); - (void)tjsonAddStringToObject(item, "dstTbUid", i642str(pObj->dstTbUid)); - (void)tjsonAddStringToObject(item, "intervalUnit", i642str(pObj->intervalUnit)); - (void)tjsonAddStringToObject(item, "slidingUnit", i642str(pObj->slidingUnit)); - (void)tjsonAddStringToObject(item, "timezone", i642str(pObj->timezone)); - (void)tjsonAddStringToObject(item, "dstVgId", i642str(pObj->dstVgId)); - (void)tjsonAddStringToObject(item, "interval", i642str(pObj->interval)); - (void)tjsonAddStringToObject(item, "offset", i642str(pObj->offset)); - (void)tjsonAddStringToObject(item, "sliding", i642str(pObj->sliding)); - (void)tjsonAddStringToObject(item, "exprLen", i642str(pObj->exprLen)); - (void)tjsonAddStringToObject(item, "tagsFilterLen", i642str(pObj->tagsFilterLen)); - (void)tjsonAddStringToObject(item, "sqlLen", i642str(pObj->sqlLen)); - (void)tjsonAddStringToObject(item, "astLen", i642str(pObj->astLen)); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", mndGetStbStr(pObj->name)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "stb", mndGetStbStr(pObj->stb)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "db", mndGetDbStr(pObj->db)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dstTbName", mndGetStbStr(pObj->dstTbName)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "uid", i642str(pObj->uid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "stbUid", i642str(pObj->stbUid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dstTbUid", i642str(pObj->dstTbUid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "intervalUnit", i642str(pObj->intervalUnit)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "slidingUnit", i642str(pObj->slidingUnit)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "timezone", i642str(pObj->timezone)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dstVgId", i642str(pObj->dstVgId)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "interval", i642str(pObj->interval)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "offset", i642str(pObj->offset)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "sliding", i642str(pObj->sliding)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "exprLen", i642str(pObj->exprLen)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "tagsFilterLen", i642str(pObj->tagsFilterLen)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "sqlLen", i642str(pObj->sqlLen)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "astLen", i642str(pObj->astLen)), pObj, &lino, _OVER); sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump sma info at line:%d since %s", lino, tstrerror(code)); } void dumpVgroup(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "vgroups"); @@ -250,28 +288,33 @@ void dumpVgroup(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "vgId", i642str(pObj->vgId)); - (void)tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)); - (void)tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)); - (void)tjsonAddStringToObject(item, "version", i642str(pObj->version)); - (void)tjsonAddStringToObject(item, "hashBegin", i642str(pObj->hashBegin)); - (void)tjsonAddStringToObject(item, "hashEnd", i642str(pObj->hashEnd)); - (void)tjsonAddStringToObject(item, "db", mndGetDbStr(pObj->dbName)); - (void)tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)); - (void)tjsonAddStringToObject(item, "isTsma", i642str(pObj->isTsma)); - (void)tjsonAddStringToObject(item, "replica", i642str(pObj->replica)); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "vgId", i642str(pObj->vgId)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "version", i642str(pObj->version)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "hashBegin", i642str(pObj->hashBegin)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "hashEnd", i642str(pObj->hashEnd)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "db", mndGetDbStr(pObj->dbName)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "isTsma", i642str(pObj->isTsma)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "replica", i642str(pObj->replica)), pObj, &lino, _OVER); for (int32_t i = 0; i < pObj->replica; ++i) { SJson *replicas = tjsonAddArrayToObject(item, "replicas"); SJson *replica = tjsonCreateObject(); - (void)tjsonAddItemToArray(replicas, replica); - (void)tjsonAddStringToObject(replica, "dnodeId", i642str(pObj->vnodeGid[i].dnodeId)); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(replicas, replica), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(replica, "dnodeId", i642str(pObj->vnodeGid[i].dnodeId)), pObj, &lino, + _OVER); } sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump vgroup info at line:%d since %s", lino, tstrerror(code)); } void dumpTopic(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "topics"); @@ -281,28 +324,32 @@ void dumpTopic(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "name", mndGetDbStr(pObj->name)); - (void)tjsonAddStringToObject(item, "name", mndGetDbStr(pObj->db)); - (void)tjsonAddStringToObject(item, "createTime", i642str(pObj->createTime)); - (void)tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)); - (void)tjsonAddStringToObject(item, "uid", i642str(pObj->uid)); - (void)tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)); - (void)tjsonAddStringToObject(item, "version", i642str(pObj->version)); - (void)tjsonAddStringToObject(item, "subType", i642str(pObj->subType)); - (void)tjsonAddStringToObject(item, "withMeta", i642str(pObj->withMeta)); - (void)tjsonAddStringToObject(item, "stbUid", i642str(pObj->stbUid)); - (void)tjsonAddStringToObject(item, "stbName", mndGetStableStr(pObj->stbName)); - (void)tjsonAddStringToObject(item, "sqlLen", i642str(pObj->sqlLen)); - (void)tjsonAddStringToObject(item, "astLen", i642str(pObj->astLen)); - (void)tjsonAddStringToObject(item, "sqlLen", i642str(pObj->sqlLen)); - (void)tjsonAddStringToObject(item, "ntbUid", i642str(pObj->ntbUid)); - (void)tjsonAddStringToObject(item, "ctbStbUid", i642str(pObj->ctbStbUid)); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", mndGetDbStr(pObj->name)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", mndGetDbStr(pObj->db)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createTime", i642str(pObj->createTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "uid", i642str(pObj->uid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "version", i642str(pObj->version)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "subType", i642str(pObj->subType)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "withMeta", i642str(pObj->withMeta)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "stbUid", i642str(pObj->stbUid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "stbName", mndGetStableStr(pObj->stbName)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "sqlLen", i642str(pObj->sqlLen)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "astLen", i642str(pObj->astLen)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "sqlLen", i642str(pObj->sqlLen)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "ntbUid", i642str(pObj->ntbUid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "ctbStbUid", i642str(pObj->ctbStbUid)), pObj, &lino, _OVER); sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump topic info at line:%d since %s", lino, tstrerror(code)); } void dumpConsumer(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "consumers"); @@ -312,14 +359,18 @@ void dumpConsumer(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "consumerId", i642str(pObj->consumerId)); - (void)tjsonAddStringToObject(item, "cgroup", pObj->cgroup); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "consumerId", i642str(pObj->consumerId)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "cgroup", pObj->cgroup), pObj, &lino, _OVER); sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump consumer info at line:%d since %s", lino, tstrerror(code)); } void dumpSubscribe(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "subscribes"); @@ -329,16 +380,20 @@ void dumpSubscribe(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "key", pObj->key); - (void)tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)); - (void)tjsonAddStringToObject(item, "stbUid", i642str(pObj->stbUid)); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "key", pObj->key), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "stbUid", i642str(pObj->stbUid)), pObj, &lino, _OVER); sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump subscribe info at line:%d since %s", lino, tstrerror(code)); } void dumpStream(SSdb *pSdb, SJson *json) { - void *pIter = NULL; + int32_t code = 0; + int32_t lino = 0; + void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "streams"); while (1) { @@ -347,31 +402,38 @@ void dumpStream(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "name", mndGetDbStr(pObj->name)); - (void)tjsonAddStringToObject(item, "createTime", i642str(pObj->createTime)); - (void)tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)); - (void)tjsonAddStringToObject(item, "version", i642str(pObj->version)); - (void)tjsonAddStringToObject(item, "totalLevel", i642str(pObj->totalLevel)); - (void)tjsonAddStringToObject(item, "smaId", i642str(pObj->smaId)); - (void)tjsonAddStringToObject(item, "uid", i642str(pObj->uid)); - (void)tjsonAddStringToObject(item, "status", i642str(pObj->status)); - (void)tjsonAddStringToObject(item, "igExpired", i642str(pObj->conf.igExpired)); - (void)tjsonAddStringToObject(item, "trigger", i642str(pObj->conf.trigger)); - (void)tjsonAddStringToObject(item, "triggerParam", i642str(pObj->conf.triggerParam)); - (void)tjsonAddStringToObject(item, "watermark", i642str(pObj->conf.watermark)); - (void)tjsonAddStringToObject(item, "sourceDbUid", i642str(pObj->sourceDbUid)); - (void)tjsonAddStringToObject(item, "targetDbUid", i642str(pObj->targetDbUid)); - (void)tjsonAddStringToObject(item, "sourceDb", mndGetDbStr(pObj->sourceDb)); - (void)tjsonAddStringToObject(item, "targetDb", mndGetDbStr(pObj->targetDb)); - (void)tjsonAddStringToObject(item, "targetSTbName", mndGetStbStr(pObj->targetSTbName)); - (void)tjsonAddStringToObject(item, "targetStbUid", i642str(pObj->targetStbUid)); - (void)tjsonAddStringToObject(item, "fixedSinkVgId", i642str(pObj->fixedSinkVgId)); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", mndGetDbStr(pObj->name)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createTime", i642str(pObj->createTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "version", i642str(pObj->version)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "totalLevel", i642str(pObj->totalLevel)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "smaId", i642str(pObj->smaId)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "uid", i642str(pObj->uid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "status", i642str(pObj->status)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "igExpired", i642str(pObj->conf.igExpired)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "trigger", i642str(pObj->conf.trigger)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "triggerParam", i642str(pObj->conf.triggerParam)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "watermark", i642str(pObj->conf.watermark)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "sourceDbUid", i642str(pObj->sourceDbUid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "targetDbUid", i642str(pObj->targetDbUid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "sourceDb", mndGetDbStr(pObj->sourceDb)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "targetDb", mndGetDbStr(pObj->targetDb)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "targetSTbName", mndGetStbStr(pObj->targetSTbName)), pObj, &lino, + _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "targetStbUid", i642str(pObj->targetStbUid)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "fixedSinkVgId", i642str(pObj->fixedSinkVgId)), pObj, &lino, + _OVER); sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump stream info at line:%d since %s", lino, tstrerror(code)); } void dumpAcct(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "accts"); @@ -381,13 +443,15 @@ void dumpAcct(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "acct", pObj->acct); - (void)tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)); - (void)tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)); - (void)tjsonAddStringToObject(item, "acctId", i642str(pObj->acctId)); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "acct", pObj->acct), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "acctId", i642str(pObj->acctId)), pObj, &lino, _OVER); sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump acct info at line:%d since %s", lino, tstrerror(code)); } void dumpAuth(SSdb *pSdb, SJson *json) { @@ -395,6 +459,8 @@ void dumpAuth(SSdb *pSdb, SJson *json) { } void dumpUser(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "users"); @@ -404,21 +470,27 @@ void dumpUser(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "name", pObj->user); - (void)tjsonAddStringToObject(item, "acct", pObj->acct); - (void)tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)); - (void)tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)); - (void)tjsonAddStringToObject(item, "superUser", i642str(pObj->superUser)); - (void)tjsonAddStringToObject(item, "authVersion", i642str(pObj->authVersion)); - (void)tjsonAddStringToObject(item, "passVersion", i642str(pObj->passVersion)); - (void)tjsonAddStringToObject(item, "numOfReadDbs", i642str(taosHashGetSize(pObj->readDbs))); - (void)tjsonAddStringToObject(item, "numOfWriteDbs", i642str(taosHashGetSize(pObj->writeDbs))); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", pObj->user), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "acct", pObj->acct), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "superUser", i642str(pObj->superUser)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "authVersion", i642str(pObj->authVersion)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "passVersion", i642str(pObj->passVersion)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfReadDbs", i642str(taosHashGetSize(pObj->readDbs))), pObj, + &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfWriteDbs", i642str(taosHashGetSize(pObj->writeDbs))), pObj, + &lino, _OVER); sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump user info at line:%d since %s", lino, tstrerror(code)); } void dumpDnode(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "dnodes"); @@ -428,17 +500,21 @@ void dumpDnode(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "id", i642str(pObj->id)); - (void)tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)); - (void)tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)); - (void)tjsonAddStringToObject(item, "port", i642str(pObj->port)); - (void)tjsonAddStringToObject(item, "fqdn", pObj->fqdn); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "id", i642str(pObj->id)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "port", i642str(pObj->port)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "fqdn", pObj->fqdn), pObj, &lino, _OVER); sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump dnode info at line:%d since %s", lino, tstrerror(code)); } void dumpSnode(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "snodes"); @@ -448,15 +524,19 @@ void dumpSnode(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "id", i642str(pObj->id)); - (void)tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)); - (void)tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "id", i642str(pObj->id)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER); sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump snode info at line:%d since %s", lino, tstrerror(code)); } void dumpQnode(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "qnodes"); @@ -466,15 +546,19 @@ void dumpQnode(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "id", i642str(pObj->id)); - (void)tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)); - (void)tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "id", i642str(pObj->id)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER); sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump qnode info at line:%d since %s", lino, tstrerror(code)); } void dumpMnode(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "mnodes"); @@ -484,15 +568,20 @@ void dumpMnode(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "id", i642str(pObj->id)); - (void)tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)); - (void)tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "id", i642str(pObj->id)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER); sdbRelease(pSdb, pObj); } +_OVER: + if (code != 0) mError("failed to dump mnode info at line:%d since %s", lino, tstrerror(code)); } void dumpCluster(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; + void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "clusters"); @@ -502,16 +591,21 @@ void dumpCluster(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "id", i642str(pObj->id)); - (void)tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)); - (void)tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)); - (void)tjsonAddStringToObject(item, "name", pObj->name); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "id", i642str(pObj->id)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", pObj->name), pObj, &lino, _OVER); sdbRelease(pSdb, pObj); } + +_OVER: + if (code != 0) mError("failed to dump cluster info at line:%d since %s", lino, tstrerror(code)); } void dumpTrans(SSdb *pSdb, SJson *json) { + int32_t code = 0; + int32_t lino = 0; void *pIter = NULL; SJson *items = tjsonAddArrayToObject(json, "transactions"); @@ -521,53 +615,64 @@ void dumpTrans(SSdb *pSdb, SJson *json) { if (pIter == NULL) break; SJson *item = tjsonCreateObject(); - (void)tjsonAddItemToArray(items, item); - (void)tjsonAddStringToObject(item, "id", i642str(pObj->id)); - (void)tjsonAddStringToObject(item, "stage", i642str(pObj->stage)); - (void)tjsonAddStringToObject(item, "policy", i642str(pObj->policy)); - (void)tjsonAddStringToObject(item, "conflict", i642str(pObj->conflict)); - (void)tjsonAddStringToObject(item, "exec", i642str(pObj->exec)); - (void)tjsonAddStringToObject(item, "oper", i642str(pObj->oper)); - (void)tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)); - (void)tjsonAddStringToObject(item, "dbname", pObj->dbname); - (void)tjsonAddStringToObject(item, "stbname", pObj->stbname); - (void)tjsonAddStringToObject(item, "opername", pObj->opername); - (void)tjsonAddStringToObject(item, "commitLogNum", i642str(taosArrayGetSize(pObj->commitActions))); - (void)tjsonAddStringToObject(item, "redoActionNum", i642str(taosArrayGetSize(pObj->redoActions))); - (void)tjsonAddStringToObject(item, "undoActionNum", i642str(taosArrayGetSize(pObj->undoActions))); + RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "id", i642str(pObj->id)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "stage", i642str(pObj->stage)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "policy", i642str(pObj->policy)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "conflict", i642str(pObj->conflict)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "exec", i642str(pObj->exec)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "oper", i642str(pObj->oper)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dbname", pObj->dbname), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "stbname", pObj->stbname), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "opername", pObj->opername), pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "commitLogNum", i642str(taosArrayGetSize(pObj->commitActions))), + pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "redoActionNum", i642str(taosArrayGetSize(pObj->redoActions))), + pObj, &lino, _OVER); + RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "undoActionNum", i642str(taosArrayGetSize(pObj->undoActions))), + pObj, &lino, _OVER); sdbRelease(pSdb, pObj); } + +_OVER: + if (code != 0) mError("failed to dump trans info at line:%d since %s", lino, tstrerror(code)); } void dumpHeader(SSdb *pSdb, SJson *json) { - (void)tjsonAddStringToObject(json, "sver", i642str(1)); - (void)tjsonAddStringToObject(json, "applyIndex", i642str(pSdb->applyIndex)); - (void)tjsonAddStringToObject(json, "applyTerm", i642str(pSdb->applyTerm)); - (void)tjsonAddStringToObject(json, "applyConfig", i642str(pSdb->applyConfig)); + int32_t code = 0; + int32_t lino = 0; + TAOS_CHECK_GOTO(tjsonAddStringToObject(json, "sver", i642str(1)), &lino, _OVER); + TAOS_CHECK_GOTO(tjsonAddStringToObject(json, "applyIndex", i642str(pSdb->applyIndex)), &lino, _OVER); + TAOS_CHECK_GOTO(tjsonAddStringToObject(json, "applyTerm", i642str(pSdb->applyTerm)), &lino, _OVER); + TAOS_CHECK_GOTO(tjsonAddStringToObject(json, "applyConfig", i642str(pSdb->applyConfig)), &lino, _OVER); SJson *maxIdsJson = tjsonCreateObject(); - (void)tjsonAddItemToObject(json, "maxIds", maxIdsJson); + TAOS_CHECK_GOTO(tjsonAddItemToObject(json, "maxIds", maxIdsJson), &lino, _OVER); for (int32_t i = 0; i < SDB_MAX; ++i) { if(i == 5) continue; int64_t maxId = 0; if (i < SDB_MAX) { maxId = pSdb->maxId[i]; } - (void)tjsonAddStringToObject(maxIdsJson, sdbTableName(i), i642str(maxId)); + TAOS_CHECK_GOTO(tjsonAddStringToObject(maxIdsJson, sdbTableName(i), i642str(maxId)), &lino, _OVER); } SJson *tableVersJson = tjsonCreateObject(); - (void)tjsonAddItemToObject(json, "tableVers", tableVersJson); + TAOS_CHECK_GOTO(tjsonAddItemToObject(json, "tableVers", tableVersJson), &lino, _OVER); for (int32_t i = 0; i < SDB_MAX; ++i) { int64_t tableVer = 0; if (i < SDB_MAX) { tableVer = pSdb->tableVer[i]; } - (void)tjsonAddStringToObject(tableVersJson, sdbTableName(i), i642str(tableVer)); + TAOS_CHECK_GOTO(tjsonAddStringToObject(tableVersJson, sdbTableName(i), i642str(tableVer)), &lino, _OVER); } + +_OVER: + if (code != 0) mError("failed to dump sdb info at line:%d since %s", lino, tstrerror(code)); } -void mndDumpSdb() { +int32_t mndDumpSdb() { mInfo("start to dump sdb info to sdb.json"); char path[PATH_MAX * 2] = {0}; @@ -581,12 +686,12 @@ void mndDumpSdb() { msgCb.mgmt = (SMgmtWrapper *)(&msgCb); // hack tmsgSetDefault(&msgCb); - (void)walInit(NULL); - (void)syncInit(); + TAOS_CHECK_RETURN(walInit(NULL)); + TAOS_CHECK_RETURN(syncInit()); SMnodeOpt opt = {.msgCb = msgCb}; SMnode *pMnode = mndOpen(path, &opt); - if (pMnode == NULL) return; + if (pMnode == NULL) return -1; SSdb *pSdb = pMnode->pSdb; SJson *json = tjsonCreateObject(); @@ -616,21 +721,21 @@ void mndDumpSdb() { char file[] = "sdb.json"; TdFilePtr pFile = taosOpenFile(file, TD_FILE_CREATE | TD_FILE_WRITE | TD_FILE_TRUNC | TD_FILE_WRITE_THROUGH); if (pFile == NULL) { - terrno = terrno; mError("failed to write %s since %s", file, terrstr()); - return; + return terrno; } - (void)taosWriteFile(pFile, pCont, contLen); - (void)taosWriteFile(pFile, "\n", 1); - UNUSED(taosFsyncFile(pFile)); - (void)taosCloseFile(&pFile); + TAOS_CHECK_RETURN(taosWriteFile(pFile, pCont, contLen)); + TAOS_CHECK_RETURN(taosWriteFile(pFile, "\n", 1)); + TAOS_CHECK_RETURN(taosFsyncFile(pFile)); + TAOS_CHECK_RETURN(taosCloseFile(&pFile)); tjsonDelete(json); taosMemoryFree(pCont); mInfo("dump sdb info success"); + return 0; } -void mndDeleteTrans() { +int32_t mndDeleteTrans() { mInfo("start to dump sdb info to sdb.json"); char path[PATH_MAX * 2] = {0}; @@ -644,16 +749,18 @@ void mndDeleteTrans() { msgCb.mgmt = (SMgmtWrapper *)(&msgCb); // hack tmsgSetDefault(&msgCb); - (void)walInit(NULL); - (void)syncInit(); + TAOS_CHECK_RETURN(walInit(NULL)); + TAOS_CHECK_RETURN(syncInit()); SMnodeOpt opt = {.msgCb = msgCb}; SMnode *pMnode = mndOpen(path, &opt); - if (pMnode == NULL) return; + if (pMnode == NULL) return terrno; - (void)sdbWriteFileForDump(pMnode->pSdb); + TAOS_CHECK_RETURN(sdbWriteFileForDump(pMnode->pSdb)); mInfo("dump sdb info success"); + + return 0; } #pragma GCC diagnostic pop diff --git a/source/dnode/mnode/impl/src/mndIndex.c b/source/dnode/mnode/impl/src/mndIndex.c index 5ff577ae06..0b3a0998f0 100644 --- a/source/dnode/mnode/impl/src/mndIndex.c +++ b/source/dnode/mnode/impl/src/mndIndex.c @@ -133,7 +133,6 @@ int mndSetCreateIdxRedoActions(SMnode *pMnode, STrans *pTrans, SDbObj *pDb, SStb } static void *mndBuildDropIdxReq(SMnode *pMnode, SVgObj *pVgroup, SStbObj *pStbObj, SIdxObj *pIdx, int32_t *contLen) { int32_t len = 0; - int32_t ret = 0; SDropIndexReq req = {0}; memcpy(req.colName, pIdx->colName, sizeof(pIdx->colName)); @@ -159,7 +158,11 @@ static void *mndBuildDropIdxReq(SMnode *pMnode, SVgObj *pVgroup, SStbObj *pStbOb pHead->vgId = htonl(pVgroup->vgId); void *pBuf = POINTER_SHIFT(pHead, sizeof(SMsgHead)); - (void)tSerializeSDropIdxReq(pBuf, len - sizeof(SMsgHead), &req); + int32_t ret = 0; + if ((ret = tSerializeSDropIdxReq(pBuf, len - sizeof(SMsgHead), &req)) < 0) { + terrno = ret; + return NULL; + } *contLen = len; return pHead; _err: @@ -333,7 +336,7 @@ void mndReleaseIdx(SMnode *pMnode, SIdxObj *pIdx) { SDbObj *mndAcquireDbByIdx(SMnode *pMnode, const char *idxName) { SName name = {0}; - (void)tNameFromString(&name, idxName, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); + if ((terrno = tNameFromString(&name, idxName, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE)) < 0) return NULL; char db[TSDB_TABLE_FNAME_LEN] = {0}; (void)tNameGetFullDbName(&name, db); @@ -559,6 +562,8 @@ int32_t mndRetrieveTagIdx(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, i int32_t numOfRows = 0; SIdxObj *pIdx = NULL; int32_t cols = 0; + int32_t code = 0; + int32_t lino = 0; SDbObj *pDb = NULL; if (strlen(pShow->db) > 0) { @@ -578,7 +583,10 @@ int32_t mndRetrieveTagIdx(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, i cols = 0; SName idxName = {0}; - (void)tNameFromString(&idxName, pIdx->name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); + if ((code = tNameFromString(&idxName, pIdx->name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE)) != 0) { + sdbRelease(pSdb, pIdx); + goto _OVER; + } char n1[TSDB_TABLE_FNAME_LEN + VARSTR_HEADER_SIZE] = {0}; STR_TO_VARSTR(n1, (char *)tNameGetTableName(&idxName)); @@ -587,42 +595,49 @@ int32_t mndRetrieveTagIdx(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, i STR_TO_VARSTR(n2, (char *)mndGetDbStr(pIdx->db)); SName stbName = {0}; - (void)tNameFromString(&stbName, pIdx->stb, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); + if ((code = tNameFromString(&stbName, pIdx->stb, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE)) != 0) { + sdbRelease(pSdb, pIdx); + goto _OVER; + } char n3[TSDB_TABLE_FNAME_LEN + VARSTR_HEADER_SIZE] = {0}; STR_TO_VARSTR(n3, (char *)tNameGetTableName(&stbName)); SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)n1, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)n1, false), pIdx, &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)n2, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)n2, false), pIdx, &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)n3, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)n3, false), pIdx, &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, NULL, true); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, NULL, true), pIdx, &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pIdx->createdTime, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)&pIdx->createdTime, false), pIdx, &lino, + _OVER); char col[TSDB_TABLE_FNAME_LEN + VARSTR_HEADER_SIZE] = {0}; STR_TO_VARSTR(col, (char *)pIdx->colName); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)col, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)col, false), pIdx, &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); char tag[TSDB_TABLE_FNAME_LEN + VARSTR_HEADER_SIZE] = {0}; STR_TO_VARSTR(tag, (char *)"tag_index"); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)tag, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)tag, false), pIdx, &lino, _OVER); numOfRows++; sdbRelease(pSdb, pIdx); } +_OVER: + if (code != 0) mError("failed to retrieve at line:%d, since %s", lino, tstrerror(code)); + mndReleaseDb(pMnode, pDb); pShow->numOfRows += numOfRows; return numOfRows; diff --git a/source/dnode/mnode/impl/src/mndMain.c b/source/dnode/mnode/impl/src/mndMain.c index a0dd30f11a..6e1a745cfa 100644 --- a/source/dnode/mnode/impl/src/mndMain.c +++ b/source/dnode/mnode/impl/src/mndMain.c @@ -210,8 +210,11 @@ static void mndPullupGrant(SMnode *pMnode) { int32_t contLen = 0; void *pReq = mndBuildTimerMsg(&contLen); if (pReq != NULL) { - SRpcMsg rpcMsg = { - .msgType = TDMT_MND_GRANT_HB_TIMER, .pCont = pReq, .contLen = contLen, .info.ahandle = (void *)0x9527}; + SRpcMsg rpcMsg = {.msgType = TDMT_MND_GRANT_HB_TIMER, + .pCont = pReq, + .contLen = contLen, + .info.notFreeAhandle = 1, + .info.ahandle = (void *)0x9527}; // TODO check return value (void)tmsgPutToQueue(&pMnode->msgCb, WRITE_QUEUE, &rpcMsg); } @@ -222,8 +225,11 @@ static void mndIncreaseUpTime(SMnode *pMnode) { int32_t contLen = 0; void *pReq = mndBuildTimerMsg(&contLen); if (pReq != NULL) { - SRpcMsg rpcMsg = { - .msgType = TDMT_MND_UPTIME_TIMER, .pCont = pReq, .contLen = contLen, .info.ahandle = (void *)0x9528}; + SRpcMsg rpcMsg = {.msgType = TDMT_MND_UPTIME_TIMER, + .pCont = pReq, + .contLen = contLen, + .info.notFreeAhandle = 1, + .info.ahandle = (void *)0x9527}; // TODO check return value (void)tmsgPutToQueue(&pMnode->msgCb, WRITE_QUEUE, &rpcMsg); } diff --git a/source/dnode/mnode/impl/src/mndMnode.c b/source/dnode/mnode/impl/src/mndMnode.c index 0af0312b62..c00c88c4f9 100644 --- a/source/dnode/mnode/impl/src/mndMnode.c +++ b/source/dnode/mnode/impl/src/mndMnode.c @@ -14,10 +14,10 @@ */ #define _DEFAULT_SOURCE -#include "mndMnode.h" #include "audit.h" #include "mndCluster.h" #include "mndDnode.h" +#include "mndMnode.h" #include "mndPrivilege.h" #include "mndShow.h" #include "mndSync.h" @@ -114,7 +114,7 @@ static int32_t mndCreateDefaultMnode(SMnode *pMnode) { mndTransDrop(pTrans); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pRaw, SDB_STATUS_READY); + TAOS_CHECK_RETURN(sdbSetRawStatus(pRaw, SDB_STATUS_READY)); if ((code = mndTransPrepare(pMnode, pTrans)) != 0) { mError("trans:%d, failed to prepare since %s", pTrans->id, terrstr()); @@ -270,19 +270,21 @@ void mndGetMnodeEpSet(SMnode *pMnode, SEpSet *pEpSet) { } } if (pObj->pDnode != NULL) { - (void)addEpIntoEpSet(pEpSet, pObj->pDnode->fqdn, pObj->pDnode->port); + if (addEpIntoEpSet(pEpSet, pObj->pDnode->fqdn, pObj->pDnode->port) != 0) { + mError("mnode:%d, failed to add ep:%s:%d into epset", pObj->id, pObj->pDnode->fqdn, pObj->pDnode->port); + } + sdbRelease(pSdb, pObj); } - sdbRelease(pSdb, pObj); - } - if (pEpSet->numOfEps == 0) { - syncGetRetryEpSet(pMnode->syncMgmt.sync, pEpSet); - } + if (pEpSet->numOfEps == 0) { + syncGetRetryEpSet(pMnode->syncMgmt.sync, pEpSet); + } - if (pEpSet->inUse >= pEpSet->numOfEps) { - pEpSet->inUse = 0; + if (pEpSet->inUse >= pEpSet->numOfEps) { + pEpSet->inUse = 0; + } + epsetSort(pEpSet); } - epsetSort(pEpSet); } static int32_t mndSetCreateMnodeRedoLogs(SMnode *pMnode, STrans *pTrans, SMnodeObj *pObj) { @@ -341,7 +343,11 @@ static int32_t mndBuildCreateMnodeRedoAction(STrans *pTrans, SDCreateMnodeReq *p int32_t code = 0; int32_t contLen = tSerializeSDCreateMnodeReq(NULL, 0, pCreateReq); void *pReq = taosMemoryMalloc(contLen); - (void)tSerializeSDCreateMnodeReq(pReq, contLen, pCreateReq); + code = tSerializeSDCreateMnodeReq(pReq, contLen, pCreateReq); + if (code < 0) { + taosMemoryFree(pReq); + TAOS_RETURN(code); + } STransAction action = { .epSet = *pCreateEpSet, @@ -363,7 +369,11 @@ static int32_t mndBuildAlterMnodeTypeRedoAction(STrans *pTrans, SDAlterMnodeType int32_t code = 0; int32_t contLen = tSerializeSDCreateMnodeReq(NULL, 0, pAlterMnodeTypeReq); void *pReq = taosMemoryMalloc(contLen); - (void)tSerializeSDCreateMnodeReq(pReq, contLen, pAlterMnodeTypeReq); + code = tSerializeSDCreateMnodeReq(pReq, contLen, pAlterMnodeTypeReq); + if (code < 0) { + taosMemoryFree(pReq); + TAOS_RETURN(code); + } STransAction action = { .epSet = *pAlterMnodeTypeEpSet, @@ -385,8 +395,11 @@ static int32_t mndBuildAlterMnodeRedoAction(STrans *pTrans, SDCreateMnodeReq *pA int32_t code = 0; int32_t contLen = tSerializeSDCreateMnodeReq(NULL, 0, pAlterReq); void *pReq = taosMemoryMalloc(contLen); - (void)tSerializeSDCreateMnodeReq(pReq, contLen, pAlterReq); - + code = tSerializeSDCreateMnodeReq(pReq, contLen, pAlterReq); + if (code < 0) { + taosMemoryFree(pReq); + TAOS_RETURN(code); + } STransAction action = { .epSet = *pAlterEpSet, .pCont = pReq, @@ -407,7 +420,11 @@ static int32_t mndBuildDropMnodeRedoAction(STrans *pTrans, SDDropMnodeReq *pDrop int32_t code = 0; int32_t contLen = tSerializeSCreateDropMQSNodeReq(NULL, 0, pDropReq); void *pReq = taosMemoryMalloc(contLen); - (void)tSerializeSCreateDropMQSNodeReq(pReq, contLen, pDropReq); + code = tSerializeSCreateDropMQSNodeReq(pReq, contLen, pDropReq); + if (code < 0) { + taosMemoryFree(pReq); + TAOS_RETURN(code); + } STransAction action = { .epSet = *pDroprEpSet, @@ -868,6 +885,7 @@ static int32_t mndRetrieveMnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB ESdbStatus objStatus = 0; char *pWrite; int64_t curMs = taosGetTimestampMs(); + int code = 0; pSelfObj = sdbAcquire(pSdb, SDB_MNODE, &pMnode->selfDnodeId); if (pSelfObj == NULL) { @@ -881,13 +899,21 @@ static int32_t mndRetrieveMnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB cols = 0; SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pObj->id, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)&pObj->id, false); + if (code != 0) { + mError("mnode:%d, failed to set col data val since %s", pObj->id, terrstr()); + goto _out; + } char b1[TSDB_EP_LEN + VARSTR_HEADER_SIZE] = {0}; STR_WITH_MAXSIZE_TO_VARSTR(b1, pObj->pDnode->ep, TSDB_EP_LEN + VARSTR_HEADER_SIZE); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, b1, false); + code = colDataSetVal(pColInfo, numOfRows, b1, false); + if (code != 0) { + mError("mnode:%d, failed to set col data val since %s", pObj->id, terrstr()); + goto _out; + } char role[20] = "offline"; if (pObj->id == pMnode->selfDnodeId) { @@ -904,8 +930,11 @@ static int32_t mndRetrieveMnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB char b2[12 + VARSTR_HEADER_SIZE] = {0}; STR_WITH_MAXSIZE_TO_VARSTR(b2, role, pShow->pMeta->pSchemas[cols].bytes); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)b2, false); - + code = colDataSetVal(pColInfo, numOfRows, (const char *)b2, false); + if (code != 0) { + mError("mnode:%d, failed to set col data val since %s", pObj->id, terrstr()); + goto _out; + } const char *status = "ready"; if (objStatus == SDB_STATUS_CREATING) status = "creating"; if (objStatus == SDB_STATUS_DROPPING) status = "dropping"; @@ -913,14 +942,26 @@ static int32_t mndRetrieveMnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB char b3[9 + VARSTR_HEADER_SIZE] = {0}; STR_WITH_MAXSIZE_TO_VARSTR(b3, status, pShow->pMeta->pSchemas[cols].bytes); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)b3, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)b3, false); + if (code != 0) { + mError("mnode:%d, failed to set col data val since %s", pObj->id, terrstr()); + goto _out; + } pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pObj->createdTime, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)&pObj->createdTime, false); + if (code != 0) { + mError("mnode:%d, failed to set col data val since %s", pObj->id, terrstr()); + goto _out; + } int64_t roleTimeMs = (isDnodeOnline) ? pObj->roleTimeMs : 0; pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&roleTimeMs, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)&roleTimeMs, false); + if (code != 0) { + mError("mnode:%d, failed to set col data val since %s", pObj->id, terrstr()); + goto _out; + } numOfRows++; sdbRelease(pSdb, pObj); @@ -1005,6 +1046,7 @@ static void mndReloadSyncConfig(SMnode *pMnode) { void *pIter = NULL; int32_t updatingMnodes = 0; int32_t readyMnodes = 0; + int32_t code = 0; SSyncCfg cfg = { .myIndex = -1, .lastIndex = 0, @@ -1030,7 +1072,10 @@ static void mndReloadSyncConfig(SMnode *pMnode) { pNode->nodePort = pObj->pDnode->port; pNode->nodeRole = pObj->role; tstrncpy(pNode->nodeFqdn, pObj->pDnode->fqdn, TSDB_FQDN_LEN); - (void)tmsgUpdateDnodeInfo(&pNode->nodeId, &pNode->clusterId, pNode->nodeFqdn, &pNode->nodePort); + code = tmsgUpdateDnodeInfo(&pNode->nodeId, &pNode->clusterId, pNode->nodeFqdn, &pNode->nodePort); + if (code != 0) { + mError("mnode:%d, failed to update dnode info since %s", pObj->id, terrstr()); + } mInfo("vgId:1, ep:%s:%u dnode:%d", pNode->nodeFqdn, pNode->nodePort, pNode->nodeId); if (pObj->pDnode->id == pMnode->selfDnodeId) { cfg.myIndex = cfg.totalReplicaNum; diff --git a/source/dnode/mnode/impl/src/mndStream.c b/source/dnode/mnode/impl/src/mndStream.c index 511cc8f984..3ec99f6e44 100644 --- a/source/dnode/mnode/impl/src/mndStream.c +++ b/source/dnode/mnode/impl/src/mndStream.c @@ -62,9 +62,8 @@ static int32_t mndProcessStreamReqCheckpoint(SRpcMsg *pReq); static int32_t mndProcessCheckpointReport(SRpcMsg *pReq); static int32_t mndProcessConsensusInTmr(SRpcMsg *pMsg); static void doSendQuickRsp(SRpcHandleInfo *pInfo, int32_t msgSize, int32_t vgId, int32_t code); -static int32_t mndProcessDropOrphanTaskReq(SRpcMsg* pReq); -static int32_t mndFindChangedNodeInfo(SMnode *pMnode, const SArray *pPrevNodeList, const SArray *pNodeList, SVgroupChangeInfo* pInfo); -static void mndDestroyVgroupChangeInfo(SVgroupChangeInfo *pInfo); +static int32_t mndProcessDropOrphanTaskReq(SRpcMsg *pReq); +static void saveTaskAndNodeInfoIntoBuf(SStreamObj *pStream, SStreamExecInfo *pExecNode); static void addAllStreamTasksIntoBuf(SMnode *pMnode, SStreamExecInfo *pExecInfo); static void removeExpiredNodeInfo(const SArray *pNodeSnapshot); @@ -920,6 +919,85 @@ _OVER: return code; } +static int32_t mndProcessRestartStreamReq(SRpcMsg *pReq) { + SMnode *pMnode = pReq->info.node; + SStreamObj *pStream = NULL; + int32_t code = 0; + SMPauseStreamReq pauseReq = {0}; + + if (tDeserializeSMPauseStreamReq(pReq->pCont, pReq->contLen, &pauseReq) < 0) { + return TSDB_CODE_INVALID_MSG; + } + + code = mndAcquireStream(pMnode, pauseReq.name, &pStream); + if (pStream == NULL || code != 0) { + if (pauseReq.igNotExists) { + mInfo("stream:%s, not exist, not restart stream", pauseReq.name); + return 0; + } else { + mError("stream:%s not exist, failed to restart stream", pauseReq.name); + TAOS_RETURN(TSDB_CODE_MND_STREAM_NOT_EXIST); + } + } + + mInfo("stream:%s,%" PRId64 " start to restart stream", pauseReq.name, pStream->uid); + if ((code = mndCheckDbPrivilegeByName(pMnode, pReq->info.conn.user, MND_OPER_WRITE_DB, pStream->targetDb)) != 0) { + sdbRelease(pMnode->pSdb, pStream); + return code; + } + + // check if it is conflict with other trans in both sourceDb and targetDb. + code = mndStreamTransConflictCheck(pMnode, pStream->uid, MND_STREAM_RESTART_NAME, true); + if (code) { + sdbRelease(pMnode->pSdb, pStream); + return code; + } + + bool updated = mndStreamNodeIsUpdated(pMnode); + if (updated) { + mError("tasks are not ready for restart, node update detected"); + sdbRelease(pMnode->pSdb, pStream); + TAOS_RETURN(TSDB_CODE_STREAM_TASK_IVLD_STATUS); + } + + STrans *pTrans = NULL; + code = doCreateTrans(pMnode, pStream, pReq, TRN_CONFLICT_NOTHING, MND_STREAM_RESTART_NAME, "restart the stream", &pTrans); + if (pTrans == NULL || code) { + mError("stream:%s failed to pause stream since %s", pauseReq.name, tstrerror(code)); + sdbRelease(pMnode->pSdb, pStream); + return code; + } + + code = mndStreamRegisterTrans(pTrans, MND_STREAM_RESTART_NAME, pStream->uid); + if (code) { + sdbRelease(pMnode->pSdb, pStream); + mndTransDrop(pTrans); + return code; + } + + // if nodeUpdate happened, not send pause trans + code = mndStreamSetRestartAction(pMnode, pTrans, pStream); + if (code) { + mError("stream:%s, failed to restart task since %s", pauseReq.name, tstrerror(code)); + sdbRelease(pMnode->pSdb, pStream); + mndTransDrop(pTrans); + return code; + } + + code = mndTransPrepare(pMnode, pTrans); + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_ACTION_IN_PROGRESS) { + mError("trans:%d, failed to prepare restart stream trans since %s", pTrans->id, tstrerror(code)); + sdbRelease(pMnode->pSdb, pStream); + mndTransDrop(pTrans); + return code; + } + + sdbRelease(pMnode->pSdb, pStream); + mndTransDrop(pTrans); + + return TSDB_CODE_ACTION_IN_PROGRESS; +} + int64_t mndStreamGenChkptId(SMnode *pMnode, bool lock) { SStreamObj *pStream = NULL; void *pIter = NULL; @@ -973,82 +1051,6 @@ int64_t mndStreamGenChkptId(SMnode *pMnode, bool lock) { return maxChkptId + 1; } -static int32_t mndBuildStreamCheckpointSourceReq(void **pBuf, int32_t *pLen, int32_t nodeId, int64_t checkpointId, - int64_t streamId, int32_t taskId, int32_t transId, int8_t mndTrigger) { - SStreamCheckpointSourceReq req = {0}; - req.checkpointId = checkpointId; - req.nodeId = nodeId; - req.expireTime = -1; - req.streamId = streamId; // pTask->id.streamId; - req.taskId = taskId; // pTask->id.taskId; - req.transId = transId; - req.mndTrigger = mndTrigger; - - int32_t code; - int32_t blen; - - tEncodeSize(tEncodeStreamCheckpointSourceReq, &req, blen, code); - if (code < 0) { - TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY); - } - - int32_t tlen = sizeof(SMsgHead) + blen; - - void *buf = taosMemoryMalloc(tlen); - if (buf == NULL) { - return terrno; - } - - void *abuf = POINTER_SHIFT(buf, sizeof(SMsgHead)); - SEncoder encoder; - tEncoderInit(&encoder, abuf, tlen); - int32_t pos = tEncodeStreamCheckpointSourceReq(&encoder, &req); - if (pos == -1) { - tEncoderClear(&encoder); - return TSDB_CODE_INVALID_MSG; - } - - SMsgHead *pMsgHead = (SMsgHead *)buf; - pMsgHead->contLen = htonl(tlen); - pMsgHead->vgId = htonl(nodeId); - - tEncoderClear(&encoder); - - *pBuf = buf; - *pLen = tlen; - - return 0; -} - -static int32_t doSetCheckpointAction(SMnode *pMnode, STrans *pTrans, SStreamTask *pTask, int64_t checkpointId, - int8_t mndTrigger) { - void *buf; - int32_t tlen; - int32_t code = 0; - SEpSet epset = {0}; - bool hasEpset = false; - - if ((code = mndBuildStreamCheckpointSourceReq(&buf, &tlen, pTask->info.nodeId, checkpointId, pTask->id.streamId, - pTask->id.taskId, pTrans->id, mndTrigger)) < 0) { - taosMemoryFree(buf); - return code; - } - - code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); - if (code != TSDB_CODE_SUCCESS || !hasEpset) { - taosMemoryFree(buf); - return code; - } - - code = setTransAction(pTrans, buf, tlen, TDMT_VND_STREAM_CHECK_POINT_SOURCE, &epset, TSDB_CODE_SYN_PROPOSE_NOT_READY, - TSDB_CODE_VND_INVALID_VGROUP_ID); - if (code != 0) { - taosMemoryFree(buf); - } - - return code; -} - static int32_t mndProcessStreamCheckpointTrans(SMnode *pMnode, SStreamObj *pStream, int64_t checkpointId, int8_t mndTrigger, bool lock) { int32_t code = TSDB_CODE_SUCCESS; @@ -1096,7 +1098,7 @@ static int32_t mndProcessStreamCheckpointTrans(SMnode *pMnode, SStreamObj *pStre int32_t sz = taosArrayGetSize(pLevel); for (int32_t j = 0; j < sz; j++) { SStreamTask *pTask = taosArrayGetP(pLevel, j); - code = doSetCheckpointAction(pMnode, pTrans, pTask, checkpointId, mndTrigger); + code = mndStreamSetCheckpointAction(pMnode, pTrans, pTask, checkpointId, mndTrigger); if (code != TSDB_CODE_SUCCESS) { taosWUnLockLatch(&pStream->lock); @@ -1143,70 +1145,9 @@ int32_t extractStreamNodeList(SMnode *pMnode) { return taosArrayGetSize(execInfo.pNodeList); } -static int32_t doCheckForUpdated(SMnode *pMnode, SArray **ppNodeSnapshot) { - bool allReady = false; - bool nodeUpdated = false; - SVgroupChangeInfo changeInfo = {0}; - - int32_t numOfNodes = extractStreamNodeList(pMnode); - - if (numOfNodes == 0) { - mDebug("stream task node change checking done, no vgroups exist, do nothing"); - execInfo.ts = taosGetTimestampSec(); - return false; - } - - for (int32_t i = 0; i < numOfNodes; ++i) { - SNodeEntry *pNodeEntry = taosArrayGet(execInfo.pNodeList, i); - if (pNodeEntry == NULL) { - continue; - } - - if (pNodeEntry->stageUpdated) { - mDebug("stream task not ready due to node update detected, checkpoint not issued"); - return true; - } - } - - int32_t code = mndTakeVgroupSnapshot(pMnode, &allReady, ppNodeSnapshot); - if (code) { - mError("failed to get the vgroup snapshot, ignore it and continue"); - } - - if (!allReady) { - mWarn("not all vnodes ready, quit from vnodes status check"); - return true; - } - - code = mndFindChangedNodeInfo(pMnode, execInfo.pNodeList, *ppNodeSnapshot, &changeInfo); - if (code) { - nodeUpdated = false; - } else { - nodeUpdated = (taosArrayGetSize(changeInfo.pUpdateNodeList) > 0); - if (nodeUpdated) { - mDebug("stream tasks not ready due to node update"); - } - } - - mndDestroyVgroupChangeInfo(&changeInfo); - return nodeUpdated; -} - -// check if the node update happens or not -static bool taskNodeIsUpdated(SMnode *pMnode) { - SArray *pNodeSnapshot = NULL; - - streamMutexLock(&execInfo.lock); - bool updated = doCheckForUpdated(pMnode, &pNodeSnapshot); - streamMutexUnlock(&execInfo.lock); - - taosArrayDestroy(pNodeSnapshot); - return updated; -} - static int32_t mndCheckTaskAndNodeStatus(SMnode *pMnode) { bool ready = true; - if (taskNodeIsUpdated(pMnode)) { + if (mndStreamNodeIsUpdated(pMnode)) { TAOS_RETURN(TSDB_CODE_STREAM_TASK_IVLD_STATUS); } @@ -1605,32 +1546,6 @@ int32_t mndDropStreamByDb(SMnode *pMnode, STrans *pTrans, SDbObj *pDb) { return 0; } -int32_t mndGetNumOfStreams(SMnode *pMnode, char *dbName, int32_t *pNumOfStreams) { - SSdb *pSdb = pMnode->pSdb; - SDbObj *pDb = mndAcquireDb(pMnode, dbName); - if (pDb == NULL) { - TAOS_RETURN(TSDB_CODE_MND_DB_NOT_SELECTED); - } - - int32_t numOfStreams = 0; - void *pIter = NULL; - while (1) { - SStreamObj *pStream = NULL; - pIter = sdbFetch(pSdb, SDB_STREAM, pIter, (void **)&pStream); - if (pIter == NULL) break; - - if (pStream->sourceDbUid == pDb->uid) { - numOfStreams++; - } - - sdbRelease(pSdb, pStream); - } - - *pNumOfStreams = numOfStreams; - mndReleaseDb(pMnode, pDb); - return 0; -} - static int32_t mndRetrieveStream(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows) { SMnode *pMnode = pReq->info.node; SSdb *pSdb = pMnode->pSdb; @@ -1770,7 +1685,7 @@ static int32_t mndProcessPauseStreamReq(SRpcMsg *pReq) { TAOS_RETURN(code); } - bool updated = taskNodeIsUpdated(pMnode); + bool updated = mndStreamNodeIsUpdated(pMnode); if (updated) { mError("tasks are not ready for pause, node update detected"); sdbRelease(pMnode->pSdb, pStream); @@ -1965,102 +1880,6 @@ static int32_t mndProcessResumeStreamReq(SRpcMsg *pReq) { return TSDB_CODE_ACTION_IN_PROGRESS; } -static bool isNodeEpsetChanged(const SEpSet *pPrevEpset, const SEpSet *pCurrent) { - const SEp *pEp = GET_ACTIVE_EP(pPrevEpset); - const SEp *p = GET_ACTIVE_EP(pCurrent); - - if (pEp->port == p->port && strncmp(pEp->fqdn, p->fqdn, TSDB_FQDN_LEN) == 0) { - return false; - } - return true; -} - -// 1. increase the replica does not affect the stream process. -// 2. decreasing the replica may affect the stream task execution in the way that there is one or more running stream -// tasks on the will be removed replica. -// 3. vgroup redistribution is an combination operation of first increase replica and then decrease replica. So we -// will handle it as mentioned in 1 & 2 items. -static int32_t mndFindChangedNodeInfo(SMnode *pMnode, const SArray *pPrevNodeList, const SArray *pNodeList, - SVgroupChangeInfo *pInfo) { - int32_t code = 0; - int32_t lino = 0; - - if (pInfo == NULL) { - return TSDB_CODE_INVALID_PARA; - } - - pInfo->pUpdateNodeList = taosArrayInit(4, sizeof(SNodeUpdateInfo)), - pInfo->pDBMap = taosHashInit(32, taosGetDefaultHashFunction(TSDB_DATA_TYPE_VARCHAR), true, HASH_NO_LOCK); - - if (pInfo->pUpdateNodeList == NULL || pInfo->pDBMap == NULL) { - mndDestroyVgroupChangeInfo(pInfo); - TSDB_CHECK_NULL(NULL, code, lino, _err, terrno); - } - - int32_t numOfNodes = taosArrayGetSize(pPrevNodeList); - for (int32_t i = 0; i < numOfNodes; ++i) { - SNodeEntry *pPrevEntry = taosArrayGet(pPrevNodeList, i); - if (pPrevEntry == NULL) { - continue; - } - - int32_t num = taosArrayGetSize(pNodeList); - for (int32_t j = 0; j < num; ++j) { - SNodeEntry *pCurrent = taosArrayGet(pNodeList, j); - if(pCurrent == NULL) { - continue; - } - - if (pCurrent->nodeId == pPrevEntry->nodeId) { - if (pPrevEntry->stageUpdated || isNodeEpsetChanged(&pPrevEntry->epset, &pCurrent->epset)) { - const SEp *pPrevEp = GET_ACTIVE_EP(&pPrevEntry->epset); - - char buf[256] = {0}; - code = epsetToStr(&pCurrent->epset, buf, tListLen(buf)); // ignore this error - if (code) { - mError("failed to convert epset string, code:%s", tstrerror(code)); - TSDB_CHECK_CODE(code, lino, _err); - } - - mDebug("nodeId:%d restart/epset changed detected, old:%s:%d -> new:%s, stageUpdate:%d", pCurrent->nodeId, - pPrevEp->fqdn, pPrevEp->port, buf, pPrevEntry->stageUpdated); - - SNodeUpdateInfo updateInfo = {.nodeId = pPrevEntry->nodeId}; - epsetAssign(&updateInfo.prevEp, &pPrevEntry->epset); - epsetAssign(&updateInfo.newEp, &pCurrent->epset); - - void* p = taosArrayPush(pInfo->pUpdateNodeList, &updateInfo); - TSDB_CHECK_NULL(p, code, lino, _err, terrno); - } - - // todo handle the snode info - if (pCurrent->nodeId != SNODE_HANDLE) { - SVgObj *pVgroup = mndAcquireVgroup(pMnode, pCurrent->nodeId); - code = taosHashPut(pInfo->pDBMap, pVgroup->dbName, strlen(pVgroup->dbName), NULL, 0); - mndReleaseVgroup(pMnode, pVgroup); - TSDB_CHECK_CODE(code, lino, _err); - } - - break; - } - } - } - - return code; - - _err: - mError("failed to find node change info, code:%s at %s line:%d", tstrerror(code), __func__, lino); - mndDestroyVgroupChangeInfo(pInfo); - return code; -} - -static void mndDestroyVgroupChangeInfo(SVgroupChangeInfo* pInfo) { - if (pInfo != NULL) { - taosArrayDestroy(pInfo->pUpdateNodeList); - taosHashCleanup(pInfo->pDBMap); - } -} - static int32_t mndProcessVgroupChange(SMnode *pMnode, SVgroupChangeInfo *pChangeInfo, bool includeAllNodes) { SSdb *pSdb = pMnode->pSdb; SStreamObj *pStream = NULL; diff --git a/source/dnode/mnode/impl/src/mndStreamTrans.c b/source/dnode/mnode/impl/src/mndStreamTrans.c index 25a735e152..e5b4447a39 100644 --- a/source/dnode/mnode/impl/src/mndStreamTrans.c +++ b/source/dnode/mnode/impl/src/mndStreamTrans.c @@ -21,6 +21,10 @@ typedef struct SKeyInfo { int32_t keyLen; } SKeyInfo; +static bool identicalName(const char *pDb, const char *pParam, int32_t len) { + return (strlen(pDb) == len) && (strncmp(pDb, pParam, len) == 0); +} + int32_t mndStreamRegisterTrans(STrans *pTrans, const char *pTransName, int64_t streamId) { SStreamTransInfo info = { .transId = pTrans->id, .startTime = taosGetTimestampMs(), .name = pTransName, .streamId = streamId}; @@ -117,7 +121,8 @@ int32_t mndStreamTransConflictCheck(SMnode *pMnode, int64_t streamId, const char } if (strcmp(tInfo.name, MND_STREAM_CHECKPOINT_NAME) == 0) { - if ((strcmp(pTransName, MND_STREAM_DROP_NAME) != 0) && (strcmp(pTransName, MND_STREAM_TASK_RESET_NAME) != 0)) { + if ((strcmp(pTransName, MND_STREAM_DROP_NAME) != 0) && (strcmp(pTransName, MND_STREAM_TASK_RESET_NAME) != 0) && + (strcmp(pTransName, MND_STREAM_RESTART_NAME) != 0)) { mWarn("conflict with other transId:%d streamUid:0x%" PRIx64 ", trans:%s", tInfo.transId, tInfo.streamId, tInfo.name); return TSDB_CODE_MND_TRANS_CONFLICT; @@ -126,7 +131,8 @@ int32_t mndStreamTransConflictCheck(SMnode *pMnode, int64_t streamId, const char } } else if ((strcmp(tInfo.name, MND_STREAM_CREATE_NAME) == 0) || (strcmp(tInfo.name, MND_STREAM_DROP_NAME) == 0) || (strcmp(tInfo.name, MND_STREAM_TASK_RESET_NAME) == 0) || - strcmp(tInfo.name, MND_STREAM_TASK_UPDATE_NAME) == 0) { + (strcmp(tInfo.name, MND_STREAM_TASK_UPDATE_NAME) == 0) || + strcmp(tInfo.name, MND_STREAM_RESTART_NAME) == 0) { mWarn("conflict with other transId:%d streamUid:0x%" PRIx64 ", trans:%s", tInfo.transId, tInfo.streamId, tInfo.name); return TSDB_CODE_MND_TRANS_CONFLICT; @@ -282,10 +288,6 @@ int32_t setTransAction(STrans *pTrans, void *pCont, int32_t contLen, int32_t msg return mndTransAppendRedoAction(pTrans, &action); } -static bool identicalName(const char *pDb, const char *pParam, int32_t len) { - return (strlen(pDb) == len) && (strncmp(pDb, pParam, len) == 0); -} - int32_t doKillCheckpointTrans(SMnode *pMnode, const char *pDBName, size_t len) { void *pIter = NULL; diff --git a/source/dnode/mnode/impl/src/mndStreamTransAct.c b/source/dnode/mnode/impl/src/mndStreamTransAct.c new file mode 100644 index 0000000000..3ecd192222 --- /dev/null +++ b/source/dnode/mnode/impl/src/mndStreamTransAct.c @@ -0,0 +1,669 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#include "mndDb.h" +#include "mndStb.h" +#include "mndStream.h" +#include "mndTrans.h" +#include "mndVgroup.h" +#include "taoserror.h" +#include "tmisce.h" + +static int32_t doSetPauseAction(SMnode *pMnode, STrans *pTrans, SStreamTask *pTask) { + SVPauseStreamTaskReq *pReq = taosMemoryCalloc(1, sizeof(SVPauseStreamTaskReq)); + if (pReq == NULL) { + mError("failed to malloc in pause stream, size:%" PRIzu ", code:%s", sizeof(SVPauseStreamTaskReq), + tstrerror(TSDB_CODE_OUT_OF_MEMORY)); + // terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; + } + + pReq->head.vgId = htonl(pTask->info.nodeId); + pReq->taskId = pTask->id.taskId; + pReq->streamId = pTask->id.streamId; + + SEpSet epset = {0}; + bool hasEpset = false; + int32_t code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); + if (code != TSDB_CODE_SUCCESS || !hasEpset) { + terrno = code; + taosMemoryFree(pReq); + return code; + } + + char buf[256] = {0}; + code = epsetToStr(&epset, buf, tListLen(buf)); + if (code != 0) { // print error and continue + mError("failed to convert epset to str, code:%s", tstrerror(code)); + } + + mDebug("pause stream task in node:%d, epset:%s", pTask->info.nodeId, buf); + code = setTransAction(pTrans, pReq, sizeof(SVPauseStreamTaskReq), TDMT_STREAM_TASK_PAUSE, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); + if (code != 0) { + taosMemoryFree(pReq); + return code; + } + return 0; +} + +static int32_t doSetDropAction(SMnode *pMnode, STrans *pTrans, SStreamTask *pTask) { + SVDropStreamTaskReq *pReq = taosMemoryCalloc(1, sizeof(SVDropStreamTaskReq)); + if (pReq == NULL) { + // terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; + } + + pReq->head.vgId = htonl(pTask->info.nodeId); + pReq->taskId = pTask->id.taskId; + pReq->streamId = pTask->id.streamId; + + SEpSet epset = {0}; + bool hasEpset = false; + int32_t code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); + if (code != TSDB_CODE_SUCCESS || !hasEpset) { // no valid epset, return directly without redoAction + return code; + } + + // The epset of nodeId of this task may have been expired now, let's use the newest epset from mnode. + code = setTransAction(pTrans, pReq, sizeof(SVDropStreamTaskReq), TDMT_STREAM_TASK_DROP, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); + if (code != 0) { + taosMemoryFree(pReq); + return code; + } + + return 0; +} + +static int32_t doSetResumeAction(STrans *pTrans, SMnode *pMnode, SStreamTask *pTask, int8_t igUntreated) { + terrno = 0; + + SVResumeStreamTaskReq *pReq = taosMemoryCalloc(1, sizeof(SVResumeStreamTaskReq)); + if (pReq == NULL) { + mError("failed to malloc in resume stream, size:%" PRIzu ", code:%s", sizeof(SVResumeStreamTaskReq), + tstrerror(TSDB_CODE_OUT_OF_MEMORY)); + // terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; + } + + pReq->head.vgId = htonl(pTask->info.nodeId); + pReq->taskId = pTask->id.taskId; + pReq->streamId = pTask->id.streamId; + pReq->igUntreated = igUntreated; + + SEpSet epset = {0}; + bool hasEpset = false; + int32_t code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); + if (code != TSDB_CODE_SUCCESS || (!hasEpset)) { + terrno = code; + taosMemoryFree(pReq); + return terrno; + } + + code = setTransAction(pTrans, pReq, sizeof(SVResumeStreamTaskReq), TDMT_STREAM_TASK_RESUME, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); + if (code != 0) { + taosMemoryFree(pReq); + return terrno; + } + + mDebug("set the resume action for trans:%d", pTrans->id); + return 0; +} + +static int32_t doSetDropActionFromId(SMnode *pMnode, STrans *pTrans, SOrphanTask* pTask) { + SVDropStreamTaskReq *pReq = taosMemoryCalloc(1, sizeof(SVDropStreamTaskReq)); + if (pReq == NULL) { + // terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; + } + + pReq->head.vgId = htonl(pTask->nodeId); + pReq->taskId = pTask->taskId; + pReq->streamId = pTask->streamId; + + SEpSet epset = {0}; + bool hasEpset = false; + int32_t code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->taskId, pTask->nodeId); + if (code != TSDB_CODE_SUCCESS || (!hasEpset)) { // no valid epset, return directly without redoAction + taosMemoryFree(pReq); + return code; + } + + // The epset of nodeId of this task may have been expired now, let's use the newest epset from mnode. + code = setTransAction(pTrans, pReq, sizeof(SVDropStreamTaskReq), TDMT_STREAM_TASK_DROP, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); + if (code != 0) { + taosMemoryFree(pReq); + return code; + } + + return 0; +} + +static void initNodeUpdateMsg(SStreamTaskNodeUpdateMsg *pMsg, const SVgroupChangeInfo *pInfo, SStreamTaskId *pId, + int32_t transId) { + int32_t code = 0; + + pMsg->streamId = pId->streamId; + pMsg->taskId = pId->taskId; + pMsg->transId = transId; + pMsg->pNodeList = taosArrayInit(taosArrayGetSize(pInfo->pUpdateNodeList), sizeof(SNodeUpdateInfo)); + if (pMsg->pNodeList == NULL) { + mError("failed to prepare node list, code:%s", tstrerror(terrno)); + code = terrno; + } + + if (code == 0) { + void *p = taosArrayAddAll(pMsg->pNodeList, pInfo->pUpdateNodeList); + if (p == NULL) { + mError("failed to add update node list into nodeList"); + } + } +} + +static int32_t doBuildStreamTaskUpdateMsg(void **pBuf, int32_t *pLen, SVgroupChangeInfo *pInfo, int32_t nodeId, + SStreamTaskId *pId, int32_t transId) { + SStreamTaskNodeUpdateMsg req = {0}; + initNodeUpdateMsg(&req, pInfo, pId, transId); + + int32_t code = 0; + int32_t blen; + + tEncodeSize(tEncodeStreamTaskUpdateMsg, &req, blen, code); + if (code < 0) { + terrno = TSDB_CODE_OUT_OF_MEMORY; + taosArrayDestroy(req.pNodeList); + return terrno; + } + + int32_t tlen = sizeof(SMsgHead) + blen; + + void *buf = taosMemoryMalloc(tlen); + if (buf == NULL) { + taosArrayDestroy(req.pNodeList); + return terrno; + } + + void *abuf = POINTER_SHIFT(buf, sizeof(SMsgHead)); + SEncoder encoder; + tEncoderInit(&encoder, abuf, tlen); + code = tEncodeStreamTaskUpdateMsg(&encoder, &req); + if (code == -1) { + tEncoderClear(&encoder); + taosMemoryFree(buf); + taosArrayDestroy(req.pNodeList); + return code; + } + + SMsgHead *pMsgHead = (SMsgHead *)buf; + pMsgHead->contLen = htonl(tlen); + pMsgHead->vgId = htonl(nodeId); + + tEncoderClear(&encoder); + + *pBuf = buf; + *pLen = tlen; + + taosArrayDestroy(req.pNodeList); + return TSDB_CODE_SUCCESS; +} + +static int32_t doSetUpdateTaskAction(SMnode *pMnode, STrans *pTrans, SStreamTask *pTask, SVgroupChangeInfo *pInfo) { + void *pBuf = NULL; + int32_t len = 0; + SEpSet epset = {0}; + bool hasEpset = false; + + bool unusedRet = streamTaskUpdateEpsetInfo(pTask, pInfo->pUpdateNodeList); + int32_t code = doBuildStreamTaskUpdateMsg(&pBuf, &len, pInfo, pTask->info.nodeId, &pTask->id, pTrans->id); + if (code) { + mError("failed to build stream task epset update msg, code:%s", tstrerror(code)); + return code; + } + + code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); + if (code != TSDB_CODE_SUCCESS || !hasEpset) { + mError("failed to extract epset during create update epset, code:%s", tstrerror(code)); + return code; + } + + code = setTransAction(pTrans, pBuf, len, TDMT_VND_STREAM_TASK_UPDATE, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); + if (code != TSDB_CODE_SUCCESS) { + mError("failed to create update task epset trans, code:%s", tstrerror(code)); + taosMemoryFree(pBuf); + } + + return code; +} + +static int32_t doSetUpdateChkptAction(SMnode *pMnode, STrans *pTrans, SStreamTask *pTask) { + SVUpdateCheckpointInfoReq *pReq = taosMemoryCalloc(1, sizeof(SVUpdateCheckpointInfoReq)); + if (pReq == NULL) { + mError("failed to malloc in reset stream, size:%" PRIzu ", code:%s", sizeof(SVUpdateCheckpointInfoReq), + tstrerror(terrno)); + return terrno; + } + + pReq->head.vgId = htonl(pTask->info.nodeId); + pReq->taskId = pTask->id.taskId; + pReq->streamId = pTask->id.streamId; + + SChkptReportInfo *pStreamItem = (SChkptReportInfo*)taosHashGet(execInfo.pChkptStreams, &pTask->id.streamId, sizeof(pTask->id.streamId)); + if (pStreamItem == NULL) { + return TSDB_CODE_INVALID_PARA; + } + + int32_t size = taosArrayGetSize(pStreamItem->pTaskList); + for(int32_t i = 0; i < size; ++i) { + STaskChkptInfo* pInfo = taosArrayGet(pStreamItem->pTaskList, i); + if (pInfo == NULL) { + continue; + } + + if (pInfo->taskId == pTask->id.taskId) { + pReq->checkpointId = pInfo->checkpointId; + pReq->checkpointVer = pInfo->version; + pReq->checkpointTs = pInfo->ts; + pReq->dropRelHTask = pInfo->dropHTask; + pReq->transId = pInfo->transId; + pReq->hStreamId = pTask->hTaskInfo.id.streamId; + pReq->hTaskId = pTask->hTaskInfo.id.taskId; + } + } + + SEpSet epset = {0}; + bool hasEpset = false; + int32_t code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); + if (code != TSDB_CODE_SUCCESS || !hasEpset) { + taosMemoryFree(pReq); + return code; + } + + code = setTransAction(pTrans, pReq, sizeof(SVUpdateCheckpointInfoReq), TDMT_STREAM_TASK_UPDATE_CHKPT, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); + if (code != TSDB_CODE_SUCCESS) { + taosMemoryFree(pReq); + } + + return code; +} + +static int32_t doSetResetAction(SMnode *pMnode, STrans *pTrans, SStreamTask *pTask) { + SVResetStreamTaskReq *pReq = taosMemoryCalloc(1, sizeof(SVResetStreamTaskReq)); + if (pReq == NULL) { + mError("failed to malloc in reset stream, size:%" PRIzu ", code:%s", sizeof(SVResetStreamTaskReq), + tstrerror(terrno)); + return terrno; + } + + pReq->head.vgId = htonl(pTask->info.nodeId); + pReq->taskId = pTask->id.taskId; + pReq->streamId = pTask->id.streamId; + + SEpSet epset = {0}; + bool hasEpset = false; + int32_t code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); + if (code != TSDB_CODE_SUCCESS || !hasEpset) { + taosMemoryFree(pReq); + return code; + } + + code = setTransAction(pTrans, pReq, sizeof(SVResetStreamTaskReq), TDMT_VND_STREAM_TASK_RESET, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); + if (code != TSDB_CODE_SUCCESS) { + taosMemoryFree(pReq); + } + + return code; +} + +static int32_t mndBuildStreamCheckpointSourceReq(void **pBuf, int32_t *pLen, int32_t nodeId, int64_t checkpointId, + int64_t streamId, int32_t taskId, int32_t transId, int8_t mndTrigger) { + SStreamCheckpointSourceReq req = {0}; + req.checkpointId = checkpointId; + req.nodeId = nodeId; + req.expireTime = -1; + req.streamId = streamId; // pTask->id.streamId; + req.taskId = taskId; // pTask->id.taskId; + req.transId = transId; + req.mndTrigger = mndTrigger; + + int32_t code; + int32_t blen; + + tEncodeSize(tEncodeStreamCheckpointSourceReq, &req, blen, code); + if (code < 0) { + TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY); + } + + int32_t tlen = sizeof(SMsgHead) + blen; + + void *buf = taosMemoryMalloc(tlen); + if (buf == NULL) { + return terrno; + } + + void *abuf = POINTER_SHIFT(buf, sizeof(SMsgHead)); + SEncoder encoder; + tEncoderInit(&encoder, abuf, tlen); + int32_t pos = tEncodeStreamCheckpointSourceReq(&encoder, &req); + if (pos == -1) { + tEncoderClear(&encoder); + return TSDB_CODE_INVALID_MSG; + } + + SMsgHead *pMsgHead = (SMsgHead *)buf; + pMsgHead->contLen = htonl(tlen); + pMsgHead->vgId = htonl(nodeId); + + tEncoderClear(&encoder); + + *pBuf = buf; + *pLen = tlen; + + return 0; +} +int32_t mndStreamSetPauseAction(SMnode *pMnode, STrans *pTrans, SStreamObj *pStream) { + SStreamTaskIter *pIter = NULL; + + int32_t code = createStreamTaskIter(pStream, &pIter); + if (code) { + mError("failed to create stream task iter:%s", pStream->name); + return code; + } + + while (streamTaskIterNextTask(pIter)) { + SStreamTask *pTask = NULL; + code = streamTaskIterGetCurrent(pIter, &pTask); + if (code) { + destroyStreamTaskIter(pIter); + return code; + } + + code = doSetPauseAction(pMnode, pTrans, pTask); + if (code) { + destroyStreamTaskIter(pIter); + return code; + } + + if (atomic_load_8(&pTask->status.taskStatus) != TASK_STATUS__PAUSE) { + atomic_store_8(&pTask->status.statusBackup, pTask->status.taskStatus); + atomic_store_8(&pTask->status.taskStatus, TASK_STATUS__PAUSE); + } + } + + destroyStreamTaskIter(pIter); + return code; +} + +int32_t mndStreamSetDropAction(SMnode *pMnode, STrans *pTrans, SStreamObj *pStream) { + SStreamTaskIter *pIter = NULL; + + int32_t code = createStreamTaskIter(pStream, &pIter); + if (code) { + mError("failed to create stream task iter:%s", pStream->name); + return code; + } + + while(streamTaskIterNextTask(pIter)) { + SStreamTask *pTask = NULL; + code = streamTaskIterGetCurrent(pIter, &pTask); + if (code) { + destroyStreamTaskIter(pIter); + return code; + } + + code = doSetDropAction(pMnode, pTrans, pTask); + if (code) { + destroyStreamTaskIter(pIter); + return code; + } + } + destroyStreamTaskIter(pIter); + return 0; +} + +int32_t mndStreamSetResumeAction(STrans *pTrans, SMnode *pMnode, SStreamObj *pStream, int8_t igUntreated) { + SStreamTaskIter *pIter = NULL; + int32_t code = createStreamTaskIter(pStream, &pIter); + if (code) { + mError("failed to create stream task iter:%s", pStream->name); + return code; + } + + while (streamTaskIterNextTask(pIter)) { + SStreamTask *pTask = NULL; + code = streamTaskIterGetCurrent(pIter, &pTask); + if (code || pTask == NULL) { + destroyStreamTaskIter(pIter); + return code; + } + + code = doSetResumeAction(pTrans, pMnode, pTask, igUntreated); + if (code) { + destroyStreamTaskIter(pIter); + return code; + } + + if (atomic_load_8(&pTask->status.taskStatus) == TASK_STATUS__PAUSE) { + atomic_store_8(&pTask->status.taskStatus, pTask->status.statusBackup); + } + } + destroyStreamTaskIter(pIter); + return 0; +} + +// build trans to update the epset +int32_t mndStreamSetUpdateEpsetAction(SMnode *pMnode, SStreamObj *pStream, SVgroupChangeInfo *pInfo, STrans *pTrans) { + mDebug("stream:0x%" PRIx64 " set tasks epset update action", pStream->uid); + SStreamTaskIter *pIter = NULL; + + taosWLockLatch(&pStream->lock); + int32_t code = createStreamTaskIter(pStream, &pIter); + if (code) { + taosWUnLockLatch(&pStream->lock); + mError("failed to create stream task iter:%s", pStream->name); + return code; + } + + while (streamTaskIterNextTask(pIter)) { + SStreamTask *pTask = NULL; + code = streamTaskIterGetCurrent(pIter, &pTask); + if (code) { + destroyStreamTaskIter(pIter); + taosWUnLockLatch(&pStream->lock); + return code; + } + + code = doSetUpdateTaskAction(pMnode, pTrans, pTask, pInfo); + if (code != TSDB_CODE_SUCCESS) { + destroyStreamTaskIter(pIter); + taosWUnLockLatch(&pStream->lock); + return code; + } + } + + destroyStreamTaskIter(pIter); + taosWUnLockLatch(&pStream->lock); + return 0; +} + +int32_t mndStreamSetUpdateChkptAction(SMnode *pMnode, STrans *pTrans, SStreamObj *pStream) { + SStreamTaskIter *pIter = NULL; + + taosWLockLatch(&pStream->lock); + int32_t code = createStreamTaskIter(pStream, &pIter); + if (code) { + taosWUnLockLatch(&pStream->lock); + mError("failed to create stream task iter:%s", pStream->name); + return code; + } + + while (streamTaskIterNextTask(pIter)) { + SStreamTask *pTask = NULL; + code = streamTaskIterGetCurrent(pIter, &pTask); + if (code) { + destroyStreamTaskIter(pIter); + taosWUnLockLatch(&pStream->lock); + return code; + } + + code = doSetUpdateChkptAction(pMnode, pTrans, pTask); + if (code != TSDB_CODE_SUCCESS) { + destroyStreamTaskIter(pIter); + taosWUnLockLatch(&pStream->lock); + return code; + } + } + + destroyStreamTaskIter(pIter); + taosWUnLockLatch(&pStream->lock); + return code; +} + +int32_t mndStreamSetDropActionFromList(SMnode *pMnode, STrans *pTrans, SArray* pList) { + for(int32_t i = 0; i < taosArrayGetSize(pList); ++i) { + SOrphanTask* pTask = taosArrayGet(pList, i); + if (pTask == NULL) { + return terrno; + } + + int32_t code = doSetDropActionFromId(pMnode, pTrans, pTask); + if (code != 0) { + return code; + } else { + mDebug("add drop task:0x%x action to drop orphan task", pTask->taskId); + } + } + return 0; +} + +int32_t mndStreamSetResetTaskAction(SMnode *pMnode, STrans *pTrans, SStreamObj *pStream) { + SStreamTaskIter *pIter = NULL; + + taosWLockLatch(&pStream->lock); + int32_t code = createStreamTaskIter(pStream, &pIter); + if (code) { + taosWUnLockLatch(&pStream->lock); + mError("failed to create stream task iter:%s", pStream->name); + return code; + } + + while (streamTaskIterNextTask(pIter)) { + SStreamTask *pTask = NULL; + code = streamTaskIterGetCurrent(pIter, &pTask); + if (code) { + destroyStreamTaskIter(pIter); + taosWUnLockLatch(&pStream->lock); + return code; + } + + code = doSetResetAction(pMnode, pTrans, pTask); + if (code != TSDB_CODE_SUCCESS) { + destroyStreamTaskIter(pIter); + taosWUnLockLatch(&pStream->lock); + return code; + } + } + + destroyStreamTaskIter(pIter); + taosWUnLockLatch(&pStream->lock); + return 0; +} + +int32_t mndStreamSetChkptIdAction(SMnode *pMnode, STrans *pTrans, SStreamTask* pTask, int64_t checkpointId, int64_t ts) { + SRestoreCheckpointInfo req = { + .taskId = pTask->id.taskId, + .streamId = pTask->id.streamId, + .checkpointId = checkpointId, + .startTs = ts, + .nodeId = pTask->info.nodeId, + .transId = pTrans->id, + }; + + int32_t code = 0; + int32_t blen; + tEncodeSize(tEncodeRestoreCheckpointInfo, &req, blen, code); + if (code < 0) { + return terrno; + } + + int32_t tlen = sizeof(SMsgHead) + blen; + + void *pBuf = taosMemoryMalloc(tlen); + if (pBuf == NULL) { + return terrno; + } + + void *abuf = POINTER_SHIFT(pBuf, sizeof(SMsgHead)); + SEncoder encoder; + tEncoderInit(&encoder, abuf, tlen); + code = tEncodeRestoreCheckpointInfo(&encoder, &req); + tEncoderClear(&encoder); + if (code == -1) { + taosMemoryFree(pBuf); + return code; + } + + SMsgHead *pMsgHead = (SMsgHead *)pBuf; + pMsgHead->contLen = htonl(tlen); + pMsgHead->vgId = htonl(pTask->info.nodeId); + + SEpSet epset = {0}; + bool hasEpset = false; + code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); + if (code != TSDB_CODE_SUCCESS || !hasEpset) { + taosMemoryFree(pBuf); + return code; + } + + code = setTransAction(pTrans, pBuf, tlen, TDMT_STREAM_CONSEN_CHKPT, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); + if (code != TSDB_CODE_SUCCESS) { + taosMemoryFree(pBuf); + } + + return code; +} + + +int32_t mndStreamSetCheckpointAction(SMnode *pMnode, STrans *pTrans, SStreamTask *pTask, int64_t checkpointId, + int8_t mndTrigger) { + void *buf; + int32_t tlen; + int32_t code = 0; + SEpSet epset = {0}; + bool hasEpset = false; + + if ((code = mndBuildStreamCheckpointSourceReq(&buf, &tlen, pTask->info.nodeId, checkpointId, pTask->id.streamId, + pTask->id.taskId, pTrans->id, mndTrigger)) < 0) { + taosMemoryFree(buf); + return code; + } + + code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); + if (code != TSDB_CODE_SUCCESS || !hasEpset) { + taosMemoryFree(buf); + return code; + } + + code = setTransAction(pTrans, buf, tlen, TDMT_VND_STREAM_CHECK_POINT_SOURCE, &epset, TSDB_CODE_SYN_PROPOSE_NOT_READY, + TSDB_CODE_VND_INVALID_VGROUP_ID); + if (code != 0) { + taosMemoryFree(buf); + } + + return code; +} + +int32_t mndStreamSetRestartAction(SMnode* pMnode, STrans *pTrans, SStreamObj* pStream) { + return 0; +} + diff --git a/source/dnode/mnode/impl/src/mndStreamUtil.c b/source/dnode/mnode/impl/src/mndStreamUtil.c index 5d8ba02781..6e48c58b30 100644 --- a/source/dnode/mnode/impl/src/mndStreamUtil.c +++ b/source/dnode/mnode/impl/src/mndStreamUtil.c @@ -304,41 +304,6 @@ int32_t extractNodeEpset(SMnode *pMnode, SEpSet *pEpSet, bool *hasEpset, int32_t } } -static int32_t doSetResumeAction(STrans *pTrans, SMnode *pMnode, SStreamTask *pTask, int8_t igUntreated) { - terrno = 0; - - SVResumeStreamTaskReq *pReq = taosMemoryCalloc(1, sizeof(SVResumeStreamTaskReq)); - if (pReq == NULL) { - mError("failed to malloc in resume stream, size:%" PRIzu ", code:%s", sizeof(SVResumeStreamTaskReq), - tstrerror(TSDB_CODE_OUT_OF_MEMORY)); - // terrno = TSDB_CODE_OUT_OF_MEMORY; - return terrno; - } - - pReq->head.vgId = htonl(pTask->info.nodeId); - pReq->taskId = pTask->id.taskId; - pReq->streamId = pTask->id.streamId; - pReq->igUntreated = igUntreated; - - SEpSet epset = {0}; - bool hasEpset = false; - int32_t code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); - if (code != TSDB_CODE_SUCCESS || (!hasEpset)) { - terrno = code; - taosMemoryFree(pReq); - return terrno; - } - - code = setTransAction(pTrans, pReq, sizeof(SVResumeStreamTaskReq), TDMT_STREAM_TASK_RESUME, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); - if (code != 0) { - taosMemoryFree(pReq); - return terrno; - } - - mDebug("set the resume action for trans:%d", pTrans->id); - return 0; -} - int32_t mndGetStreamTask(STaskId *pId, SStreamObj *pStream, SStreamTask **pTask) { *pTask = NULL; @@ -377,396 +342,29 @@ int32_t mndGetNumOfStreamTasks(const SStreamObj *pStream) { return num; } -int32_t mndStreamSetResumeAction(STrans *pTrans, SMnode *pMnode, SStreamObj *pStream, int8_t igUntreated) { - SStreamTaskIter *pIter = NULL; - int32_t code = createStreamTaskIter(pStream, &pIter); - if (code) { - mError("failed to create stream task iter:%s", pStream->name); - return code; +int32_t mndGetNumOfStreams(SMnode *pMnode, char *dbName, int32_t *pNumOfStreams) { + SSdb *pSdb = pMnode->pSdb; + SDbObj *pDb = mndAcquireDb(pMnode, dbName); + if (pDb == NULL) { + TAOS_RETURN(TSDB_CODE_MND_DB_NOT_SELECTED); } - while (streamTaskIterNextTask(pIter)) { - SStreamTask *pTask = NULL; - code = streamTaskIterGetCurrent(pIter, &pTask); - if (code || pTask == NULL) { - destroyStreamTaskIter(pIter); - return code; + int32_t numOfStreams = 0; + void *pIter = NULL; + while (1) { + SStreamObj *pStream = NULL; + pIter = sdbFetch(pSdb, SDB_STREAM, pIter, (void **)&pStream); + if (pIter == NULL) break; + + if (pStream->sourceDbUid == pDb->uid) { + numOfStreams++; } - code = doSetResumeAction(pTrans, pMnode, pTask, igUntreated); - if (code) { - destroyStreamTaskIter(pIter); - return code; - } - - if (atomic_load_8(&pTask->status.taskStatus) == TASK_STATUS__PAUSE) { - atomic_store_8(&pTask->status.taskStatus, pTask->status.statusBackup); - } - } - destroyStreamTaskIter(pIter); - return 0; -} - -static int32_t doSetPauseAction(SMnode *pMnode, STrans *pTrans, SStreamTask *pTask) { - SVPauseStreamTaskReq *pReq = taosMemoryCalloc(1, sizeof(SVPauseStreamTaskReq)); - if (pReq == NULL) { - mError("failed to malloc in pause stream, size:%" PRIzu ", code:%s", sizeof(SVPauseStreamTaskReq), - tstrerror(TSDB_CODE_OUT_OF_MEMORY)); - // terrno = TSDB_CODE_OUT_OF_MEMORY; - return terrno; + sdbRelease(pSdb, pStream); } - pReq->head.vgId = htonl(pTask->info.nodeId); - pReq->taskId = pTask->id.taskId; - pReq->streamId = pTask->id.streamId; - - SEpSet epset = {0}; - bool hasEpset = false; - int32_t code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); - if (code != TSDB_CODE_SUCCESS || !hasEpset) { - terrno = code; - taosMemoryFree(pReq); - return code; - } - - char buf[256] = {0}; - code = epsetToStr(&epset, buf, tListLen(buf)); - if (code != 0) { // print error and continue - mError("failed to convert epset to str, code:%s", tstrerror(code)); - } - - mDebug("pause stream task in node:%d, epset:%s", pTask->info.nodeId, buf); - code = setTransAction(pTrans, pReq, sizeof(SVPauseStreamTaskReq), TDMT_STREAM_TASK_PAUSE, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); - if (code != 0) { - taosMemoryFree(pReq); - return code; - } - return 0; -} - -int32_t mndStreamSetPauseAction(SMnode *pMnode, STrans *pTrans, SStreamObj *pStream) { - SStreamTaskIter *pIter = NULL; - - int32_t code = createStreamTaskIter(pStream, &pIter); - if (code) { - mError("failed to create stream task iter:%s", pStream->name); - return code; - } - - while (streamTaskIterNextTask(pIter)) { - SStreamTask *pTask = NULL; - code = streamTaskIterGetCurrent(pIter, &pTask); - if (code) { - destroyStreamTaskIter(pIter); - return code; - } - - code = doSetPauseAction(pMnode, pTrans, pTask); - if (code) { - destroyStreamTaskIter(pIter); - return code; - } - - if (atomic_load_8(&pTask->status.taskStatus) != TASK_STATUS__PAUSE) { - atomic_store_8(&pTask->status.statusBackup, pTask->status.taskStatus); - atomic_store_8(&pTask->status.taskStatus, TASK_STATUS__PAUSE); - } - } - - destroyStreamTaskIter(pIter); - return code; -} - -static int32_t doSetDropAction(SMnode *pMnode, STrans *pTrans, SStreamTask *pTask) { - SVDropStreamTaskReq *pReq = taosMemoryCalloc(1, sizeof(SVDropStreamTaskReq)); - if (pReq == NULL) { - // terrno = TSDB_CODE_OUT_OF_MEMORY; - return terrno; - } - - pReq->head.vgId = htonl(pTask->info.nodeId); - pReq->taskId = pTask->id.taskId; - pReq->streamId = pTask->id.streamId; - - SEpSet epset = {0}; - bool hasEpset = false; - int32_t code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); - if (code != TSDB_CODE_SUCCESS || !hasEpset) { // no valid epset, return directly without redoAction - return code; - } - - // The epset of nodeId of this task may have been expired now, let's use the newest epset from mnode. - code = setTransAction(pTrans, pReq, sizeof(SVDropStreamTaskReq), TDMT_STREAM_TASK_DROP, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); - if (code != 0) { - taosMemoryFree(pReq); - return code; - } - - return 0; -} - -int32_t mndStreamSetDropAction(SMnode *pMnode, STrans *pTrans, SStreamObj *pStream) { - SStreamTaskIter *pIter = NULL; - - int32_t code = createStreamTaskIter(pStream, &pIter); - if (code) { - mError("failed to create stream task iter:%s", pStream->name); - return code; - } - - while(streamTaskIterNextTask(pIter)) { - SStreamTask *pTask = NULL; - code = streamTaskIterGetCurrent(pIter, &pTask); - if (code) { - destroyStreamTaskIter(pIter); - return code; - } - - code = doSetDropAction(pMnode, pTrans, pTask); - if (code) { - destroyStreamTaskIter(pIter); - return code; - } - } - destroyStreamTaskIter(pIter); - return 0; -} - -static int32_t doSetDropActionFromId(SMnode *pMnode, STrans *pTrans, SOrphanTask* pTask) { - SVDropStreamTaskReq *pReq = taosMemoryCalloc(1, sizeof(SVDropStreamTaskReq)); - if (pReq == NULL) { - // terrno = TSDB_CODE_OUT_OF_MEMORY; - return terrno; - } - - pReq->head.vgId = htonl(pTask->nodeId); - pReq->taskId = pTask->taskId; - pReq->streamId = pTask->streamId; - - SEpSet epset = {0}; - bool hasEpset = false; - int32_t code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->taskId, pTask->nodeId); - if (code != TSDB_CODE_SUCCESS || (!hasEpset)) { // no valid epset, return directly without redoAction - taosMemoryFree(pReq); - return code; - } - - // The epset of nodeId of this task may have been expired now, let's use the newest epset from mnode. - code = setTransAction(pTrans, pReq, sizeof(SVDropStreamTaskReq), TDMT_STREAM_TASK_DROP, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); - if (code != 0) { - taosMemoryFree(pReq); - return code; - } - - return 0; -} - -int32_t mndStreamSetDropActionFromList(SMnode *pMnode, STrans *pTrans, SArray* pList) { - for(int32_t i = 0; i < taosArrayGetSize(pList); ++i) { - SOrphanTask* pTask = taosArrayGet(pList, i); - if (pTask == NULL) { - return terrno; - } - - int32_t code = doSetDropActionFromId(pMnode, pTrans, pTask); - if (code != 0) { - return code; - } else { - mDebug("add drop task:0x%x action to drop orphan task", pTask->taskId); - } - } - return 0; -} - -static void initNodeUpdateMsg(SStreamTaskNodeUpdateMsg *pMsg, const SVgroupChangeInfo *pInfo, SStreamTaskId *pId, - int32_t transId) { - int32_t code = 0; - - pMsg->streamId = pId->streamId; - pMsg->taskId = pId->taskId; - pMsg->transId = transId; - pMsg->pNodeList = taosArrayInit(taosArrayGetSize(pInfo->pUpdateNodeList), sizeof(SNodeUpdateInfo)); - if (pMsg->pNodeList == NULL) { - mError("failed to prepare node list, code:%s", tstrerror(terrno)); - code = terrno; - } - - if (code == 0) { - void *p = taosArrayAddAll(pMsg->pNodeList, pInfo->pUpdateNodeList); - if (p == NULL) { - mError("failed to add update node list into nodeList"); - } - } -} - -static int32_t doBuildStreamTaskUpdateMsg(void **pBuf, int32_t *pLen, SVgroupChangeInfo *pInfo, int32_t nodeId, - SStreamTaskId *pId, int32_t transId) { - SStreamTaskNodeUpdateMsg req = {0}; - initNodeUpdateMsg(&req, pInfo, pId, transId); - - int32_t code = 0; - int32_t blen; - - tEncodeSize(tEncodeStreamTaskUpdateMsg, &req, blen, code); - if (code < 0) { - terrno = TSDB_CODE_OUT_OF_MEMORY; - taosArrayDestroy(req.pNodeList); - return terrno; - } - - int32_t tlen = sizeof(SMsgHead) + blen; - - void *buf = taosMemoryMalloc(tlen); - if (buf == NULL) { - taosArrayDestroy(req.pNodeList); - return terrno; - } - - void *abuf = POINTER_SHIFT(buf, sizeof(SMsgHead)); - SEncoder encoder; - tEncoderInit(&encoder, abuf, tlen); - code = tEncodeStreamTaskUpdateMsg(&encoder, &req); - if (code == -1) { - tEncoderClear(&encoder); - taosMemoryFree(buf); - taosArrayDestroy(req.pNodeList); - return code; - } - - SMsgHead *pMsgHead = (SMsgHead *)buf; - pMsgHead->contLen = htonl(tlen); - pMsgHead->vgId = htonl(nodeId); - - tEncoderClear(&encoder); - - *pBuf = buf; - *pLen = tlen; - - taosArrayDestroy(req.pNodeList); - return TSDB_CODE_SUCCESS; -} - -static int32_t doSetUpdateTaskAction(SMnode *pMnode, STrans *pTrans, SStreamTask *pTask, SVgroupChangeInfo *pInfo) { - void *pBuf = NULL; - int32_t len = 0; - SEpSet epset = {0}; - bool hasEpset = false; - - bool unusedRet = streamTaskUpdateEpsetInfo(pTask, pInfo->pUpdateNodeList); - int32_t code = doBuildStreamTaskUpdateMsg(&pBuf, &len, pInfo, pTask->info.nodeId, &pTask->id, pTrans->id); - if (code) { - mError("failed to build stream task epset update msg, code:%s", tstrerror(code)); - return code; - } - - code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); - if (code != TSDB_CODE_SUCCESS || !hasEpset) { - mError("failed to extract epset during create update epset, code:%s", tstrerror(code)); - return code; - } - - code = setTransAction(pTrans, pBuf, len, TDMT_VND_STREAM_TASK_UPDATE, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); - if (code != TSDB_CODE_SUCCESS) { - mError("failed to create update task epset trans, code:%s", tstrerror(code)); - taosMemoryFree(pBuf); - } - - return code; -} - -// build trans to update the epset -int32_t mndStreamSetUpdateEpsetAction(SMnode *pMnode, SStreamObj *pStream, SVgroupChangeInfo *pInfo, STrans *pTrans) { - mDebug("stream:0x%" PRIx64 " set tasks epset update action", pStream->uid); - SStreamTaskIter *pIter = NULL; - - taosWLockLatch(&pStream->lock); - int32_t code = createStreamTaskIter(pStream, &pIter); - if (code) { - taosWUnLockLatch(&pStream->lock); - mError("failed to create stream task iter:%s", pStream->name); - return code; - } - - while (streamTaskIterNextTask(pIter)) { - SStreamTask *pTask = NULL; - code = streamTaskIterGetCurrent(pIter, &pTask); - if (code) { - destroyStreamTaskIter(pIter); - taosWUnLockLatch(&pStream->lock); - return code; - } - - code = doSetUpdateTaskAction(pMnode, pTrans, pTask, pInfo); - if (code != TSDB_CODE_SUCCESS) { - destroyStreamTaskIter(pIter); - taosWUnLockLatch(&pStream->lock); - return code; - } - } - - destroyStreamTaskIter(pIter); - taosWUnLockLatch(&pStream->lock); - return 0; -} - -static int32_t doSetResetAction(SMnode *pMnode, STrans *pTrans, SStreamTask *pTask) { - SVResetStreamTaskReq *pReq = taosMemoryCalloc(1, sizeof(SVResetStreamTaskReq)); - if (pReq == NULL) { - mError("failed to malloc in reset stream, size:%" PRIzu ", code:%s", sizeof(SVResetStreamTaskReq), - tstrerror(terrno)); - return terrno; - } - - pReq->head.vgId = htonl(pTask->info.nodeId); - pReq->taskId = pTask->id.taskId; - pReq->streamId = pTask->id.streamId; - - SEpSet epset = {0}; - bool hasEpset = false; - int32_t code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); - if (code != TSDB_CODE_SUCCESS || !hasEpset) { - taosMemoryFree(pReq); - return code; - } - - code = setTransAction(pTrans, pReq, sizeof(SVResetStreamTaskReq), TDMT_VND_STREAM_TASK_RESET, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); - if (code != TSDB_CODE_SUCCESS) { - taosMemoryFree(pReq); - } - - return code; -} - -int32_t mndStreamSetResetTaskAction(SMnode *pMnode, STrans *pTrans, SStreamObj *pStream) { - SStreamTaskIter *pIter = NULL; - - taosWLockLatch(&pStream->lock); - int32_t code = createStreamTaskIter(pStream, &pIter); - if (code) { - taosWUnLockLatch(&pStream->lock); - mError("failed to create stream task iter:%s", pStream->name); - return code; - } - - while (streamTaskIterNextTask(pIter)) { - SStreamTask *pTask = NULL; - code = streamTaskIterGetCurrent(pIter, &pTask); - if (code) { - destroyStreamTaskIter(pIter); - taosWUnLockLatch(&pStream->lock); - return code; - } - - code = doSetResetAction(pMnode, pTrans, pTask); - if (code != TSDB_CODE_SUCCESS) { - destroyStreamTaskIter(pIter); - taosWUnLockLatch(&pStream->lock); - return code; - } - } - - destroyStreamTaskIter(pIter); - taosWUnLockLatch(&pStream->lock); + *pNumOfStreams = numOfStreams; + mndReleaseDb(pMnode, pDb); return 0; } @@ -1000,90 +598,6 @@ int32_t removeExpiredNodeEntryAndTaskInBuf(SArray *pNodeSnapshot) { return 0; } -static int32_t doSetUpdateChkptAction(SMnode *pMnode, STrans *pTrans, SStreamTask *pTask) { - SVUpdateCheckpointInfoReq *pReq = taosMemoryCalloc(1, sizeof(SVUpdateCheckpointInfoReq)); - if (pReq == NULL) { - mError("failed to malloc in reset stream, size:%" PRIzu ", code:%s", sizeof(SVUpdateCheckpointInfoReq), - tstrerror(terrno)); - return terrno; - } - - pReq->head.vgId = htonl(pTask->info.nodeId); - pReq->taskId = pTask->id.taskId; - pReq->streamId = pTask->id.streamId; - - SChkptReportInfo *pStreamItem = (SChkptReportInfo*)taosHashGet(execInfo.pChkptStreams, &pTask->id.streamId, sizeof(pTask->id.streamId)); - if (pStreamItem == NULL) { - return TSDB_CODE_INVALID_PARA; - } - - int32_t size = taosArrayGetSize(pStreamItem->pTaskList); - for(int32_t i = 0; i < size; ++i) { - STaskChkptInfo* pInfo = taosArrayGet(pStreamItem->pTaskList, i); - if (pInfo == NULL) { - continue; - } - - if (pInfo->taskId == pTask->id.taskId) { - pReq->checkpointId = pInfo->checkpointId; - pReq->checkpointVer = pInfo->version; - pReq->checkpointTs = pInfo->ts; - pReq->dropRelHTask = pInfo->dropHTask; - pReq->transId = pInfo->transId; - pReq->hStreamId = pTask->hTaskInfo.id.streamId; - pReq->hTaskId = pTask->hTaskInfo.id.taskId; - } - } - - SEpSet epset = {0}; - bool hasEpset = false; - int32_t code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); - if (code != TSDB_CODE_SUCCESS || !hasEpset) { - taosMemoryFree(pReq); - return code; - } - - code = setTransAction(pTrans, pReq, sizeof(SVUpdateCheckpointInfoReq), TDMT_STREAM_TASK_UPDATE_CHKPT, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); - if (code != TSDB_CODE_SUCCESS) { - taosMemoryFree(pReq); - } - - return code; -} - -int32_t mndStreamSetUpdateChkptAction(SMnode *pMnode, STrans *pTrans, SStreamObj *pStream) { - SStreamTaskIter *pIter = NULL; - - taosWLockLatch(&pStream->lock); - int32_t code = createStreamTaskIter(pStream, &pIter); - if (code) { - taosWUnLockLatch(&pStream->lock); - mError("failed to create stream task iter:%s", pStream->name); - return code; - } - - while (streamTaskIterNextTask(pIter)) { - SStreamTask *pTask = NULL; - code = streamTaskIterGetCurrent(pIter, &pTask); - if (code) { - destroyStreamTaskIter(pIter); - taosWUnLockLatch(&pStream->lock); - return code; - } - - code = doSetUpdateChkptAction(pMnode, pTrans, pTask); - if (code != TSDB_CODE_SUCCESS) { - destroyStreamTaskIter(pIter); - taosWUnLockLatch(&pStream->lock); - return code; - } - } - - destroyStreamTaskIter(pIter); - taosWUnLockLatch(&pStream->lock); - return code; -} - int32_t mndScanCheckpointReportInfo(SRpcMsg *pReq) { SMnode *pMnode = pReq->info.node; void *pIter = NULL; @@ -1172,60 +686,6 @@ int32_t mndScanCheckpointReportInfo(SRpcMsg *pReq) { return TSDB_CODE_SUCCESS; } -static int32_t mndStreamSetChkptIdAction(SMnode *pMnode, STrans *pTrans, SStreamTask* pTask, int64_t checkpointId, int64_t ts) { - SRestoreCheckpointInfo req = { - .taskId = pTask->id.taskId, - .streamId = pTask->id.streamId, - .checkpointId = checkpointId, - .startTs = ts, - .nodeId = pTask->info.nodeId, - .transId = pTrans->id, - }; - - int32_t code = 0; - int32_t blen; - tEncodeSize(tEncodeRestoreCheckpointInfo, &req, blen, code); - if (code < 0) { - return terrno; - } - - int32_t tlen = sizeof(SMsgHead) + blen; - - void *pBuf = taosMemoryMalloc(tlen); - if (pBuf == NULL) { - return terrno; - } - - void *abuf = POINTER_SHIFT(pBuf, sizeof(SMsgHead)); - SEncoder encoder; - tEncoderInit(&encoder, abuf, tlen); - code = tEncodeRestoreCheckpointInfo(&encoder, &req); - tEncoderClear(&encoder); - if (code == -1) { - taosMemoryFree(pBuf); - return code; - } - - SMsgHead *pMsgHead = (SMsgHead *)pBuf; - pMsgHead->contLen = htonl(tlen); - pMsgHead->vgId = htonl(pTask->info.nodeId); - - SEpSet epset = {0}; - bool hasEpset = false; - code = extractNodeEpset(pMnode, &epset, &hasEpset, pTask->id.taskId, pTask->info.nodeId); - if (code != TSDB_CODE_SUCCESS || !hasEpset) { - taosMemoryFree(pBuf); - return code; - } - - code = setTransAction(pTrans, pBuf, tlen, TDMT_STREAM_CONSEN_CHKPT, &epset, 0, TSDB_CODE_VND_INVALID_VGROUP_ID); - if (code != TSDB_CODE_SUCCESS) { - taosMemoryFree(pBuf); - } - - return code; -} - int32_t mndCreateSetConsensusChkptIdTrans(SMnode *pMnode, SStreamObj *pStream, int32_t taskId, int64_t checkpointId, int64_t ts) { char msg[128] = {0}; @@ -1880,6 +1340,163 @@ int32_t setTaskAttrInResBlock(SStreamObj *pStream, SStreamTask *pTask, SSDataBlo return code; } +static bool isNodeEpsetChanged(const SEpSet *pPrevEpset, const SEpSet *pCurrent) { + const SEp *pEp = GET_ACTIVE_EP(pPrevEpset); + const SEp *p = GET_ACTIVE_EP(pCurrent); + + if (pEp->port == p->port && strncmp(pEp->fqdn, p->fqdn, TSDB_FQDN_LEN) == 0) { + return false; + } + return true; +} + +void mndDestroyVgroupChangeInfo(SVgroupChangeInfo* pInfo) { + if (pInfo != NULL) { + taosArrayDestroy(pInfo->pUpdateNodeList); + taosHashCleanup(pInfo->pDBMap); + } +} + +// 1. increase the replica does not affect the stream process. +// 2. decreasing the replica may affect the stream task execution in the way that there is one or more running stream +// tasks on the will be removed replica. +// 3. vgroup redistribution is an combination operation of first increase replica and then decrease replica. So we +// will handle it as mentioned in 1 & 2 items. +int32_t mndFindChangedNodeInfo(SMnode *pMnode, const SArray *pPrevNodeList, const SArray *pNodeList, + SVgroupChangeInfo *pInfo) { + int32_t code = 0; + int32_t lino = 0; + + if (pInfo == NULL) { + return TSDB_CODE_INVALID_PARA; + } + + pInfo->pUpdateNodeList = taosArrayInit(4, sizeof(SNodeUpdateInfo)), + pInfo->pDBMap = taosHashInit(32, taosGetDefaultHashFunction(TSDB_DATA_TYPE_VARCHAR), true, HASH_NO_LOCK); + + if (pInfo->pUpdateNodeList == NULL || pInfo->pDBMap == NULL) { + mndDestroyVgroupChangeInfo(pInfo); + TSDB_CHECK_NULL(NULL, code, lino, _err, terrno); + } + + int32_t numOfNodes = taosArrayGetSize(pPrevNodeList); + for (int32_t i = 0; i < numOfNodes; ++i) { + SNodeEntry *pPrevEntry = taosArrayGet(pPrevNodeList, i); + if (pPrevEntry == NULL) { + continue; + } + + int32_t num = taosArrayGetSize(pNodeList); + for (int32_t j = 0; j < num; ++j) { + SNodeEntry *pCurrent = taosArrayGet(pNodeList, j); + if(pCurrent == NULL) { + continue; + } + + if (pCurrent->nodeId == pPrevEntry->nodeId) { + if (pPrevEntry->stageUpdated || isNodeEpsetChanged(&pPrevEntry->epset, &pCurrent->epset)) { + const SEp *pPrevEp = GET_ACTIVE_EP(&pPrevEntry->epset); + + char buf[256] = {0}; + code = epsetToStr(&pCurrent->epset, buf, tListLen(buf)); // ignore this error + if (code) { + mError("failed to convert epset string, code:%s", tstrerror(code)); + TSDB_CHECK_CODE(code, lino, _err); + } + + mDebug("nodeId:%d restart/epset changed detected, old:%s:%d -> new:%s, stageUpdate:%d", pCurrent->nodeId, + pPrevEp->fqdn, pPrevEp->port, buf, pPrevEntry->stageUpdated); + + SNodeUpdateInfo updateInfo = {.nodeId = pPrevEntry->nodeId}; + epsetAssign(&updateInfo.prevEp, &pPrevEntry->epset); + epsetAssign(&updateInfo.newEp, &pCurrent->epset); + + void* p = taosArrayPush(pInfo->pUpdateNodeList, &updateInfo); + TSDB_CHECK_NULL(p, code, lino, _err, terrno); + } + + // todo handle the snode info + if (pCurrent->nodeId != SNODE_HANDLE) { + SVgObj *pVgroup = mndAcquireVgroup(pMnode, pCurrent->nodeId); + code = taosHashPut(pInfo->pDBMap, pVgroup->dbName, strlen(pVgroup->dbName), NULL, 0); + mndReleaseVgroup(pMnode, pVgroup); + TSDB_CHECK_CODE(code, lino, _err); + } + + break; + } + } + } + + return code; + + _err: + mError("failed to find node change info, code:%s at %s line:%d", tstrerror(code), __func__, lino); + mndDestroyVgroupChangeInfo(pInfo); + return code; + } + +static int32_t doCheckForUpdated(SMnode *pMnode, SArray **ppNodeSnapshot) { + bool allReady = false; + bool nodeUpdated = false; + SVgroupChangeInfo changeInfo = {0}; + + int32_t numOfNodes = extractStreamNodeList(pMnode); + + if (numOfNodes == 0) { + mDebug("stream task node change checking done, no vgroups exist, do nothing"); + execInfo.ts = taosGetTimestampSec(); + return false; + } + + for (int32_t i = 0; i < numOfNodes; ++i) { + SNodeEntry *pNodeEntry = taosArrayGet(execInfo.pNodeList, i); + if (pNodeEntry == NULL) { + continue; + } + + if (pNodeEntry->stageUpdated) { + mDebug("stream task not ready due to node update detected, checkpoint not issued"); + return true; + } + } + + int32_t code = mndTakeVgroupSnapshot(pMnode, &allReady, ppNodeSnapshot); + if (code) { + mError("failed to get the vgroup snapshot, ignore it and continue"); + } + + if (!allReady) { + mWarn("not all vnodes ready, quit from vnodes status check"); + return true; + } + + code = mndFindChangedNodeInfo(pMnode, execInfo.pNodeList, *ppNodeSnapshot, &changeInfo); + if (code) { + nodeUpdated = false; + } else { + nodeUpdated = (taosArrayGetSize(changeInfo.pUpdateNodeList) > 0); + if (nodeUpdated) { + mDebug("stream tasks not ready due to node update"); + } + } + + mndDestroyVgroupChangeInfo(&changeInfo); + return nodeUpdated; +} + +// check if the node update happens or not +bool mndStreamNodeIsUpdated(SMnode *pMnode) { + SArray *pNodeSnapshot = NULL; + + streamMutexLock(&execInfo.lock); + bool updated = doCheckForUpdated(pMnode, &pNodeSnapshot); + streamMutexUnlock(&execInfo.lock); + + taosArrayDestroy(pNodeSnapshot); + return updated; +} + uint32_t seed = 0; static SRpcMsg createRpcMsg(STransAction* pAction, int64_t traceId, int64_t signature) { SRpcMsg rpcMsg = {.msgType = pAction->msgType, .contLen = pAction->contLen, .info.ahandle = (void *)signature}; diff --git a/source/dnode/mnode/impl/src/mndSubscribe.c b/source/dnode/mnode/impl/src/mndSubscribe.c index 37a711da41..93d8b6dcde 100644 --- a/source/dnode/mnode/impl/src/mndSubscribe.c +++ b/source/dnode/mnode/impl/src/mndSubscribe.c @@ -113,6 +113,7 @@ static int32_t mndBuildSubChangeReq(void **pBuf, int32_t *pLen, SMqSubscribeObj MND_TMQ_RETURN_CHECK(qSubPlanToString(pPlan, &req.qmsg, &msgLen)); } else { req.qmsg = taosStrdup(""); + MND_TMQ_NULL_CHECK(req.qmsg); } req.subType = pSub->subType; req.withMeta = pSub->withMeta; diff --git a/source/dnode/mnode/impl/src/mndTopic.c b/source/dnode/mnode/impl/src/mndTopic.c index 78aca0dbee..643bab568f 100644 --- a/source/dnode/mnode/impl/src/mndTopic.c +++ b/source/dnode/mnode/impl/src/mndTopic.c @@ -451,12 +451,14 @@ static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq * topicObj.dbUid = pDb->uid; topicObj.version = 1; topicObj.sql = taosStrdup(pCreate->sql); + MND_TMQ_NULL_CHECK(topicObj.sql); topicObj.sqlLen = strlen(pCreate->sql) + 1; topicObj.subType = pCreate->subType; topicObj.withMeta = pCreate->withMeta; if (pCreate->subType == TOPIC_SUB_TYPE__COLUMN) { topicObj.ast = taosStrdup(pCreate->ast); + MND_TMQ_NULL_CHECK(topicObj.ast); topicObj.astLen = strlen(pCreate->ast) + 1; qDebugL("topic:%s ast %s", topicObj.name, topicObj.ast); MND_TMQ_RETURN_CHECK(nodesStringToNode(pCreate->ast, &pAst)); @@ -482,6 +484,7 @@ static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq * if(pCreate->ast != NULL){ qDebugL("topic:%s ast %s", topicObj.name, pCreate->ast); topicObj.ast = taosStrdup(pCreate->ast); + MND_TMQ_NULL_CHECK(topicObj.ast); topicObj.astLen = strlen(pCreate->ast) + 1; } } diff --git a/source/dnode/mnode/impl/src/mndTrans.c b/source/dnode/mnode/impl/src/mndTrans.c index cc880aa4de..347f38193f 100644 --- a/source/dnode/mnode/impl/src/mndTrans.c +++ b/source/dnode/mnode/impl/src/mndTrans.c @@ -795,7 +795,7 @@ static int32_t mndTransSync(SMnode *pMnode, STrans *pTrans) { mError("trans:%d, failed to encode while sync trans since %s", pTrans->id, tstrerror(code)); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pRaw, SDB_STATUS_READY); + TAOS_CHECK_RETURN(sdbSetRawStatus(pRaw, SDB_STATUS_READY)); mInfo("trans:%d, sync to other mnodes, stage:%s createTime:%" PRId64, pTrans->id, mndTransStr(pTrans->stage), pTrans->createdTime); @@ -1778,7 +1778,7 @@ static bool mndTransPerformFinishStage(SMnode *pMnode, STrans *pTrans, bool topH mError("trans:%d, failed to encode while finish trans since %s", pTrans->id, terrstr()); return false; } - (void)sdbSetRawStatus(pRaw, SDB_STATUS_DROPPED); + TAOS_CHECK_RETURN(sdbSetRawStatus(pRaw, SDB_STATUS_DROPPED)); int32_t code = sdbWrite(pMnode->pSdb, pRaw); if (code != 0) { @@ -1943,6 +1943,8 @@ static int32_t mndRetrieveTrans(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl int32_t numOfRows = 0; STrans *pTrans = NULL; int32_t cols = 0; + int32_t code = 0; + int32_t lino = 0; while (numOfRows < rows) { pShow->pIter = sdbFetch(pSdb, SDB_TRANS, pShow->pIter, (void **)&pTrans); @@ -1951,36 +1953,39 @@ static int32_t mndRetrieveTrans(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl cols = 0; SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pTrans->id, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)&pTrans->id, false), pTrans, &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pTrans->createdTime, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)&pTrans->createdTime, false), pTrans, &lino, + _OVER); char stage[TSDB_TRANS_STAGE_LEN + VARSTR_HEADER_SIZE] = {0}; STR_WITH_MAXSIZE_TO_VARSTR(stage, mndTransStr(pTrans->stage), pShow->pMeta->pSchemas[cols].bytes); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)stage, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)stage, false), pTrans, &lino, _OVER); char opername[TSDB_TRANS_OPER_LEN + VARSTR_HEADER_SIZE] = {0}; STR_WITH_MAXSIZE_TO_VARSTR(opername, pTrans->opername, pShow->pMeta->pSchemas[cols].bytes); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)opername, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)opername, false), pTrans, &lino, _OVER); char dbname[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0}; STR_WITH_MAXSIZE_TO_VARSTR(dbname, mndGetDbStr(pTrans->dbname), pShow->pMeta->pSchemas[cols].bytes); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)dbname, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)dbname, false), pTrans, &lino, _OVER); char stbname[TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE] = {0}; STR_WITH_MAXSIZE_TO_VARSTR(stbname, mndGetDbStr(pTrans->stbname), pShow->pMeta->pSchemas[cols].bytes); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)stbname, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)stbname, false), pTrans, &lino, _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pTrans->failedTimes, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)&pTrans->failedTimes, false), pTrans, &lino, + _OVER); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pTrans->lastExecTime, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)&pTrans->lastExecTime, false), pTrans, &lino, + _OVER); char lastInfo[TSDB_TRANS_ERROR_LEN + VARSTR_HEADER_SIZE] = {0}; char detail[TSDB_TRANS_ERROR_LEN + 1] = {0}; @@ -1996,12 +2001,14 @@ static int32_t mndRetrieveTrans(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl } STR_WITH_MAXSIZE_TO_VARSTR(lastInfo, detail, pShow->pMeta->pSchemas[cols].bytes); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)lastInfo, false); + RETRIEVE_CHECK_GOTO(colDataSetVal(pColInfo, numOfRows, (const char *)lastInfo, false), pTrans, &lino, _OVER); numOfRows++; sdbRelease(pSdb, pTrans); } +_OVER: + if (code != 0) mError("failed to retrieve at line:%d, since %s", lino, tstrerror(code)); pShow->numOfRows += numOfRows; return numOfRows; } diff --git a/source/dnode/mnode/impl/src/mndVgroup.c b/source/dnode/mnode/impl/src/mndVgroup.c index 3199292a7d..2fe1ef4cfb 100644 --- a/source/dnode/mnode/impl/src/mndVgroup.c +++ b/source/dnode/mnode/impl/src/mndVgroup.c @@ -14,7 +14,6 @@ */ #define _DEFAULT_SOURCE -#include "mndVgroup.h" #include "audit.h" #include "mndArbGroup.h" #include "mndDb.h" @@ -27,6 +26,7 @@ #include "mndTopic.h" #include "mndTrans.h" #include "mndUser.h" +#include "mndVgroup.h" #include "tmisce.h" #define VGROUP_VER_NUMBER 1 @@ -320,6 +320,7 @@ void *mndBuildCreateVnodeReq(SMnode *pMnode, SDnodeObj *pDnode, SDbObj *pDb, SVg createReq.tsdbPageSize = pDb->cfg.tsdbPageSize; createReq.changeVersion = ++(pVgroup->syncConfChangeVer); createReq.encryptAlgorithm = pDb->cfg.encryptAlgorithm; + int32_t code = 0; for (int32_t v = 0; v < pVgroup->replica; ++v) { SReplica *pReplica = NULL; @@ -390,7 +391,13 @@ void *mndBuildCreateVnodeReq(SMnode *pMnode, SDnodeObj *pDnode, SDbObj *pDb, SVg return NULL; } - (void)tSerializeSCreateVnodeReq(pReq, contLen, &createReq); + code = tSerializeSCreateVnodeReq(pReq, contLen, &createReq); + if (code < 0) { + terrno = TSDB_CODE_APP_ERROR; + taosMemoryFree(pReq); + mError("vgId:%d, failed to serialize create vnode req,since %s", createReq.vgId, terrstr()); + return NULL; + } *pContLen = contLen; return pReq; } @@ -436,7 +443,12 @@ static void *mndBuildAlterVnodeConfigReq(SMnode *pMnode, SDbObj *pDb, SVgObj *pV pHead->contLen = htonl(contLen); pHead->vgId = htonl(pVgroup->vgId); - (void)tSerializeSAlterVnodeConfigReq((char *)pReq + sizeof(SMsgHead), contLen, &alterReq); + if (tSerializeSAlterVnodeConfigReq((char *)pReq + sizeof(SMsgHead), contLen, &alterReq) < 0) { + taosMemoryFree(pReq); + mError("vgId:%d, failed to serialize alter vnode config req,since %s", pVgroup->vgId, terrstr()); + terrno = TSDB_CODE_OUT_OF_MEMORY; + return NULL; + } *pContLen = contLen; return pReq; } @@ -514,7 +526,12 @@ static void *mndBuildAlterVnodeReplicaReq(SMnode *pMnode, SDbObj *pDb, SVgObj *p return NULL; } - (void)tSerializeSAlterVnodeReplicaReq(pReq, contLen, &alterReq); + if (tSerializeSAlterVnodeReplicaReq(pReq, contLen, &alterReq) < 0) { + mError("vgId:%d, failed to serialize alter vnode req,since %s", alterReq.vgId, terrstr()); + taosMemoryFree(pReq); + terrno = TSDB_CODE_OUT_OF_MEMORY; + return NULL; + } *pContLen = contLen; return pReq; } @@ -587,7 +604,12 @@ static void *mndBuildCheckLearnCatchupReq(SMnode *pMnode, SDbObj *pDb, SVgObj *p return NULL; } - (void)tSerializeSAlterVnodeReplicaReq(pReq, contLen, &req); + if (tSerializeSAlterVnodeReplicaReq(pReq, contLen, &req) < 0) { + mError("vgId:%d, failed to serialize alter vnode req,since %s", req.vgId, terrstr()); + taosMemoryFree(pReq); + terrno = TSDB_CODE_OUT_OF_MEMORY; + return NULL; + } *pContLen = contLen; return pReq; } @@ -611,7 +633,12 @@ static void *mndBuildDisableVnodeWriteReq(SMnode *pMnode, SDbObj *pDb, int32_t v return NULL; } - (void)tSerializeSDisableVnodeWriteReq(pReq, contLen, &disableReq); + if (tSerializeSDisableVnodeWriteReq(pReq, contLen, &disableReq) < 0) { + mError("vgId:%d, failed to serialize disable vnode write req,since %s", vgId, terrstr()); + taosMemoryFree(pReq); + terrno = TSDB_CODE_OUT_OF_MEMORY; + return NULL; + } *pContLen = contLen; return pReq; } @@ -639,7 +666,12 @@ static void *mndBuildAlterVnodeHashRangeReq(SMnode *pMnode, int32_t srcVgId, SVg return NULL; } - (void)tSerializeSAlterVnodeHashRangeReq(pReq, contLen, &alterReq); + if (tSerializeSAlterVnodeHashRangeReq(pReq, contLen, &alterReq) < 0) { + mError("vgId:%d, failed to serialize alter vnode hashrange req,since %s", srcVgId, terrstr()); + taosMemoryFree(pReq); + terrno = TSDB_CODE_OUT_OF_MEMORY; + return NULL; + } *pContLen = contLen; return pReq; } @@ -664,7 +696,12 @@ void *mndBuildDropVnodeReq(SMnode *pMnode, SDnodeObj *pDnode, SDbObj *pDb, SVgOb return NULL; } - (void)tSerializeSDropVnodeReq(pReq, contLen, &dropReq); + if (tSerializeSDropVnodeReq(pReq, contLen, &dropReq) < 0) { + mError("vgId:%d, failed to serialize drop vnode req,since %s", dropReq.vgId, terrstr()); + taosMemoryFree(pReq); + terrno = TSDB_CODE_OUT_OF_MEMORY; + return NULL; + } *pContLen = contLen; return pReq; } @@ -907,7 +944,9 @@ SEpSet mndGetVgroupEpset(SMnode *pMnode, const SVgObj *pVgroup) { epset.inUse = epset.numOfEps; } - (void)addEpIntoEpSet(&epset, pDnode->fqdn, pDnode->port); + if (addEpIntoEpSet(&epset, pDnode->fqdn, pDnode->port) != 0) { + mWarn("vgId:%d, failed to add ep:%s:%d into epset", pVgroup->vgId, pDnode->fqdn, pDnode->port); + } mndReleaseDnode(pMnode, pDnode); } epsetSort(&epset); @@ -930,7 +969,9 @@ SEpSet mndGetVgroupEpsetById(SMnode *pMnode, int32_t vgId) { epset.inUse = epset.numOfEps; } - (void)addEpIntoEpSet(&epset, pDnode->fqdn, pDnode->port); + if (addEpIntoEpSet(&epset, pDnode->fqdn, pDnode->port) != 0) { + mWarn("vgId:%d, failed to add ep:%s:%d into epset", pVgroup->vgId, pDnode->fqdn, pDnode->port); + } mndReleaseDnode(pMnode, pDnode); } @@ -945,6 +986,7 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p SVgObj *pVgroup = NULL; int32_t cols = 0; int64_t curMs = taosGetTimestampMs(); + int32_t code = 0; SDbObj *pDb = NULL; if (strlen(pShow->db) > 0) { @@ -965,26 +1007,46 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p cols = 0; SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->vgId, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->vgId, false); + if (code != 0) { + mError("vgId:%d, failed to set vgId, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } SName name = {0}; char db[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0}; - (void)tNameFromString(&name, pVgroup->dbName, T_NAME_ACCT | T_NAME_DB); + code = tNameFromString(&name, pVgroup->dbName, T_NAME_ACCT | T_NAME_DB); + if (code != 0) { + mError("vgId:%d, failed to set dbName, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } (void)tNameGetDbName(&name, varDataVal(db)); varDataSetLen(db, strlen(varDataVal(db))); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)db, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)db, false); + if (code != 0) { + mError("vgId:%d, failed to set dbName, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->numOfTables, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->numOfTables, false); + if (code != 0) { + mError("vgId:%d, failed to set numOfTables, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } // default 3 replica, add 1 replica if move vnode for (int32_t i = 0; i < 4; ++i) { pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); if (i < pVgroup->replica) { int16_t dnodeId = (int16_t)pVgroup->vnodeGid[i].dnodeId; - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&dnodeId, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)&dnodeId, false); + if (code != 0) { + mError("vgId:%d, failed to set dnodeId, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } bool exist = false; bool online = false; @@ -1038,7 +1100,11 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p STR_WITH_MAXSIZE_TO_VARSTR(buf1, role, pShow->pMeta->pSchemas[cols].bytes); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)buf1, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)buf1, false); + if (code != 0) { + mError("vgId:%d, failed to set role, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } } else { colDataSetNULL(pColInfo, numOfRows); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); @@ -1048,21 +1114,25 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); int32_t cacheUsage = (int32_t)pVgroup->cacheUsage; - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&cacheUsage, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)&cacheUsage, false); + if (code != 0) { + mError("vgId:%d, failed to set cacheUsage, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->numOfCachedTables, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->numOfCachedTables, false); + if (code != 0) { + mError("vgId:%d, failed to set numOfCachedTables, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->isTsma, false); - - // pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - // if (pDb == NULL || pDb->compactStartTime <= 0) { - // colDataSetNULL(pColInfo, numOfRows); - // } else { - // (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pDb->compactStartTime, false); - // } - + code = colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->isTsma, false); + if (code != 0) { + mError("vgId:%d, failed to set isTsma, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } numOfRows++; sdbRelease(pSdb, pVgroup); } @@ -1147,6 +1217,7 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB SVgObj *pVgroup = NULL; int32_t cols = 0; int64_t curMs = taosGetTimestampMs(); + int32_t code = 0; while (numOfRows < rows - TSDB_MAX_REPLICA) { pShow->pIter = sdbFetch(pSdb, SDB_VGROUP, pShow->pIter, (void **)&pVgroup); @@ -1158,10 +1229,17 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB cols = 0; pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pGid->dnodeId, false); - + code = colDataSetVal(pColInfo, numOfRows, (const char *)&pGid->dnodeId, false); + if (code != 0) { + mError("vgId:%d, failed to set dnodeId, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->vgId, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->vgId, false); + if (code != 0) { + mError("vgId:%d, failed to set vgId, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } // db_name const char *dbname = mndGetDbStr(pVgroup->dbName); @@ -1172,7 +1250,11 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB STR_WITH_MAXSIZE_TO_VARSTR(b1, "NULL", TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE); } pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)b1, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)b1, false); + if (code != 0) { + mError("vgId:%d, failed to set dbName, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } // dnode is online? SDnodeObj *pDnode = mndAcquireDnode(pMnode, pGid->dnodeId); @@ -1186,18 +1268,34 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB ESyncState syncState = (isDnodeOnline) ? pGid->syncState : TAOS_SYNC_STATE_OFFLINE; STR_TO_VARSTR(buf, syncStr(syncState)); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)buf, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)buf, false); + if (code != 0) { + mError("vgId:%d, failed to set syncState, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } int64_t roleTimeMs = (isDnodeOnline) ? pGid->roleTimeMs : 0; pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&roleTimeMs, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)&roleTimeMs, false); + if (code != 0) { + mError("vgId:%d, failed to set roleTimeMs, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } int64_t startTimeMs = (isDnodeOnline) ? pGid->startTimeMs : 0; pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&startTimeMs, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)&startTimeMs, false); + if (code != 0) { + mError("vgId:%d, failed to set startTimeMs, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - (void)colDataSetVal(pColInfo, numOfRows, (const char *)&pGid->syncRestore, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)&pGid->syncRestore, false); + if (code != 0) { + mError("vgId:%d, failed to set syncRestore, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } numOfRows++; sdbRelease(pSdb, pDnode); @@ -1270,8 +1368,10 @@ static int32_t mndAddVnodeToVgroup(SMnode *pMnode, STrans *pTrans, SVgObj *pVgro sdbFreeRaw(pVgRaw); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); - + code = sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status since %s at line:%d", pVgroup->vgId, tstrerror(code), __LINE__); + } TAOS_RETURN(code); } @@ -1332,7 +1432,10 @@ _OVER: sdbFreeRaw(pVgRaw); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + code = sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status since %s at line:%d", pVgroup->vgId, tstrerror(code), __LINE__); + } TAOS_RETURN(code); } @@ -1568,6 +1671,10 @@ int32_t mndAddNewVgPrepareAction(SMnode *pMnode, STrans *pTrans, SVgObj *pVg) { TAOS_CHECK_GOTO(mndTransAppendPrepareLog(pTrans, pRaw), NULL, _err); (void)sdbSetRawStatus(pRaw, SDB_STATUS_CREATING); + if (code != 0) { + mError("vgId:%d, failed to set raw status since %s at line:%d", pVg->vgId, tstrerror(code), __LINE__); + TAOS_RETURN(code); + } pRaw = NULL; TAOS_RETURN(code); @@ -1824,7 +1931,11 @@ int32_t mndSetMoveVgroupInfoToTrans(SMnode *pMnode, STrans *pTrans, SDbObj *pDb, sdbFreeRaw(pRaw); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pRaw, SDB_STATUS_READY); + code = sdbSetRawStatus(pRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status since %s at line:%d", newVg.vgId, tstrerror(code), __LINE__); + return code; + } } TAOS_CHECK_RETURN(mndAddDropVnodeAction(pMnode, pTrans, pDb, &newVg, &del, true)); @@ -1850,7 +1961,6 @@ int32_t mndSetMoveVgroupInfoToTrans(SMnode *pMnode, STrans *pTrans, SDbObj *pDb, sdbFreeRaw(pRaw); return -1; } - (void)sdbSetRawStatus(pRaw, SDB_STATUS_READY); } if (mndAddDropVnodeAction(pMnode, pTrans, pDb, &newVg, &del, true) != 0) return -1; @@ -1880,7 +1990,11 @@ int32_t mndSetMoveVgroupInfoToTrans(SMnode *pMnode, STrans *pTrans, SDbObj *pDb, sdbFreeRaw(pRaw); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pRaw, SDB_STATUS_READY); + code = sdbSetRawStatus(pRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status since %s at line:%d", newVg.vgId, tstrerror(code), __LINE__); + return code; + } } for (int32_t i = 0; i < newVg.replica; ++i) { @@ -1930,7 +2044,11 @@ int32_t mndSetMoveVgroupInfoToTrans(SMnode *pMnode, STrans *pTrans, SDbObj *pDb, sdbFreeRaw(pRaw); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pRaw, SDB_STATUS_READY); + code = sdbSetRawStatus(pRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status since %s at line:%d", newVg.vgId, tstrerror(code), __LINE__); + return code; + } } mInfo("vgId:%d, vgroup info after move, replica:%d", newVg.vgId, newVg.replica); @@ -2005,7 +2123,11 @@ static int32_t mndAddIncVgroupReplicaToTrans(SMnode *pMnode, STrans *pTrans, SDb sdbFreeRaw(pVgRaw); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + code = sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status since %s at line:%d", pVgroup->vgId, tstrerror(code), __LINE__); + TAOS_RETURN(code); + } // learner for (int32_t i = 0; i < pVgroup->replica - 1; ++i) { @@ -2057,7 +2179,11 @@ static int32_t mndAddDecVgroupReplicaFromTrans(SMnode *pMnode, STrans *pTrans, S sdbFreeRaw(pVgRaw); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + code = sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status since %s at line:%d", pVgroup->vgId, tstrerror(code), __LINE__); + TAOS_RETURN(code); + } TAOS_CHECK_RETURN(mndAddDropVnodeAction(pMnode, pTrans, pDb, pVgroup, &delGid, true)); for (int32_t i = 0; i < pVgroup->replica; ++i) { @@ -2171,7 +2297,11 @@ static int32_t mndRedistributeVgroup(SMnode *pMnode, SRpcMsg *pReq, SDbObj *pDb, sdbFreeRaw(pRaw); goto _OVER; } - (void)sdbSetRawStatus(pRaw, SDB_STATUS_READY); + code = sdbSetRawStatus(pRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status since %s at line:%d", newVg.vgId, tstrerror(code), __LINE__); + goto _OVER; + } } mInfo("vgId:%d, vgroup info after redistribute, replica:%d", newVg.vgId, newVg.replica); @@ -2452,7 +2582,11 @@ static void *mndBuildSForceBecomeFollowerReq(SMnode *pMnode, SVgObj *pVgroup, in pHead->contLen = htonl(contLen); pHead->vgId = htonl(pVgroup->vgId); - (void)tSerializeSForceBecomeFollowerReq((char *)pReq + sizeof(SMsgHead), contLen, &balanceReq); + if (tSerializeSForceBecomeFollowerReq((char *)pReq + sizeof(SMsgHead), contLen, &balanceReq) < 0) { + terrno = TSDB_CODE_OUT_OF_MEMORY; + taosMemoryFree(pReq); + return NULL; + } *pContLen = contLen; return pReq; } @@ -2693,7 +2827,11 @@ int32_t mndBuildAlterVgroupAction(SMnode *pMnode, STrans *pTrans, SDbObj *pOldDb sdbFreeRaw(pVgRaw); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + code = sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status since %s at line:%d", pNewVgroup->vgId, tstrerror(code), __LINE__); + TAOS_RETURN(code); + } } TAOS_RETURN(code); @@ -2776,7 +2914,12 @@ int32_t mndBuildRaftAlterVgroupAction(SMnode *pMnode, STrans *pTrans, SDbObj *pO sdbFreeRaw(pVgRaw); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + code = sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status to ready, error:%s, line:%d", newVgroup.vgId, tstrerror(code), + __LINE__); + TAOS_RETURN(code); + } } else if (newVgroup.replica == 3 && pNewDb->cfg.replications == 1) { mInfo("db:%s, vgId:%d, will remove 2 vnodes, vn:0 dnode:%d vn:1 dnode:%d vn:2 dnode:%d", pVgroup->dbName, pVgroup->vgId, pVgroup->vnodeGid[0].dnodeId, pVgroup->vnodeGid[1].dnodeId, pVgroup->vnodeGid[2].dnodeId); @@ -2801,7 +2944,12 @@ int32_t mndBuildRaftAlterVgroupAction(SMnode *pMnode, STrans *pTrans, SDbObj *pO sdbFreeRaw(pVgRaw); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + code = sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status to ready, error:%s, line:%d", newVgroup.vgId, tstrerror(code), + __LINE__); + TAOS_RETURN(code); + } SVnodeGid del2 = {0}; TAOS_CHECK_RETURN(mndRemoveVnodeFromVgroupWithoutSave(pMnode, pTrans, &newVgroup, pArray, &del2)); @@ -2823,7 +2971,12 @@ int32_t mndBuildRaftAlterVgroupAction(SMnode *pMnode, STrans *pTrans, SDbObj *pO sdbFreeRaw(pVgRaw); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + code = sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status to ready, error:%s, line:%d", newVgroup.vgId, tstrerror(code), + __LINE__); + TAOS_RETURN(code); + } } else { return -1; } @@ -2841,7 +2994,12 @@ int32_t mndBuildRaftAlterVgroupAction(SMnode *pMnode, STrans *pTrans, SDbObj *pO sdbFreeRaw(pVgRaw); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + code = sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status to ready, error:%s, line:%d", newVgroup.vgId, tstrerror(code), + __LINE__); + TAOS_RETURN(code); + } } TAOS_RETURN(code); @@ -2917,7 +3075,11 @@ int32_t mndBuildRestoreAlterVgroupAction(SMnode *pMnode, STrans *pTrans, SDbObj sdbFreeRaw(pVgRaw); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + code = sdbSetRawStatus(pVgRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status to ready, error:%s, line:%d", newVgroup.vgId, tstrerror(code), __LINE__); + TAOS_RETURN(code); + } TAOS_RETURN(code); } @@ -2938,7 +3100,11 @@ static int32_t mndAddVgStatusAction(STrans *pTrans, SVgObj *pVg, ESdbStatus vgSt goto _err; } if ((code = appendActionCb(pTrans, pRaw)) != 0) goto _err; - (void)sdbSetRawStatus(pRaw, vgStatus); + code = sdbSetRawStatus(pRaw, vgStatus); + if (code != 0) { + mError("vgId:%d, failed to set raw status to ready, error:%s, line:%d", pVg->vgId, tstrerror(code), __LINE__); + goto _err; + } pRaw = NULL; TAOS_RETURN(code); _err: @@ -2956,7 +3122,11 @@ static int32_t mndAddDbStatusAction(STrans *pTrans, SDbObj *pDb, ESdbStatus dbSt goto _err; } if ((code = appendActionCb(pTrans, pRaw)) != 0) goto _err; - (void)sdbSetRawStatus(pRaw, dbStatus); + code = sdbSetRawStatus(pRaw, dbStatus); + if (code != 0) { + mError("db:%s, failed to set raw status to ready, error:%s, line:%d", pDb->name, tstrerror(code), __LINE__); + goto _err; + } pRaw = NULL; TAOS_RETURN(code); _err: @@ -3165,7 +3335,11 @@ static int32_t mndSetBalanceVgroupInfoToTrans(SMnode *pMnode, STrans *pTrans, SD sdbFreeRaw(pRaw); TAOS_RETURN(code); } - (void)sdbSetRawStatus(pRaw, SDB_STATUS_READY); + code = sdbSetRawStatus(pRaw, SDB_STATUS_READY); + if (code != 0) { + mError("vgId:%d, failed to set raw status to ready, error:%s, line:%d", newVg.vgId, tstrerror(code), __LINE__); + TAOS_RETURN(code); + } } mInfo("vgId:%d, vgroup info after balance, replica:%d", newVg.vgId, newVg.replica); @@ -3391,7 +3565,11 @@ static void *mndBuildCompactVnodeReq(SMnode *pMnode, SDbObj *pDb, SVgObj *pVgrou pHead->contLen = htonl(contLen); pHead->vgId = htonl(pVgroup->vgId); - (void)tSerializeSCompactVnodeReq((char *)pReq + sizeof(SMsgHead), contLen, &compactReq); + if (tSerializeSCompactVnodeReq((char *)pReq + sizeof(SMsgHead), contLen, &compactReq) < 0) { + taosMemoryFree(pReq); + terrno = TSDB_CODE_OUT_OF_MEMORY; + return NULL; + } *pContLen = contLen; return pReq; } diff --git a/source/dnode/vnode/src/sma/smaCommit.c b/source/dnode/vnode/src/sma/smaCommit.c index 75b112f42b..7b2c9457e3 100644 --- a/source/dnode/vnode/src/sma/smaCommit.c +++ b/source/dnode/vnode/src/sma/smaCommit.c @@ -257,7 +257,9 @@ static int32_t tdProcessRSmaAsyncPostCommitImpl(SSma *pSma) { if (RSMA_INFO_IS_DEL(pRSmaInfo)) { int32_t refVal = T_REF_VAL_GET(pRSmaInfo); if (refVal == 0) { - (void)taosHashRemove(RSMA_INFO_HASH(pRSmaStat), pSuid, sizeof(*pSuid)); + if(taosHashRemove(RSMA_INFO_HASH(pRSmaStat), pSuid, sizeof(*pSuid)) < 0) { + smaError("vgId:%d, rsma async post commit, failed to remove rsma info for table:%" PRIi64, SMA_VID(pSma), *pSuid); + } } else { smaDebug( "vgId:%d, rsma async post commit, not free rsma info since ref is %d although already deleted for " diff --git a/source/dnode/vnode/src/sma/smaEnv.c b/source/dnode/vnode/src/sma/smaEnv.c index 721c0130cf..efa248755b 100644 --- a/source/dnode/vnode/src/sma/smaEnv.c +++ b/source/dnode/vnode/src/sma/smaEnv.c @@ -46,7 +46,7 @@ int32_t smaInit() { old = atomic_val_compare_exchange_8(&smaMgmt.inited, 0, 2); if (old != 2) break; if (++nLoops > 1000) { - (void)sched_yield(); + TAOS_UNUSED(sched_yield()); nLoops = 0; } } @@ -97,7 +97,7 @@ void smaCleanUp() { old = atomic_val_compare_exchange_8(&smaMgmt.inited, 1, 2); if (old != 2) break; if (++nLoops > 1000) { - (void)sched_yield(); + TAOS_UNUSED(sched_yield()); nLoops = 0; } } @@ -130,7 +130,7 @@ static int32_t tdNewSmaEnv(SSma *pSma, int8_t smaType, SSmaEnv **ppEnv) { : atomic_store_ptr(&SMA_RSMA_ENV(pSma), *ppEnv); if ((code = tdInitSmaStat(&SMA_ENV_STAT(pEnv), smaType, pSma)) != TSDB_CODE_SUCCESS) { - (void)tdFreeSmaEnv(pEnv); + TAOS_UNUSED(tdFreeSmaEnv(pEnv)); *ppEnv = NULL; (smaType == TSDB_SMA_TYPE_TIME_RANGE) ? atomic_store_ptr(&SMA_TSMA_ENV(pSma), NULL) : atomic_store_ptr(&SMA_RSMA_ENV(pSma), NULL); @@ -183,7 +183,7 @@ static void tRSmaInfoHashFreeNode(void *data) { smaError("failed to hash remove %s:%d", __FUNCTION__, __LINE__); } } - (void)tdFreeRSmaInfo(pRSmaInfo->pSma, pRSmaInfo); + TAOS_UNUSED(tdFreeRSmaInfo(pRSmaInfo->pSma, pRSmaInfo)); } } @@ -289,7 +289,7 @@ static void tdDestroyRSmaStat(void *pRSmaStat) { } // step 3: - (void)tdRsmaStopExecutor(pSma); + TAOS_UNUSED(tdRsmaStopExecutor(pSma)); // step 4: destroy the rsma info and associated fetch tasks taosHashCleanup(RSMA_INFO_HASH(pStat)); @@ -302,7 +302,7 @@ static void tdDestroyRSmaStat(void *pRSmaStat) { } static void *tdFreeSmaState(SSmaStat *pSmaStat, int8_t smaType) { - (void)tdDestroySmaState(pSmaStat, smaType); + TAOS_UNUSED(tdDestroySmaState(pSmaStat, smaType)); if (smaType == TSDB_SMA_TYPE_TIME_RANGE) { taosMemoryFreeClear(pSmaStat); } @@ -382,16 +382,16 @@ int32_t tdCheckAndInitSmaEnv(SSma *pSma, int8_t smaType) { } // init sma env - (void)tdLockSma(pSma); + TAOS_UNUSED(tdLockSma(pSma)); pEnv = (smaType == TSDB_SMA_TYPE_TIME_RANGE) ? atomic_load_ptr(&SMA_TSMA_ENV(pSma)) : atomic_load_ptr(&SMA_RSMA_ENV(pSma)); if (!pEnv) { if ((code = tdInitSmaEnv(pSma, smaType, &pEnv)) < 0) { - (void)tdUnLockSma(pSma); + TAOS_UNUSED(tdUnLockSma(pSma)); TAOS_RETURN(code); } } - (void)tdUnLockSma(pSma); + TAOS_UNUSED(tdUnLockSma(pSma)); TAOS_RETURN(TSDB_CODE_SUCCESS); } @@ -399,7 +399,9 @@ int32_t tdCheckAndInitSmaEnv(SSma *pSma, int8_t smaType) { void *tdRSmaExecutorFunc(void *param) { setThreadName("vnode-rsma"); - (void)tdRSmaProcessExecImpl((SSma *)param, RSMA_EXEC_OVERFLOW); + if(tdRSmaProcessExecImpl((SSma *)param, RSMA_EXEC_OVERFLOW) < 0){ + smaError("vgId:%d, failed to process rsma exec", SMA_VID((SSma *)param)); + } return NULL; } diff --git a/source/dnode/vnode/src/sma/smaOpen.c b/source/dnode/vnode/src/sma/smaOpen.c index b87be63d04..19df6edead 100644 --- a/source/dnode/vnode/src/sma/smaOpen.c +++ b/source/dnode/vnode/src/sma/smaOpen.c @@ -173,7 +173,7 @@ _exit: int32_t smaClose(SSma *pSma) { if (pSma) { - (void)smaPreClose(pSma); + TAOS_UNUSED(smaPreClose(pSma)); (void)taosThreadMutexDestroy(&pSma->mutex); SMA_TSMA_ENV(pSma) = tdFreeSmaEnv(SMA_TSMA_ENV(pSma)); SMA_RSMA_ENV(pSma) = tdFreeSmaEnv(SMA_RSMA_ENV(pSma)); diff --git a/source/dnode/vnode/src/sma/smaRollup.c b/source/dnode/vnode/src/sma/smaRollup.c index 14e79200aa..cf0a9701d9 100644 --- a/source/dnode/vnode/src/sma/smaRollup.c +++ b/source/dnode/vnode/src/sma/smaRollup.c @@ -89,7 +89,10 @@ void *tdFreeRSmaInfo(SSma *pSma, SRSmaInfo *pInfo) { if (pItem->tmrId) { smaDebug("vgId:%d, stop fetch timer %p for table %" PRIi64 " level %d", SMA_VID(pSma), pItem->tmrId, pInfo->suid, i + 1); - (void)taosTmrStopA(&pItem->tmrId); + if(!taosTmrStopA(&pItem->tmrId)){ + smaError("vgId:%d, failed to stop fetch timer for table %" PRIi64 " level %d", SMA_VID(pSma), pInfo->suid, + i + 1); + } } if (pItem->pStreamState) { @@ -246,7 +249,10 @@ static void tdRSmaTaskInit(SStreamMeta *pMeta, SRSmaInfoItem *pItem, SStreamTask } static void tdRSmaTaskRemove(SStreamMeta *pMeta, int64_t streamId, int32_t taskId) { - (void)streamMetaUnregisterTask(pMeta, streamId, taskId); + int32_t code = streamMetaUnregisterTask(pMeta, streamId, taskId); + if (code != 0) { + smaError("vgId:%d, rsma task:%" PRIi64 ",%d drop failed since %s", pMeta->vgId, streamId, taskId, tstrerror(code)); + } streamMetaWLock(pMeta); int32_t numOfTasks = streamMetaGetNumOfTasks(pMeta); if (streamMetaCommit(pMeta) < 0) { @@ -348,7 +354,11 @@ static int32_t tdSetRSmaInfoItemParams(SSma *pSma, SRSmaParam *param, SRSmaStat TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY); } - (void)taosTmrReset(tdRSmaFetchTrigger, RSMA_FETCH_INTERVAL, pItem, smaMgmt.tmrHandle, &pItem->tmrId); + bool ret = taosTmrReset(tdRSmaFetchTrigger, RSMA_FETCH_INTERVAL, pItem, smaMgmt.tmrHandle, &pItem->tmrId); + if (!ret) { + smaError("vgId:%d, failed to reset fetch timer for table %" PRIi64 " level %d", TD_VID(pVnode), pRSmaInfo->suid, + idx + 1); + } smaInfo("vgId:%d, open rsma task:%p table:%" PRIi64 " level:%" PRIi8 ", checkpointId:%" PRIi64 ", submitReqVer:%" PRIi64 ", fetchResultVer:%" PRIi64 ", maxdelay:%" PRIi64 " watermark:%" PRIi64 @@ -412,7 +422,7 @@ int32_t tdRSmaProcessCreateImpl(SSma *pSma, SRSmaParam *param, int64_t suid, con _exit: if (code != 0) { - (void)tdFreeRSmaInfo(pSma, pRSmaInfo); + TAOS_UNUSED(tdFreeRSmaInfo(pSma, pRSmaInfo)); } else { smaDebug("vgId:%d, register rsma info succeed for table %" PRIi64, SMA_VID(pSma), suid); } @@ -1264,7 +1274,7 @@ _checkpoint: if (pItem && pItem->pStreamTask) { SStreamTask *pTask = pItem->pStreamTask; // atomic_store_32(&pTask->pMeta->chkptNotReadyTasks, 1); - (void)streamTaskSetActiveCheckpointInfo(pTask, checkpointId); + TAOS_UNUSED(streamTaskSetActiveCheckpointInfo(pTask, checkpointId)); pTask->chkInfo.checkpointId = checkpointId; // 1pTask->checkpointingId; pTask->chkInfo.checkpointVer = pItem->submitReqVer; @@ -1339,7 +1349,7 @@ static void tdRSmaFetchTrigger(void *param, void *tmrId) { if (!(pStat = (SRSmaStat *)tdAcquireSmaRef(smaMgmt.rsetId, pRSmaRef->refId))) { smaWarn("rsma fetch task not start since rsma stat already destroyed, rsetId:%d refId:%" PRIi64 ")", smaMgmt.rsetId, pRSmaRef->refId); // pRSmaRef freed in taosHashRemove - (void)taosHashRemove(smaMgmt.refHash, ¶m, POINTER_BYTES); + TAOS_UNUSED(taosHashRemove(smaMgmt.refHash, ¶m, POINTER_BYTES)); return; } @@ -1348,8 +1358,8 @@ static void tdRSmaFetchTrigger(void *param, void *tmrId) { if ((code = tdAcquireRSmaInfoBySuid(pSma, pRSmaRef->suid, &pRSmaInfo)) != 0) { smaDebug("rsma fetch task not start since rsma info not exist, rsetId:%d refId:%" PRIi64 ")", smaMgmt.rsetId, pRSmaRef->refId); // pRSmaRef freed in taosHashRemove - (void)tdReleaseSmaRef(smaMgmt.rsetId, pRSmaRef->refId); - (void)taosHashRemove(smaMgmt.refHash, ¶m, POINTER_BYTES); + TAOS_UNUSED(tdReleaseSmaRef(smaMgmt.rsetId, pRSmaRef->refId)); + TAOS_UNUSED(taosHashRemove(smaMgmt.refHash, ¶m, POINTER_BYTES)); return; } @@ -1357,8 +1367,8 @@ static void tdRSmaFetchTrigger(void *param, void *tmrId) { smaDebug("rsma fetch task not start since rsma info already deleted, rsetId:%d refId:%" PRIi64 ")", smaMgmt.rsetId, pRSmaRef->refId); // pRSmaRef freed in taosHashRemove tdReleaseRSmaInfo(pSma, pRSmaInfo); - (void)tdReleaseSmaRef(smaMgmt.rsetId, pRSmaRef->refId); - (void)taosHashRemove(smaMgmt.refHash, ¶m, POINTER_BYTES); + TAOS_UNUSED(tdReleaseSmaRef(smaMgmt.rsetId, pRSmaRef->refId)); + TAOS_UNUSED(taosHashRemove(smaMgmt.refHash, ¶m, POINTER_BYTES)); return; } @@ -1373,10 +1383,14 @@ static void tdRSmaFetchTrigger(void *param, void *tmrId) { ", rsetId:%d refId:%" PRIi64, SMA_VID(pSma), pItem->level, rsmaTriggerStat, smaMgmt.rsetId, pRSmaRef->refId); if (rsmaTriggerStat == TASK_TRIGGER_STAT_PAUSED) { - (void)taosTmrReset(tdRSmaFetchTrigger, RSMA_FETCH_INTERVAL, pItem, smaMgmt.tmrHandle, &pItem->tmrId); + bool ret = taosTmrReset(tdRSmaFetchTrigger, RSMA_FETCH_INTERVAL, pItem, smaMgmt.tmrHandle, &pItem->tmrId); + if (!ret) { + smaWarn("vgId:%d, rsma fetch task not reset for level %" PRIi8 " since tmr reset failed, rsetId:%d refId:%" PRIi64, + SMA_VID(pSma), pItem->level, smaMgmt.rsetId, pRSmaRef->refId); + } } tdReleaseRSmaInfo(pSma, pRSmaInfo); - (void)tdReleaseSmaRef(smaMgmt.rsetId, pRSmaRef->refId); + TAOS_UNUSED(tdReleaseSmaRef(smaMgmt.rsetId, pRSmaRef->refId)); return; } default: @@ -1414,7 +1428,7 @@ static void tdRSmaFetchTrigger(void *param, void *tmrId) { _end: taosTmrReset(tdRSmaFetchTrigger, pItem->maxDelay, pItem, smaMgmt.tmrHandle, &pItem->tmrId); tdReleaseRSmaInfo(pSma, pRSmaInfo); - (void)tdReleaseSmaRef(smaMgmt.rsetId, pRSmaRef->refId); + TAOS_UNUSED(tdReleaseSmaRef(smaMgmt.rsetId, pRSmaRef->refId)); } static void tdFreeRSmaSubmitItems(SArray *pItems, int32_t type) { @@ -1507,7 +1521,7 @@ static int32_t tdRSmaBatchExec(SSma *pSma, SRSmaInfo *pInfo, STaosQall *qall, SA // the submitReq/deleteReq msg may exsit alternately in the msg queue, consume them sequentially in batch mode while (1) { - (void)taosGetQitem(qall, (void **)&msg); + TAOS_UNUSED(taosGetQitem(qall, (void **)&msg)); if (msg) { int8_t inputType = RSMA_EXEC_MSG_TYPE(msg); if (inputType == STREAM_INPUT__DATA_SUBMIT) { @@ -1573,7 +1587,7 @@ _exit: tdFreeRSmaSubmitItems(pSubmitArr, nSubmit ? STREAM_INPUT__MERGED_SUBMIT : STREAM_INPUT__REF_DATA_BLOCK); while (1) { void *msg = NULL; - (void)taosGetQitem(qall, (void **)&msg); + TAOS_UNUSED(taosGetQitem(qall, (void **)&msg)); if (msg) { taosFreeQitem(msg); } else { @@ -1628,7 +1642,7 @@ int32_t tdRSmaProcessExecImpl(SSma *pSma, ERsmaExecType type) { batchMax = TMAX(batchMax, 4); } while (occupied || (++batchCnt < batchMax)) { // greedy mode - (void)taosReadAllQitems(pInfo->queue, pInfo->qall); // queue has mutex lock + TAOS_UNUSED(taosReadAllQitems(pInfo->queue, pInfo->qall)); // queue has mutex lock int32_t qallItemSize = taosQallItemSize(pInfo->qall); if (qallItemSize > 0) { if ((code = tdRSmaBatchExec(pSma, pInfo, pInfo->qall, pSubmitArr, type)) != 0) { @@ -1662,7 +1676,7 @@ int32_t tdRSmaProcessExecImpl(SSma *pSma, ERsmaExecType type) { } if (qallItemSize > 0) { - (void)atomic_fetch_sub_64(&pRSmaStat->nBufItems, qallItemSize); + TAOS_UNUSED(atomic_fetch_sub_64(&pRSmaStat->nBufItems, qallItemSize)); continue; } if (RSMA_NEED_FETCH(pInfo)) { @@ -1672,7 +1686,7 @@ int32_t tdRSmaProcessExecImpl(SSma *pSma, ERsmaExecType type) { break; } } - (void)atomic_val_compare_exchange_8(&pInfo->assigned, 1, 0); + TAOS_UNUSED(atomic_val_compare_exchange_8(&pInfo->assigned, 1, 0)); } } } else { diff --git a/source/dnode/vnode/src/sma/smaSnapshot.c b/source/dnode/vnode/src/sma/smaSnapshot.c index 881c8ac96d..348d378081 100644 --- a/source/dnode/vnode/src/sma/smaSnapshot.c +++ b/source/dnode/vnode/src/sma/smaSnapshot.c @@ -93,7 +93,7 @@ int32_t rsmaSnapRead(SRSmaSnapReader* pReader, uint8_t** ppData) { _exit: if (code) { smaError("vgId:%d, %s failed at line %d since %s", SMA_VID(pReader->pSma), __func__, lino, tstrerror(code)); - (void)rsmaSnapReaderClose(&pReader); + TAOS_UNUSED(rsmaSnapReaderClose(&pReader)); } else { smaInfo("vgId:%d, vnode snapshot rsma read succeed", SMA_VID(pReader->pSma)); } @@ -106,7 +106,10 @@ int32_t rsmaSnapReaderClose(SRSmaSnapReader** ppReader) { for (int32_t i = 0; i < TSDB_RETENTION_L2; ++i) { if (pReader->pDataReader[i]) { - (void)tsdbSnapReaderClose(&pReader->pDataReader[i]); + if ((code = tsdbSnapReaderClose(&pReader->pDataReader[i])) < 0) { + smaError("vgId:%d, vnode snapshot rsma , failed to close tsdbSnapReader since %s", SMA_VID(pReader->pSma), + tstrerror(code)); + } } } diff --git a/source/dnode/vnode/src/sma/smaTimeRange.c b/source/dnode/vnode/src/sma/smaTimeRange.c index 58dafa4f8b..86246aace1 100644 --- a/source/dnode/vnode/src/sma/smaTimeRange.c +++ b/source/dnode/vnode/src/sma/smaTimeRange.c @@ -123,7 +123,7 @@ static int32_t tdProcessTSmaCreateImpl(SSma *pSma, int64_t ver, const char *pMsg TAOS_CHECK_EXIT(metaCreateTSma(SMA_META(pSma), ver, pCfg)); // create stable to save tsma result in dstVgId - (void)tNameFromString(&stbFullName, pCfg->dstTbName, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); + TAOS_CHECK_EXIT(tNameFromString(&stbFullName, pCfg->dstTbName, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE)); pReq.name = (char *)tNameGetTableName(&stbFullName); pReq.suid = pCfg->dstTbUid; pReq.schemaRow = pCfg->schemaRow; @@ -283,7 +283,10 @@ static int32_t tsmaProcessDelReq(SSma *pSma, int64_t indexUid, SBatchDeleteReq * SEncoder encoder; tEncoderInit(&encoder, POINTER_SHIFT(pBuf, sizeof(SMsgHead)), len); - (void)tEncodeSBatchDeleteReq(&encoder, pDelReq); + if ((code = tEncodeSBatchDeleteReq(&encoder, pDelReq)) < 0) { + tEncoderClear(&encoder); + TSDB_CHECK_CODE(code, lino, _exit); + } tEncoderClear(&encoder); ((SMsgHead *)pBuf)->vgId = TD_VID(pSma->pVnode); diff --git a/source/dnode/vnode/src/tq/tq.c b/source/dnode/vnode/src/tq/tq.c index e5aefaedd2..d0047b8e3f 100644 --- a/source/dnode/vnode/src/tq/tq.c +++ b/source/dnode/vnode/src/tq/tq.c @@ -70,6 +70,9 @@ int32_t tqOpen(const char* path, SVnode* pVnode) { } pVnode->pTq = pTq; pTq->path = taosStrdup(path); + if (pTq->path == NULL) { + return terrno; + } pTq->pVnode = pVnode; pTq->pHandle = taosHashInit(64, MurmurHash3_32, true, HASH_ENTRY_LOCK); diff --git a/source/dnode/vnode/src/tq/tqMeta.c b/source/dnode/vnode/src/tq/tqMeta.c index b9cf26ee54..b7c842d05c 100644 --- a/source/dnode/vnode/src/tq/tqMeta.c +++ b/source/dnode/vnode/src/tq/tqMeta.c @@ -341,7 +341,11 @@ int32_t tqMetaCreateHandle(STQ* pTq, SMqRebVgReq* req, STqHandle* handle) { handle->execHandle.subType = req->subType; handle->fetchMeta = req->withMeta; if (req->subType == TOPIC_SUB_TYPE__COLUMN) { - handle->execHandle.execCol.qmsg = taosStrdup(req->qmsg); + void *tmp = taosStrdup(req->qmsg); + if (tmp == NULL) { + return terrno; + } + handle->execHandle.execCol.qmsg = tmp; } else if (req->subType == TOPIC_SUB_TYPE__DB) { handle->execHandle.execDb.pFilterOutTbUid = taosHashInit(64, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_ENTRY_LOCK); @@ -350,7 +354,11 @@ int32_t tqMetaCreateHandle(STQ* pTq, SMqRebVgReq* req, STqHandle* handle) { } }else if(req->subType == TOPIC_SUB_TYPE__TABLE){ handle->execHandle.execTb.suid = req->suid; - handle->execHandle.execTb.qmsg = taosStrdup(req->qmsg); + void *tmp = taosStrdup(req->qmsg); + if (tmp == NULL) { + return terrno; + } + handle->execHandle.execTb.qmsg = tmp; } handle->snapshotVer = walGetCommittedVer(pTq->pVnode->pWal); diff --git a/source/dnode/vnode/src/tq/tqScan.c b/source/dnode/vnode/src/tq/tqScan.c index 14b347ce73..f71669f158 100644 --- a/source/dnode/vnode/src/tq/tqScan.c +++ b/source/dnode/vnode/src/tq/tqScan.c @@ -69,6 +69,10 @@ static int32_t tqAddTbNameToRsp(const STQ* pTq, int64_t uid, void* pRsp, int32_t for (int32_t i = 0; i < n; i++) { char* tbName = taosStrdup(mr.me.name); + if (tbName == NULL) { + metaReaderClear(&mr); + return terrno; + } if(taosArrayPush(((SMqDataRspCommon*)pRsp)->blockTbName, &tbName) == NULL){ continue; } @@ -213,6 +217,10 @@ int32_t tqScanTaosx(STQ* pTq, const STqHandle* pHandle, STaosxRsp* pRsp, SMqBatc } } else { char* tbName = taosStrdup(qExtractTbnameFromTask(task)); + if (tbName == NULL) { + tqError("vgId:%d, failed to add tbname to rsp msg, null", pTq->pVnode->config.vgId); + return terrno; + } if (taosArrayPush(pRsp->common.blockTbName, &tbName) == NULL){ tqError("vgId:%d, failed to add tbname to rsp msg", pTq->pVnode->config.vgId); continue; diff --git a/source/dnode/vnode/src/tq/tqStreamTask.c b/source/dnode/vnode/src/tq/tqStreamTask.c index ae3d113c66..b0bf89029e 100644 --- a/source/dnode/vnode/src/tq/tqStreamTask.c +++ b/source/dnode/vnode/src/tq/tqStreamTask.c @@ -114,7 +114,7 @@ int32_t tqScanWalInFuture(STQ* pTq, int32_t numOfTasks, int32_t idleDuration) { } else { bool ret = taosTmrReset(doStartScanWal, idleDuration, pParam, pTimer, &pMeta->scanInfo.scanTimer); if (!ret) { - tqError("vgId:%d failed to start scan wal in:%dms", vgId, idleDuration); +// tqError("vgId:%d failed to start scan wal in:%dms", vgId, idleDuration); } } diff --git a/source/libs/catalog/src/ctgRemote.c b/source/libs/catalog/src/ctgRemote.c index c9114ce90e..402686a219 100644 --- a/source/libs/catalog/src/ctgRemote.c +++ b/source/libs/catalog/src/ctgRemote.c @@ -53,7 +53,7 @@ int32_t ctgHandleBatchRsp(SCtgJob* pJob, SCtgTaskCallbackParam* cbParam, SDataBu SHashObj* pBatchs = taosHashInit(taskNum, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), false, HASH_NO_LOCK); if (NULL == pBatchs) { ctgError("taosHashInit %d batch failed", taskNum); - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } for (int32_t i = 0; i < taskNum; ++i) { @@ -441,7 +441,7 @@ int32_t ctgHandleMsgCallback(void* param, SDataBuf* pMsg, int32_t rspCode) { taosHashInit(CTG_DEFAULT_BATCH_NUM, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), false, HASH_NO_LOCK); if (NULL == pBatchs) { ctgError("taosHashInit %d batch failed", CTG_DEFAULT_BATCH_NUM); - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } SCtgMsgCtx* pMsgCtx = CTG_GET_TASK_MSGCTX(pTask, -1); @@ -575,7 +575,7 @@ int32_t ctgAddBatch(SCatalog* pCtg, int32_t vgId, SRequestConnInfo* pConn, SCtgT taosArrayDestroy(newBatch.pMsgs); taosArrayDestroy(newBatch.pTaskIds); taosArrayDestroy(newBatch.pMsgIdxs); - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } newBatch.conn = *pConn; @@ -585,14 +585,14 @@ int32_t ctgAddBatch(SCatalog* pCtg, int32_t vgId, SRequestConnInfo* pConn, SCtgT req.msgLen = msgSize; req.msg = msg; if (NULL == taosArrayPush(newBatch.pMsgs, &req)) { - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } msg = NULL; if (NULL == taosArrayPush(newBatch.pTaskIds, &pTask->taskId)) { - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } if (NULL == taosArrayPush(newBatch.pMsgIdxs, &req.msgIdx)) { - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } if (vgId > 0) { @@ -662,14 +662,14 @@ int32_t ctgAddBatch(SCatalog* pCtg, int32_t vgId, SRequestConnInfo* pConn, SCtgT req.msgLen = msgSize; req.msg = msg; if (NULL == taosArrayPush(pBatch->pMsgs, &req)) { - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } msg = NULL; if (NULL == taosArrayPush(pBatch->pTaskIds, &pTask->taskId)) { - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } if (NULL == taosArrayPush(pBatch->pMsgIdxs, &req.msgIdx)) { - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } if (vgId > 0) { @@ -819,7 +819,7 @@ int32_t ctgGetQnodeListFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, SArray if (pTask) { void* pOut = taosArrayInit(4, sizeof(SQueryNodeLoad)); if (NULL == pOut) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_ERR_RET(ctgUpdateMsgCtx(CTG_GET_TASK_MSGCTX(pTask, -1), reqType, pOut, NULL)); @@ -832,11 +832,11 @@ int32_t ctgGetQnodeListFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, SArray #else SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, pConn, pTask->pJob, pTaskId, -1, NULL, NULL, 0, reqType, msg, msgLen)); @@ -884,11 +884,11 @@ int32_t ctgGetDnodeListFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, SArray #else SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, pConn, pTask->pJob, pTaskId, -1, NULL, NULL, 0, reqType, msg, msgLen)); @@ -940,11 +940,11 @@ int32_t ctgGetDBVgInfoFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, SBuildU #else SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, pConn, pTask->pJob, pTaskId, -1, NULL, NULL, 0, reqType, msg, msgLen)); @@ -998,11 +998,11 @@ int32_t ctgGetDBCfgFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, const char #else SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, pConn, pTask->pJob, pTaskId, -1, NULL, NULL, 0, reqType, msg, msgLen)); @@ -1056,11 +1056,11 @@ int32_t ctgGetIndexInfoFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, const #else SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, pConn, pTask->pJob, pTaskId, -1, NULL, NULL, 0, reqType, msg, msgLen)); @@ -1121,11 +1121,11 @@ int32_t ctgGetTbIndexFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, SName* n #else SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, pConn, pTask->pJob, pTaskId, -1, NULL, NULL, 0, reqType, msg, msgLen)); @@ -1179,11 +1179,11 @@ int32_t ctgGetUdfInfoFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, const ch #else SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, pConn, pTask->pJob, pTaskId, -1, NULL, NULL, 0, reqType, msg, msgLen)); @@ -1237,11 +1237,11 @@ int32_t ctgGetUserDbAuthFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, const #else SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, pConn, pTask->pJob, pTaskId, -1, NULL, NULL, 0, reqType, msg, msgLen)); @@ -1297,11 +1297,11 @@ int32_t ctgGetTbMetaFromMnodeImpl(SCatalog* pCtg, SRequestConnInfo* pConn, const #else SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, pConn, pTask->pJob, pTaskId, -1, NULL, NULL, 0, reqType, msg, msgLen)); @@ -1378,11 +1378,11 @@ int32_t ctgGetTbMetaFromVnode(SCatalog* pCtg, SRequestConnInfo* pConn, const SNa (void)tNameGetFullDbName(ctx->pName, dbFName); SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, &vConn, pTask->pJob, pTaskId, -1, NULL, dbFName, ctx->vgId, reqType, msg, msgLen)); @@ -1451,11 +1451,11 @@ int32_t ctgGetTableCfgFromVnode(SCatalog* pCtg, SRequestConnInfo* pConn, const S (void)tNameGetFullDbName(ctx->pName, dbFName); SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, &vConn, pTask->pJob, pTaskId, -1, NULL, dbFName, ctx->pVgInfo->vgId, reqType, msg, @@ -1515,11 +1515,11 @@ int32_t ctgGetTableCfgFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, const S #else SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, pConn, pTask->pJob, pTaskId, -1, NULL, NULL, 0, reqType, msg, msgLen)); @@ -1567,11 +1567,11 @@ int32_t ctgGetSvrVerFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, char** ou #else SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, pConn, pTask->pJob, pTaskId, -1, NULL, NULL, 0, reqType, msg, msgLen)); @@ -1629,11 +1629,11 @@ int32_t ctgGetViewInfoFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, SName* #else SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, pConn, pTask->pJob, pTaskId, -1, NULL, NULL, 0, reqType, msg, msgLen)); @@ -1690,11 +1690,11 @@ int32_t ctgGetTbTSMAFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, const SNa #else SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET(ctgAsyncSendMsg(pCtg, pConn, pTask->pJob, pTaskId, -1, NULL, NULL, 0, reqType, msg, msgLen)); @@ -1761,11 +1761,11 @@ int32_t ctgGetStreamProgressFromVnode(SCatalog* pCtg, SRequestConnInfo* pConn, c (void)tNameGetFullDbName(pTbName, dbFName); SArray* pTaskId = taosArrayInit(1, sizeof(int32_t)); if (NULL == pTaskId) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (NULL == taosArrayPush(pTaskId, &pTask->taskId)) { taosArrayDestroy(pTaskId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_RET( diff --git a/source/libs/catalog/src/ctgUtil.c b/source/libs/catalog/src/ctgUtil.c index 545e3e1371..e3ae0419d8 100644 --- a/source/libs/catalog/src/ctgUtil.c +++ b/source/libs/catalog/src/ctgUtil.c @@ -1098,7 +1098,7 @@ int32_t ctgAddMsgCtx(SArray* pCtxs, int32_t reqType, void* out, char* target) { if (NULL == taosArrayPush(pCtxs, &ctx)) { ctgFreeMsgCtx(&ctx); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } return TSDB_CODE_SUCCESS; @@ -1124,7 +1124,7 @@ int32_t ctgGenerateVgList(SCatalog* pCtg, SHashObj* vgHash, SArray** pList) { vgList = taosArrayInit(vgNum, sizeof(SVgroupInfo)); if (NULL == vgList) { ctgError("taosArrayInit failed, num:%d", vgNum); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } void* pIter = taosHashIterate(vgHash, NULL); @@ -1134,7 +1134,7 @@ int32_t ctgGenerateVgList(SCatalog* pCtg, SHashObj* vgHash, SArray** pList) { if (NULL == taosArrayPush(vgList, vgInfo)) { ctgError("taosArrayPush failed, vgId:%d", vgInfo->vgId); taosHashCancelIterate(vgHash, pIter); - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } pIter = taosHashIterate(vgHash, pIter); @@ -1267,7 +1267,7 @@ int32_t ctgGetVgInfosFromHashValue(SCatalog* pCtg, SEpSet* pMgmgEpSet, SCtgTaskR for (int32_t i = 0; i < tbNum; ++i) { vgInfo = taosMemoryMalloc(sizeof(SVgroupInfo)); if (NULL == vgInfo) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } TAOS_MEMCPY(vgInfo, &mgmtInfo, sizeof(mgmtInfo)); @@ -1292,7 +1292,7 @@ int32_t ctgGetVgInfosFromHashValue(SCatalog* pCtg, SEpSet* pMgmgEpSet, SCtgTaskR } else { res.pRes = vgInfo; if (NULL == taosArrayPush(pCtx->pResList, &res)) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } } } @@ -1310,7 +1310,7 @@ int32_t ctgGetVgInfosFromHashValue(SCatalog* pCtg, SEpSet* pMgmgEpSet, SCtgTaskR for (int32_t i = 0; i < tbNum; ++i) { vgInfo = taosMemoryMalloc(sizeof(SVgroupInfo)); if (NULL == vgInfo) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SVgroupInfo* pSrcVg = (SVgroupInfo*)taosArrayGet(dbInfo->vgArray, 0); @@ -1341,7 +1341,7 @@ int32_t ctgGetVgInfosFromHashValue(SCatalog* pCtg, SEpSet* pMgmgEpSet, SCtgTaskR } else { res.pRes = vgInfo; if (NULL == taosArrayPush(pCtx->pResList, &res)) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } } } @@ -1377,7 +1377,7 @@ int32_t ctgGetVgInfosFromHashValue(SCatalog* pCtg, SEpSet* pMgmgEpSet, SCtgTaskR SVgroupInfo* pNewVg = taosMemoryMalloc(sizeof(SVgroupInfo)); if (NULL == pNewVg) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } *pNewVg = *vgInfo; @@ -1403,7 +1403,7 @@ int32_t ctgGetVgInfosFromHashValue(SCatalog* pCtg, SEpSet* pMgmgEpSet, SCtgTaskR } else { res.pRes = pNewVg; if (NULL == taosArrayPush(pCtx->pResList, &res)) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } } } @@ -1535,14 +1535,14 @@ int32_t ctgMakeVgArray(SDBVgInfo* dbInfo) { if (dbInfo->vgHash && NULL == dbInfo->vgArray) { dbInfo->vgArray = taosArrayInit(100, sizeof(SVgroupInfo)); if (NULL == dbInfo->vgArray) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } void* pIter = taosHashIterate(dbInfo->vgHash, NULL); while (pIter) { if (NULL == taosArrayPush(dbInfo->vgArray, pIter)) { taosHashCancelIterate(dbInfo->vgHash, pIter); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } pIter = taosHashIterate(dbInfo->vgHash, pIter); @@ -1560,7 +1560,7 @@ int32_t ctgCloneVgInfo(SDBVgInfo* src, SDBVgInfo** dst) { *dst = taosMemoryMalloc(sizeof(SDBVgInfo)); if (NULL == *dst) { qError("malloc %d failed", (int32_t)sizeof(SDBVgInfo)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } TAOS_MEMCPY(*dst, src, sizeof(SDBVgInfo)); @@ -1570,7 +1570,7 @@ int32_t ctgCloneVgInfo(SDBVgInfo* src, SDBVgInfo** dst) { if (NULL == (*dst)->vgHash) { qError("taosHashInit %d failed", (int32_t)hashSize); taosMemoryFreeClear(*dst); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } int32_t* vgId = NULL; @@ -1605,7 +1605,7 @@ int32_t ctgCloneMetaOutput(STableMetaOutput* output, STableMetaOutput** pOutput) *pOutput = taosMemoryMalloc(sizeof(STableMetaOutput)); if (NULL == *pOutput) { qError("malloc %d failed", (int32_t)sizeof(STableMetaOutput)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } TAOS_MEMCPY(*pOutput, output, sizeof(STableMetaOutput)); @@ -1622,7 +1622,7 @@ int32_t ctgCloneMetaOutput(STableMetaOutput* output, STableMetaOutput** pOutput) if (NULL == (*pOutput)->tbMeta) { qError("malloc %d failed", (int32_t)sizeof(STableMetaOutput)); taosMemoryFreeClear(*pOutput); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } TAOS_MEMCPY((*pOutput)->tbMeta, output->tbMeta, metaSize); @@ -1646,7 +1646,7 @@ int32_t ctgCloneTableIndex(SArray* pIndex, SArray** pRes) { int32_t num = taosArrayGetSize(pIndex); *pRes = taosArrayInit(num, sizeof(STableIndexInfo)); if (NULL == *pRes) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } for (int32_t i = 0; i < num; ++i) { @@ -1657,7 +1657,7 @@ int32_t ctgCloneTableIndex(SArray* pIndex, SArray** pRes) { } pInfo = taosArrayPush(*pRes, pInfo); if (NULL == pInfo) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } pInfo->expr = taosStrdup(pInfo->expr); if (NULL == pInfo->expr) { @@ -1707,7 +1707,7 @@ int32_t ctgAddFetch(SArray** pFetchs, int32_t dbIdx, int32_t tbIdx, int32_t* fet if (NULL == (*pFetchs)) { *pFetchs = taosArrayInit(CTG_DEFAULT_FETCH_NUM, sizeof(SCtgFetch)); if (NULL == *pFetchs) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } } @@ -1719,7 +1719,7 @@ int32_t ctgAddFetch(SArray** pFetchs, int32_t dbIdx, int32_t tbIdx, int32_t* fet fetch.flag = flag; if (NULL == taosArrayPush(*pFetchs, &fetch)) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } return TSDB_CODE_SUCCESS; @@ -2579,7 +2579,7 @@ int32_t ctgBuildViewNullRes(SCtgTask* pTask, SCtgViewsCtx* pCtx) { for (int32_t m = 0; m < viewNum; ++m) { if (NULL == taosArrayPush(pCtx->pResList, &(SMetaData){0})) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } } } @@ -2603,7 +2603,7 @@ int32_t dupViewMetaFromRsp(SViewMetaRsp* pRsp, SViewMeta* pViewMeta) { pViewMeta->numOfCols = pRsp->numOfCols; pViewMeta->pSchema = taosMemoryMalloc(pViewMeta->numOfCols * sizeof(SSchema)); if (pViewMeta->pSchema == NULL) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } TAOS_MEMCPY(pViewMeta->pSchema, pRsp->pSchema, pViewMeta->numOfCols * sizeof(SSchema)); @@ -2679,7 +2679,7 @@ int32_t ctgAddTSMAFetch(SArray** pFetchs, int32_t dbIdx, int32_t tbIdx, int32_t* if (NULL == (*pFetchs)) { *pFetchs = taosArrayInit(CTG_DEFAULT_FETCH_NUM, sizeof(SCtgTSMAFetch)); if (NULL == *pFetchs) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } } @@ -2696,7 +2696,7 @@ int32_t ctgAddTSMAFetch(SArray** pFetchs, int32_t dbIdx, int32_t tbIdx, int32_t* } if (NULL == taosArrayPush(*pFetchs, &fetch)) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } return TSDB_CODE_SUCCESS; diff --git a/source/libs/command/src/command.c b/source/libs/command/src/command.c index eb74b81141..d24f830ea7 100644 --- a/source/libs/command/src/command.c +++ b/source/libs/command/src/command.c @@ -692,7 +692,7 @@ static int32_t setCreateTBResultIntoDataBlock(SSDataBlock* pBlock, SDbCfgInfo* p SColumnInfoData* pCol2 = taosArrayGet(pBlock->pDataBlock, 1); char* buf2 = taosMemoryMalloc(SHOW_CREATE_TB_RESULT_FIELD2_LEN); if (NULL == buf2) { - QRY_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + QRY_ERR_RET(terrno); } int32_t len = 0; @@ -864,7 +864,7 @@ static int32_t buildLocalVariablesResultDataBlock(SSDataBlock** pOutput) { pBlock->pDataBlock = taosArrayInit(SHOW_LOCAL_VARIABLES_RESULT_COLS, sizeof(SColumnInfoData)); if (NULL == pBlock->pDataBlock) { taosMemoryFree(pBlock); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SColumnInfoData infoData = {0}; diff --git a/source/libs/command/src/explain.c b/source/libs/command/src/explain.c index 886425c69b..b82bba250f 100644 --- a/source/libs/command/src/explain.c +++ b/source/libs/command/src/explain.c @@ -135,7 +135,7 @@ int32_t qExplainInitCtx(SExplainCtx **pCtx, SHashObj *groupHash, bool verbose, d char *tbuf = taosMemoryMalloc(TSDB_EXPLAIN_RESULT_ROW_SIZE); if (NULL == tbuf) { qError("malloc size %d failed", TSDB_EXPLAIN_RESULT_ROW_SIZE); - QRY_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + QRY_ERR_JRET(terrno); } ctx->mode = mode; @@ -184,7 +184,7 @@ int32_t qExplainGenerateResNodeExecInfo(SPhysiNode *pNode, SArray **pExecInfo, S *pExecInfo = taosArrayInit(group->nodeNum, sizeof(SExplainExecInfo)); if (NULL == (*pExecInfo)) { qError("taosArrayInit %d explainExecInfo failed", group->nodeNum); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SExplainRsp *rsp = NULL; @@ -302,7 +302,7 @@ int32_t qExplainResAppendRow(SExplainCtx *ctx, char *tbuf, int32_t len, int32_t row.buf = taosMemoryMalloc(len); if (NULL == row.buf) { qError("taosMemoryMalloc %d failed", len); - QRY_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + QRY_ERR_RET(terrno); } memcpy(row.buf, tbuf, len); @@ -313,7 +313,7 @@ int32_t qExplainResAppendRow(SExplainCtx *ctx, char *tbuf, int32_t len, int32_t if (NULL == taosArrayPush(ctx->rows, &row)) { qError("taosArrayPush row to explain res rows failed"); taosMemoryFree(row.buf); - QRY_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + QRY_ERR_RET(terrno); } return TSDB_CODE_SUCCESS; @@ -1971,7 +1971,7 @@ int32_t qExplainGetRspFromCtx(void *ctx, SRetrieveTableRsp **pRsp) { SRetrieveTableRsp *rsp = (SRetrieveTableRsp *)taosMemoryCalloc(1, rspSize); if (NULL == rsp) { qError("malloc SRetrieveTableRsp failed, size:%d", rspSize); - QRY_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + QRY_ERR_JRET(terrno); } rsp->completed = 1; @@ -2018,7 +2018,7 @@ int32_t qExplainPrepareCtx(SQueryPlan *pDag, SExplainCtx **pCtx) { taosHashInit(EXPLAIN_MAX_GROUP_NUM, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), false, HASH_NO_LOCK); if (NULL == groupHash) { qError("groupHash %d failed", EXPLAIN_MAX_GROUP_NUM); - QRY_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + QRY_ERR_RET(terrno); } QRY_ERR_JRET( @@ -2128,7 +2128,7 @@ int32_t qExplainUpdateExecInfo(SExplainCtx *pCtx, SExplainRsp *pRspMsg, int32_t group->nodeExecInfo = taosArrayInit(group->nodeNum, sizeof(SExplainRsp)); if (NULL == group->nodeExecInfo) { qError("taosArrayInit %d explainExecInfo failed", group->nodeNum); - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; TAOS_CHECK_ERRNO(code); } @@ -2149,7 +2149,7 @@ int32_t qExplainUpdateExecInfo(SExplainCtx *pCtx, SExplainRsp *pRspMsg, int32_t if(taosArrayPush(group->nodeExecInfo, pRspMsg) == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; TAOS_CHECK_ERRNO(code); } diff --git a/source/libs/executor/src/exchangeoperator.c b/source/libs/executor/src/exchangeoperator.c index 5352ea37ae..fa6f61406c 100644 --- a/source/libs/executor/src/exchangeoperator.c +++ b/source/libs/executor/src/exchangeoperator.c @@ -208,7 +208,7 @@ static SSDataBlock* doLoadRemoteDataImpl(SOperatorInfo* pOperator) { if (p != NULL) { void* tmp = taosArrayPush(pExchangeInfo->pRecycledBlocks, &p); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code)); pTaskInfo->code = code; T_LONG_JMP(pTaskInfo->env, code); @@ -308,7 +308,7 @@ _end: static int32_t initDataSource(int32_t numOfSources, SExchangeInfo* pInfo, const char* id) { pInfo->pSourceDataInfo = taosArrayInit(numOfSources, sizeof(SSourceDataInfo)); if (pInfo->pSourceDataInfo == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (pInfo->dynamicOp) { @@ -329,7 +329,7 @@ static int32_t initDataSource(int32_t numOfSources, SExchangeInfo* pInfo, const SSourceDataInfo* pDs = taosArrayPush(pInfo->pSourceDataInfo, &dataInfo); if (pDs == NULL) { taosArrayDestroyEx(pInfo->pSourceDataInfo, freeSourceDataInfo); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -355,7 +355,7 @@ static int32_t initExchangeOperator(SExchangePhysiNode* pExNode, SExchangeInfo* pInfo->pSources = taosArrayInit(numOfSources, sizeof(SDownstreamSourceNode)); if (pInfo->pSources == NULL) { qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(TSDB_CODE_OUT_OF_MEMORY)); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (pExNode->node.dynamicOp) { @@ -375,7 +375,7 @@ static int32_t initExchangeOperator(SExchangePhysiNode* pExNode, SExchangeInfo* void* tmp = taosArrayPush(pInfo->pSources, pNode); if (!tmp) { qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(terrno)); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SExchangeSrcIndex idx = {.srcIdx = i, .inUseIdx = -1}; int32_t code = @@ -529,8 +529,6 @@ int32_t loadRemoteDataCallback(void* param, SDataBuf* pMsg, int32_t code) { } int32_t index = pWrapper->sourceIndex; - int64_t* pRpcHandle = taosArrayGet(pExchangeInfo->pFetchRpcHandles, index); - *pRpcHandle = -1; SSourceDataInfo* pSourceDataInfo = taosArrayGet(pExchangeInfo->pSourceDataInfo, index); if (!pSourceDataInfo) { return terrno; @@ -579,13 +577,13 @@ int32_t loadRemoteDataCallback(void* param, SDataBuf* pMsg, int32_t code) { int32_t buildTableScanOperatorParam(SOperatorParam** ppRes, SArray* pUidList, int32_t srcOpType, bool tableSeq) { *ppRes = taosMemoryMalloc(sizeof(SOperatorParam)); if (NULL == *ppRes) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } STableScanOperatorParam* pScan = taosMemoryMalloc(sizeof(STableScanOperatorParam)); if (NULL == pScan) { taosMemoryFreeClear(*ppRes); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pScan->pUidList = taosArrayDup(pUidList, NULL); @@ -1045,7 +1043,7 @@ int32_t addSingleExchangeSource(SOperatorInfo* pOperator, SExchangeOperatorBasic void* tmp = taosArrayPush(pExchangeInfo->pSourceDataInfo, &dataInfo); if (!tmp) { qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(TSDB_CODE_OUT_OF_MEMORY)); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pIdx->inUseIdx = taosArrayGetSize(pExchangeInfo->pSourceDataInfo) - 1; } else { diff --git a/source/libs/executor/src/executil.c b/source/libs/executor/src/executil.c index 01104dfe21..117a30ade2 100644 --- a/source/libs/executor/src/executil.c +++ b/source/libs/executor/src/executil.c @@ -622,14 +622,14 @@ int32_t getColInfoResultForGroupby(void* pVnode, SNodeList* group, STableListInf tagFilterAssist ctx = {0}; ctx.colHash = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_SMALLINT), false, HASH_NO_LOCK); if (ctx.colHash == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto end; } ctx.index = 0; ctx.cInfoList = taosArrayInit(4, sizeof(SColumnInfo)); if (ctx.cInfoList == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto end; } @@ -766,7 +766,7 @@ int32_t getColInfoResultForGroupby(void* pVnode, SNodeList* group, STableListInf pTableListInfo->remainGroups = taosHashInit(rows, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_NO_LOCK); if (pTableListInfo->remainGroups == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto end; } } @@ -1024,7 +1024,7 @@ static int32_t optimizeTbnameInCondImpl(void* pVnode, SArray* pExistedUidList, S uHash = taosHashInit(numOfExisted / 0.7, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_NO_LOCK); if (!uHash) { qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(TSDB_CODE_OUT_OF_MEMORY)); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } for (int i = 0; i < numOfExisted; i++) { @@ -1052,7 +1052,7 @@ static int32_t optimizeTbnameInCondImpl(void* pVnode, SArray* pExistedUidList, S STUidTagInfo s = {.uid = uid, .name = name, .pTagVal = NULL}; void* tmp = taosArrayPush(pExistedUidList, &s); if (!tmp) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } } else { @@ -1193,13 +1193,13 @@ static int32_t doSetQualifiedUid(STableListInfo* pListInfo, SArray* pUidList, co info.uid = uid; void* p = taosArrayPush(pListInfo->pTableList, &info); if (p == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (addUid) { void* tmp = taosArrayPush(pUidList, &uid); if (tmp == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } } @@ -1465,7 +1465,7 @@ _end: void* p = taosArrayPush(pListInfo->pTableList, &info); if (p == NULL) { taosArrayDestroy(pUidList); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } qTrace("tagfilter get uid:%" PRIu64 ", %s", info.uid, idstr); @@ -1652,7 +1652,7 @@ int32_t extractColMatchInfo(SNodeList* pNodeList, SDataBlockDescNode* pOutputNod SArray* pList = taosArrayInit(numOfCols, sizeof(SColMatchItem)); if (pList == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; return code; } @@ -2643,7 +2643,7 @@ static int32_t sortTableGroup(STableListInfo* pTableListInfo) { pTableListInfo->groupOffset = taosMemoryMalloc(sizeof(int32_t) * pTableListInfo->numOfOuputGroups); if (pTableListInfo->groupOffset == NULL) { taosArrayDestroy(pList); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } memcpy(pTableListInfo->groupOffset, taosArrayGet(pList, 0), sizeof(int32_t) * pTableListInfo->numOfOuputGroups); @@ -2666,7 +2666,7 @@ int32_t buildGroupIdMapForAllTables(STableListInfo* pTableListInfo, SReadHandle* pTableListInfo->remainGroups = taosHashInit(numOfTables, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_NO_LOCK); if (pTableListInfo->remainGroups == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } for (int i = 0; i < numOfTables; i++) { diff --git a/source/libs/executor/src/executor.c b/source/libs/executor/src/executor.c index cd43c5c99e..c3228f59bf 100644 --- a/source/libs/executor/src/executor.c +++ b/source/libs/executor/src/executor.c @@ -488,7 +488,7 @@ int32_t qUpdateTableListForStreamScanner(qTaskInfo_t tinfo, const SArray* tableI keyBuf = taosMemoryMalloc(bufLen); if (keyBuf == NULL) { taosArrayDestroy(qa); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -877,7 +877,7 @@ int32_t qAppendTaskStopInfo(SExecTaskInfo* pTaskInfo, SExchangeOpStopInfo* pInfo if (!tmp) { qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(TSDB_CODE_OUT_OF_MEMORY)); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return TSDB_CODE_SUCCESS; } diff --git a/source/libs/executor/src/executorInt.c b/source/libs/executor/src/executorInt.c index 4fef157984..b5c05c8558 100644 --- a/source/libs/executor/src/executorInt.c +++ b/source/libs/executor/src/executorInt.c @@ -1137,7 +1137,7 @@ int32_t createDataSinkParam(SDataSinkNode* pNode, void** pParam, SExecTaskInfo* pDeleterParam->pUidList = taosArrayInit(numOfTables, sizeof(uint64_t)); if (NULL == pDeleterParam->pUidList) { taosMemoryFree(pDeleterParam); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } for (int32_t i = 0; i < numOfTables; ++i) { @@ -1151,7 +1151,7 @@ int32_t createDataSinkParam(SDataSinkNode* pNode, void** pParam, SExecTaskInfo* if (!tmp) { taosArrayDestroy(pDeleterParam->pUidList); taosMemoryFree(pDeleterParam); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } diff --git a/source/libs/executor/src/filloperator.c b/source/libs/executor/src/filloperator.c index 76b41ca99a..d530382f7c 100644 --- a/source/libs/executor/src/filloperator.c +++ b/source/libs/executor/src/filloperator.c @@ -403,7 +403,7 @@ static int32_t createPrimaryTsExprIfNeeded(SFillOperatorInfo* pInfo, SFillPhysiN SExprInfo* pExpr = taosMemoryRealloc(pExprSupp->pExprInfo, (pExprSupp->numOfExprs + 1) * sizeof(SExprInfo)); if (pExpr == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = createExprFromTargetNode(&pExpr[pExprSupp->numOfExprs], (STargetNode*)pPhyFillNode->pWStartTs); diff --git a/source/libs/executor/src/groupcacheoperator.c b/source/libs/executor/src/groupcacheoperator.c index 17e18710f2..06706b57ee 100644 --- a/source/libs/executor/src/groupcacheoperator.c +++ b/source/libs/executor/src/groupcacheoperator.c @@ -45,7 +45,7 @@ static int32_t initGroupColsInfo(SGroupColsInfo* pCols, bool grpColsMayBeNull, S pCols->withNull = grpColsMayBeNull; pCols->pColsInfo = taosMemoryMalloc(pCols->colNum * sizeof(SGroupColInfo)); if (NULL == pCols->pColsInfo) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t i = 0; @@ -67,7 +67,7 @@ static int32_t initGroupColsInfo(SGroupColsInfo* pCols, bool grpColsMayBeNull, S if (pCols->colNum > 1) { pCols->pBuf = taosMemoryMalloc(pCols->bufSize); if (NULL == pCols->pBuf) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -227,7 +227,7 @@ static int32_t acquireFdFromFileCtx(SGcFileCacheCtx* pFileCtx, int32_t fileId, S if (NULL == pFileCtx->pCacheFile) { pFileCtx->pCacheFile = taosHashInit(10, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), false, HASH_ENTRY_LOCK); if (NULL == pFileCtx->pCacheFile) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } taosHashSetFreeFp(pFileCtx->pCacheFile, freeSGroupCacheFileInfo); } @@ -461,7 +461,7 @@ static int32_t addBlkToBufCache(struct SOperatorInfo* pOperator, SSDataBlock* pB pBufInfo->pBuf = taosMemoryMalloc(bufSize); if (NULL == pBufInfo->pBuf) { qError("group cache add block to cache failed, size:%" PRId64, bufSize); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } QRY_ERR_RET(blockDataToBuf(pBufInfo->pBuf, pBlock)); @@ -508,7 +508,7 @@ void blockDataDeepClear(SSDataBlock* pDataBlock) { static int32_t buildGroupCacheBaseBlock(SSDataBlock** ppDst, SSDataBlock* pSrc) { *ppDst = taosMemoryMalloc(sizeof(*pSrc)); if (NULL == *ppDst) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (*ppDst)->pBlockAgg = NULL; (*ppDst)->pDataBlock = taosArrayDup(pSrc->pDataBlock, NULL); @@ -578,7 +578,7 @@ static int32_t readBlockFromDisk(SGroupCacheOperatorInfo* pGCache, SGroupCacheDa *ppBuf = taosMemoryMalloc(pBasic->bufSize); if (NULL == *ppBuf) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _return; } @@ -643,7 +643,7 @@ static int32_t addNewGroupToVgHash(SOperatorInfo* pOperator, SSHashObj* pHash, S if (NULL == pVgCtx) { SArray* pList = taosArrayInit(10, sizeof(*pNew)); if (NULL == pList) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (NULL == taosArrayPush(pList, pNew)) { QRY_ERR_RET(terrno); @@ -798,7 +798,7 @@ static int32_t addFileRefTableNum(SGcFileCacheCtx* pFileCtx, int32_t fileId, int if (NULL == pFileCtx->pCacheFile) { pFileCtx->pCacheFile = taosHashInit(10, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), false, HASH_ENTRY_LOCK); if (NULL == pFileCtx->pCacheFile) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } taosHashSetFreeFp(pFileCtx->pCacheFile, freeSGroupCacheFileInfo); } @@ -913,7 +913,7 @@ static int32_t addNewGroupData(struct SOperatorInfo* pOperator, SOperatorParam* taosWLockLatch(&pCtx->grpLock); if (NULL == taosArrayPush(pCtx->pNewGrpList, &newGroup)) { taosWUnLockLatch(&pCtx->grpLock); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } taosWUnLockLatch(&pCtx->grpLock); @@ -1248,12 +1248,12 @@ static int32_t initGroupCacheBlockCache(SGroupCacheOperatorInfo* pInfo) { SGcBlkCacheInfo* pCache = &pInfo->blkCache; pCache->pDirtyBlk = taosHashInit(10, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_ENTRY_LOCK); if (NULL == pCache->pDirtyBlk) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } taosHashSetFreeFp(pCache->pDirtyBlk, freeGcBlkBufInfo); pCache->pReadBlk = taosHashInit(10, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_ENTRY_LOCK); if (NULL == pCache->pReadBlk) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pCache->writeDownstreamId = -1; @@ -1421,30 +1421,30 @@ static int32_t initGroupCacheDownstreamCtx(SOperatorInfo* pOperator) { pCtx->pNewGrpList = taosArrayInit(10, sizeof(SGcNewGroupInfo)); if (NULL == pCtx->pNewGrpList) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (!pInfo->globalGrp) { pCtx->pGrpHash = taosHashInit(32, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_ENTRY_LOCK); if (pCtx->pGrpHash == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } taosHashSetFreeFp(pCtx->pGrpHash, freeRemoveGroupCacheData); } pCtx->pSessions = taosHashInit(20, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_ENTRY_LOCK); if (pCtx->pSessions == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } taosHashSetFreeFp(pCtx->pSessions, freeSGcSessionCtx); pCtx->pFreeBlock = taosArrayInit(10, POINTER_BYTES); if (NULL == pCtx->pFreeBlock) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pCtx->pWaitSessions = taosHashInit(20, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_ENTRY_LOCK); if (pCtx->pWaitSessions == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (void)snprintf(pCtx->fileCtx.baseFilename, sizeof(pCtx->fileCtx.baseFilename) - 1, "%s/gc_%d_%" PRIx64 "_%" PRIu64 "_%d", @@ -1539,7 +1539,7 @@ int32_t createGroupCacheOperatorInfo(SOperatorInfo** pDownstream, int32_t numOfD if (pInfo->globalGrp) { pInfo->pGrpHash = taosHashInit(32, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_ENTRY_LOCK); if (pInfo->pGrpHash == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _error; } taosHashSetFreeFp(pInfo->pGrpHash, freeRemoveGroupCacheData); diff --git a/source/libs/executor/src/groupoperator.c b/source/libs/executor/src/groupoperator.c index e4ace6b83a..83a579615c 100644 --- a/source/libs/executor/src/groupoperator.c +++ b/source/libs/executor/src/groupoperator.c @@ -94,7 +94,7 @@ static void destroyGroupOperatorInfo(void* param) { static int32_t initGroupOptrInfo(SArray** pGroupColVals, int32_t* keyLen, char** keyBuf, const SArray* pGroupColList) { *pGroupColVals = taosArrayInit(4, sizeof(SGroupKeys)); if ((*pGroupColVals) == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t numOfGroupCols = taosArrayGetSize(pGroupColList); @@ -117,7 +117,7 @@ static int32_t initGroupOptrInfo(SArray** pGroupColVals, int32_t* keyLen, char** void* tmp = taosArrayPush((*pGroupColVals), &key); if (!tmp) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -1555,7 +1555,7 @@ static void destroyStreamPartitionOperatorInfo(void* param) { } int32_t initParDownStream(SOperatorInfo* downstream, SPartitionBySupporter* pParSup, SExprSupp* pExpr, - SExprSupp* pTbnameExpr) { + SExprSupp* pTbnameExpr, SExprSupp* pResExprSupp, int32_t* pPkColIndex) { int32_t code = TSDB_CODE_SUCCESS; int32_t lino = 0; SStorageAPI* pAPI = &downstream->pTaskInfo->storageAPI; @@ -1568,6 +1568,11 @@ int32_t initParDownStream(SOperatorInfo* downstream, SPartitionBySupporter* pPar pScanInfo->partitionSup = *pParSup; pScanInfo->pPartScalarSup = pExpr; pScanInfo->pPartTbnameSup = pTbnameExpr; + for (int32_t j = 0; j < pResExprSupp->numOfExprs; j++) { + if (pScanInfo->primaryKeyIndex == pResExprSupp->pExprInfo[j].base.pParam[0].pCol->slotId) { + *pPkColIndex = j; + } + } if (!pScanInfo->pUpdateInfo) { code = pAPI->stateStore.updateInfoInit(60000, TSDB_TIME_PRECISION_MILLI, 0, pScanInfo->igCheckUpdate, pScanInfo->pkColType, pScanInfo->pkColLen, &pScanInfo->pUpdateInfo); @@ -1729,7 +1734,8 @@ int32_t createStreamPartitionOperatorInfo(SOperatorInfo* downstream, SStreamPart optrDefaultBufFn, NULL, optrDefaultGetNextExtFn, NULL); setOperatorStreamStateFn(pOperator, streamOpReleaseState, streamOpReloadState); - code = initParDownStream(downstream, &pInfo->partitionSup, &pInfo->scalarSup, &pInfo->tbnameCalSup); + pInfo->basic.primaryPkIndex = -1; + code = initParDownStream(downstream, &pInfo->partitionSup, &pInfo->scalarSup, &pInfo->tbnameCalSup, &pOperator->exprSupp, &pInfo->basic.primaryPkIndex); QUERY_CHECK_CODE(code, lino, _error); code = appendDownstream(pOperator, &downstream, 1); @@ -1752,7 +1758,7 @@ int32_t extractColumnInfo(SNodeList* pNodeList, SArray** pArrayRes) { size_t numOfCols = LIST_LENGTH(pNodeList); SArray* pList = taosArrayInit(numOfCols, sizeof(SColumn)); if (pList == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; (*pArrayRes) = NULL; QUERY_CHECK_CODE(code, lino, _end); } diff --git a/source/libs/executor/src/hashjoinoperator.c b/source/libs/executor/src/hashjoinoperator.c index 7f13608653..347c48b4d1 100644 --- a/source/libs/executor/src/hashjoinoperator.c +++ b/source/libs/executor/src/hashjoinoperator.c @@ -155,7 +155,7 @@ static int32_t hJoinInitKeyColsInfo(SHJoinTableCtx* pTable, SNodeList* pList) { pTable->keyCols = taosMemoryMalloc(pTable->keyNum * sizeof(SHJoinColInfo)); if (NULL == pTable->keyCols) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int64_t bufSize = 0; @@ -173,7 +173,7 @@ static int32_t hJoinInitKeyColsInfo(SHJoinTableCtx* pTable, SNodeList* pList) { if (pTable->keyNum > 1) { pTable->keyBuf = taosMemoryMalloc(bufSize); if (NULL == pTable->keyBuf) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -212,7 +212,7 @@ static int32_t hJoinInitValColsInfo(SHJoinTableCtx* pTable, SNodeList* pList) { pTable->valCols = taosMemoryMalloc(pTable->valNum * sizeof(SHJoinColInfo)); if (NULL == pTable->valCols) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t i = 0; @@ -260,7 +260,7 @@ static int32_t hJoinInitValColsInfo(SHJoinTableCtx* pTable, SNodeList* pList) { static int32_t hJoinInitPrimKeyInfo(SHJoinTableCtx* pTable, int32_t slotId) { pTable->primCol = taosMemoryMalloc(sizeof(SHJoinColMap)); if (NULL == pTable->primCol) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pTable->primCol->srcSlot = slotId; @@ -413,7 +413,7 @@ static FORCE_INLINE int32_t hJoinAddPageToBufs(SArray* pRowBufs) { page.offset = 0; page.data = taosMemoryMalloc(page.pageSize); if (NULL == page.data) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (NULL == taosArrayPush(pRowBufs, &page)) { @@ -425,7 +425,7 @@ static FORCE_INLINE int32_t hJoinAddPageToBufs(SArray* pRowBufs) { static int32_t hJoinInitBufPages(SHJoinOperatorInfo* pInfo) { pInfo->pRowBufs = taosArrayInit(32, sizeof(SBufPageInfo)); if (NULL == pInfo->pRowBufs) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return hJoinAddPageToBufs(pInfo->pRowBufs); @@ -784,13 +784,13 @@ static int32_t hJoinAddRowToHashImpl(SHJoinOperatorInfo* pJoin, SGroupData* pGro if (NULL == pGroup) { group.rows = taosMemoryMalloc(sizeof(SBufRowInfo)); if (NULL == group.rows) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pRow = group.rows; } else { pRow = taosMemoryMalloc(sizeof(SBufRowInfo)); if (NULL == pRow) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } diff --git a/source/libs/executor/src/querytask.c b/source/libs/executor/src/querytask.c index cb0ebcff70..4821461ca2 100644 --- a/source/libs/executor/src/querytask.c +++ b/source/libs/executor/src/querytask.c @@ -54,7 +54,7 @@ int32_t doCreateTask(uint64_t queryId, uint64_t taskId, int32_t vgId, EOPTR_EXEC p->pResultBlockList = taosArrayInit(128, POINTER_BYTES); if (p->stopInfo.pStopInfo == NULL || p->pResultBlockList == NULL) { doDestroyTask(p); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } p->storageAPI = *pAPI; diff --git a/source/libs/executor/src/scanoperator.c b/source/libs/executor/src/scanoperator.c index b6b5c5484e..76e4f8ba56 100644 --- a/source/libs/executor/src/scanoperator.c +++ b/source/libs/executor/src/scanoperator.c @@ -191,7 +191,7 @@ static int32_t insertTableToScanIgnoreList(STableScanInfo* pTableScanInfo, uint6 pTableScanInfo->pIgnoreTables = taosHashInit(tableNum, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), true, HASH_NO_LOCK); if (NULL == pTableScanInfo->pIgnoreTables) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -1169,7 +1169,7 @@ static int32_t createTableListInfoFromParam(SOperatorInfo* pOperator) { info.uid = *pUid; void* p = taosArrayPush(pListInfo->pTableList, &info); if (p == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } tableIdx++; @@ -4078,6 +4078,7 @@ int32_t createStreamScanOperatorInfo(SReadHandle* pHandle, STableScanPhysiNode* SDataType pkType = {0}; pInfo->primaryKeyIndex = -1; + pInfo->basic.primaryPkIndex = -1; int32_t numOfOutput = taosArrayGetSize(pInfo->matchInfo.pList); pColIds = taosArrayInit(numOfOutput, sizeof(int16_t)); QUERY_CHECK_NULL(pColIds, code, lino, _error, terrno); @@ -4095,6 +4096,7 @@ int32_t createStreamScanOperatorInfo(SReadHandle* pHandle, STableScanPhysiNode* } if (id->isPk) { pInfo->primaryKeyIndex = id->dstSlotId; + pInfo->basic.primaryPkIndex = id->dstSlotId; pkType = id->dataType; } } diff --git a/source/libs/executor/src/sortoperator.c b/source/libs/executor/src/sortoperator.c index 27ae5e7281..d12f6dd94c 100644 --- a/source/libs/executor/src/sortoperator.c +++ b/source/libs/executor/src/sortoperator.c @@ -735,7 +735,10 @@ int32_t doGroupSort(SOperatorInfo* pOperator, SSDataBlock** pResBlock) { code = getGroupSortedBlockData(pInfo->pCurrSortHandle, pInfo->binfo.pRes, pOperator->resultInfo.capacity, pInfo->matchInfo.pList, pInfo, &pBlock); - if (pBlock != NULL && (code == 0)) { + if (code != TSDB_CODE_SUCCESS) { + return code; + } + if (pBlock != NULL) { pBlock->info.id.groupId = pInfo->currGroupId; pOperator->resultInfo.totalRows += pBlock->info.rows; *pResBlock = pBlock; @@ -745,6 +748,9 @@ int32_t doGroupSort(SOperatorInfo* pOperator, SSDataBlock** pResBlock) { (void) finishSortGroup(pOperator); pInfo->currGroupId = pInfo->prefetchedSortInput->info.id.groupId; code = beginSortGroup(pOperator); + if (code) { + return code; + } } else if (pInfo->childOpStatus == CHILD_OP_FINISHED) { (void) finishSortGroup(pOperator); setOperatorCompleted(pOperator); diff --git a/source/libs/executor/src/streamcountwindowoperator.c b/source/libs/executor/src/streamcountwindowoperator.c index 524ef6ee2f..adf764a8c5 100644 --- a/source/libs/executor/src/streamcountwindowoperator.c +++ b/source/libs/executor/src/streamcountwindowoperator.c @@ -582,7 +582,7 @@ int32_t deleteCountWinState(SStreamAggSupporter* pAggSup, SSDataBlock* pBlock, S int32_t lino = 0; SArray* pWins = taosArrayInit(16, sizeof(SSessionKey)); if (!pWins) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } @@ -880,7 +880,7 @@ int32_t createStreamCountAggOperatorInfo(SOperatorInfo* downstream, SPhysiNode* pInfo->dataVersion = 0; pInfo->historyWins = taosArrayInit(4, sizeof(SSessionKey)); if (!pInfo->historyWins) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _error); } diff --git a/source/libs/executor/src/streameventwindowoperator.c b/source/libs/executor/src/streameventwindowoperator.c index 735b470325..a325616bd3 100644 --- a/source/libs/executor/src/streameventwindowoperator.c +++ b/source/libs/executor/src/streameventwindowoperator.c @@ -695,7 +695,7 @@ static int32_t doStreamEventAggNext(SOperatorInfo* pOperator, SSDataBlock** ppRe if (pInfo->isHistoryOp) { SArray* pHisWins = taosArrayInit(16, sizeof(SEventWindowInfo)); if (!pHisWins) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } diff --git a/source/libs/executor/src/streamfilloperator.c b/source/libs/executor/src/streamfilloperator.c index 58e57eb88b..4d5f597ab6 100644 --- a/source/libs/executor/src/streamfilloperator.c +++ b/source/libs/executor/src/streamfilloperator.c @@ -858,7 +858,7 @@ static int32_t doDeleteFillResultImpl(SOperatorInfo* pOperator, TSKEY startTs, T }; void* tmp = taosArrayPush(pInfo->pFillInfo->delRanges, &tw); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } @@ -1264,13 +1264,13 @@ SStreamFillInfo* initStreamFillInfo(SStreamFillSupporter* pFillSup, SSDataBlock* if (pFillSup->type == TSDB_FILL_LINEAR) { pFillInfo->pLinearInfo->pEndPoints = taosArrayInit(pFillSup->numOfAllCols, sizeof(SPoint)); if (!pFillInfo->pLinearInfo->pEndPoints) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } pFillInfo->pLinearInfo->pNextEndPoints = taosArrayInit(pFillSup->numOfAllCols, sizeof(SPoint)); if (!pFillInfo->pLinearInfo->pNextEndPoints) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } @@ -1285,7 +1285,7 @@ SStreamFillInfo* initStreamFillInfo(SStreamFillSupporter* pFillSup, SSDataBlock* void* tmpRes = taosArrayPush(pFillInfo->pLinearInfo->pEndPoints, &value); if (!tmpRes) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } @@ -1297,7 +1297,7 @@ SStreamFillInfo* initStreamFillInfo(SStreamFillSupporter* pFillSup, SSDataBlock* tmpRes = taosArrayPush(pFillInfo->pLinearInfo->pNextEndPoints, &value); if (!tmpRes) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } @@ -1331,7 +1331,7 @@ SStreamFillInfo* initStreamFillInfo(SStreamFillSupporter* pFillSup, SSDataBlock* pFillInfo->type = pFillSup->type; pFillInfo->delRanges = taosArrayInit(16, sizeof(STimeRange)); if (!pFillInfo->delRanges) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } diff --git a/source/libs/executor/src/streamtimewindowoperator.c b/source/libs/executor/src/streamtimewindowoperator.c index b9484decdc..09bf73c1ee 100644 --- a/source/libs/executor/src/streamtimewindowoperator.c +++ b/source/libs/executor/src/streamtimewindowoperator.c @@ -157,7 +157,7 @@ static int32_t savePullWindow(SPullWindowInfo* pPullInfo, SArray* pPullWins) { } } if (taosArrayInsert(pPullWins, index, pPullInfo) == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return TSDB_CODE_SUCCESS; } @@ -298,7 +298,7 @@ static int32_t doDeleteWindows(SOperatorInfo* pOperator, SInterval* pInterval, S if (pUpWins) { void* tmp = taosArrayPush(pUpWins, &winRes); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } @@ -541,14 +541,21 @@ void reloadFromDownStream(SOperatorInfo* downstream, SStreamIntervalOperatorInfo pInfo->pUpdateInfo = pScanInfo->pUpdateInfo; } -int32_t initIntervalDownStream(SOperatorInfo* downstream, uint16_t type, SStreamIntervalOperatorInfo* pInfo) { +bool hasSrcPrimaryKeyCol(SSteamOpBasicInfo* pInfo) { return pInfo->primaryPkIndex != -1; } + +int32_t initIntervalDownStream(SOperatorInfo* downstream, uint16_t type, SStreamIntervalOperatorInfo* pInfo, struct SSteamOpBasicInfo* pBasic) { int32_t code = TSDB_CODE_SUCCESS; int32_t lino = 0; SStateStore* pAPI = &downstream->pTaskInfo->storageAPI.stateStore; SExecTaskInfo* pTaskInfo = downstream->pTaskInfo; + if (downstream->operatorType == QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION) { + SStreamPartitionOperatorInfo* pScanInfo = downstream->info; + pBasic->primaryPkIndex = pScanInfo->basic.primaryPkIndex; + } + if (downstream->operatorType != QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN) { - return initIntervalDownStream(downstream->pDownstream[0], type, pInfo); + return initIntervalDownStream(downstream->pDownstream[0], type, pInfo, pBasic); } SStreamScanInfo* pScanInfo = downstream->info; @@ -564,7 +571,9 @@ int32_t initIntervalDownStream(SOperatorInfo* downstream, uint16_t type, SStream pScanInfo->twAggSup = pInfo->twAggSup; pScanInfo->pState = pInfo->pState; pInfo->pUpdateInfo = pScanInfo->pUpdateInfo; - pInfo->basic.primaryPkIndex = pScanInfo->primaryKeyIndex; + if (!hasSrcPrimaryKeyCol(pBasic)) { + pBasic->primaryPkIndex = pScanInfo->basic.primaryPkIndex; + } _end: if (code != TSDB_CODE_SUCCESS) { @@ -674,7 +683,7 @@ int32_t addPullWindow(SHashObj* pMap, SWinKey* pWinRes, int32_t size) { for (int32_t i = 0; i < size; i++) { void* tmp = taosArrayPush(childIds, &i); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } @@ -810,13 +819,13 @@ static int32_t processPullOver(SSDataBlock* pBlock, SHashObj* pMap, SHashObj* pF void* tmp = taosArrayPush(pInfo->pMidPullDatas, &winRes); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } else if (savePullWindow(&pull, pPullWins) == TSDB_CODE_SUCCESS) { void* tmp = taosArrayPush(pInfo->pDelWins, &winRes); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } @@ -1013,8 +1022,6 @@ static int32_t getNextQualifiedFinalWindow(SInterval* pInterval, STimeWindow* pN return startPos; } -bool hasSrcPrimaryKeyCol(SSteamOpBasicInfo* pInfo) { return pInfo->primaryPkIndex != -1; } - static int32_t doStreamIntervalAggImpl(SOperatorInfo* pOperator, SSDataBlock* pSDataBlock, uint64_t groupId, SSHashObj* pUpdatedMap, SSHashObj* pDeletedMap) { int32_t code = TSDB_CODE_SUCCESS; @@ -1295,7 +1302,7 @@ int32_t decodeSPullWindowInfoArray(void* buf, SArray* pPullInfos, void** ppBuf) buf = decodeSPullWindowInfo(buf, &item); void* tmp = taosArrayPush(pPullInfos, &item); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } @@ -1410,7 +1417,7 @@ void doStreamIntervalDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOpera SWinKey key = {0}; SArray* pArray = taosArrayInit(0, sizeof(int32_t)); if (!pArray) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } @@ -1422,7 +1429,7 @@ void doStreamIntervalDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOpera buf = taosDecodeFixedI32(buf, &chId); void* tmp = taosArrayPush(pArray, &chId); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } @@ -1470,7 +1477,7 @@ static int32_t copyIntervalDeleteKey(SSHashObj* pMap, SArray* pWins) { void* pKey = tSimpleHashGetKey(pIte, NULL); void* tmp = taosArrayPush(pWins, pKey); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } @@ -1532,7 +1539,7 @@ int32_t copyUpdateResult(SSHashObj** ppWinUpdated, SArray* pUpdated, __compar_fn while ((pIte = tSimpleHashIterate(*ppWinUpdated, pIte, &iter)) != NULL) { void* tmp = taosArrayPush(pUpdated, pIte); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } @@ -2036,7 +2043,8 @@ int32_t createStreamFinalIntervalOperatorInfo(SOperatorInfo* downstream, SPhysiN setOperatorStreamStateFn(pOperator, streamIntervalReleaseState, streamIntervalReloadState); if (pPhyNode->type == QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL || pPhyNode->type == QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL) { - code = initIntervalDownStream(downstream, pPhyNode->type, pInfo); + pInfo->basic.primaryPkIndex = -1; + code = initIntervalDownStream(downstream, pPhyNode->type, pInfo, &pInfo->basic); QUERY_CHECK_CODE(code, lino, _error); } code = appendDownstream(pOperator, &downstream, 1); @@ -2140,6 +2148,7 @@ int32_t initDownStream(SOperatorInfo* downstream, SStreamAggSupporter* pAggSup, if (downstream->operatorType == QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION) { SStreamPartitionOperatorInfo* pScanInfo = downstream->info; pScanInfo->tsColIndex = tsColIndex; + pBasic->primaryPkIndex = pScanInfo->basic.primaryPkIndex; } if (downstream->operatorType != QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN) { @@ -2157,7 +2166,9 @@ int32_t initDownStream(SOperatorInfo* downstream, SStreamAggSupporter* pAggSup, } pScanInfo->twAggSup = *pTwSup; pAggSup->pUpdateInfo = pScanInfo->pUpdateInfo; - pBasic->primaryPkIndex = pScanInfo->primaryKeyIndex; + if (!hasSrcPrimaryKeyCol(pBasic)) { + pBasic->primaryPkIndex = pScanInfo->basic.primaryPkIndex; + } _end: if (code != TSDB_CODE_SUCCESS) { @@ -2304,7 +2315,7 @@ int32_t saveDeleteInfo(SArray* pWins, SSessionKey key) { int32_t lino = 0; void* res = taosArrayPush(pWins, &key); if (!res) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } @@ -3148,7 +3159,7 @@ int32_t getMaxTsWins(const SArray* pAllWins, SArray* pMaxWins) { SSessionKey* pSeKey = &pWinInfo->sessionWin; void* tmp = taosArrayPush(pMaxWins, pSeKey); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } @@ -3162,7 +3173,7 @@ int32_t getMaxTsWins(const SArray* pAllWins, SArray* pMaxWins) { if (preGpId != pSeKey->groupId) { void* tmp = taosArrayPush(pMaxWins, pSeKey); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } preGpId = pSeKey->groupId; @@ -3218,7 +3229,7 @@ int32_t doStreamSessionEncodeOpState(void** buf, int32_t len, SOperatorInfo* pOp size_t keyLen = 0; int32_t iter = 0; while ((pIte = tSimpleHashIterate(pInfo->streamAggSup.pResultRows, pIte, &iter)) != NULL) { - void* key = taosHashGetKey(pIte, &keyLen); + void* key = tSimpleHashGetKey(pIte, &keyLen); tlen += encodeSSessionKey(buf, key); tlen += encodeSResultWindowInfo(buf, pIte, pInfo->streamAggSup.resultRowSize); } @@ -3276,9 +3287,8 @@ int32_t doStreamSessionDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOpe int32_t mapSize = 0; buf = taosDecodeFixedI32(buf, &mapSize); for (int32_t i = 0; i < mapSize; i++) { - SSessionKey key = {0}; SResultWindowInfo winfo = {0}; - buf = decodeSSessionKey(buf, &key); + buf = decodeSSessionKey(buf, &winfo.sessionWin); int32_t winCode = TSDB_CODE_SUCCESS; code = pAggSup->stateStore.streamStateSessionAddIfNotExist( pAggSup->pState, &winfo.sessionWin, pAggSup->gap, (void**)&winfo.pStatePos, &pAggSup->resultRowSize, &winCode); @@ -3287,7 +3297,7 @@ int32_t doStreamSessionDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOpe buf = decodeSResultWindowInfo(buf, &winfo, pInfo->streamAggSup.resultRowSize); code = - tSimpleHashPut(pInfo->streamAggSup.pResultRows, &key, sizeof(SSessionKey), &winfo, sizeof(SResultWindowInfo)); + tSimpleHashPut(pInfo->streamAggSup.pResultRows, &winfo.sessionWin, sizeof(SSessionKey), &winfo, sizeof(SResultWindowInfo)); QUERY_CHECK_CODE(code, lino, _end); } @@ -3866,6 +3876,7 @@ int32_t createStreamSessionAggOperatorInfo(SOperatorInfo* downstream, SPhysiNode setOperatorStreamStateFn(pOperator, streamSessionReleaseState, streamSessionReloadState); if (downstream) { + pInfo->basic.primaryPkIndex = -1; code = initDownStream(downstream, &pInfo->streamAggSup, pOperator->operatorType, pInfo->primaryTsIndex, &pInfo->twAggSup, &pInfo->basic); QUERY_CHECK_CODE(code, lino, _error); @@ -3899,7 +3910,7 @@ int32_t deleteSessionWinState(SStreamAggSupporter* pAggSup, SSDataBlock* pBlock, int32_t lino = 0; SArray* pWins = taosArrayInit(16, sizeof(SSessionKey)); if (!pWins) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } code = doDeleteTimeWindows(pAggSup, pBlock, pWins); @@ -4116,7 +4127,7 @@ int32_t createStreamFinalSessionAggOperatorInfo(SOperatorInfo* downstream, SPhys pAPI->stateStore.streamStateSetNumber(pChInfo->streamAggSup.pState, i, pInfo->primaryTsIndex); void* tmp = taosArrayPush(pInfo->pChildren, &pChildOp); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _error); } } @@ -4576,9 +4587,8 @@ int32_t doStreamStateDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOpera int32_t mapSize = 0; buf = taosDecodeFixedI32(buf, &mapSize); for (int32_t i = 0; i < mapSize; i++) { - SSessionKey key = {0}; SResultWindowInfo winfo = {0}; - buf = decodeSSessionKey(buf, &key); + buf = decodeSSessionKey(buf, &winfo.sessionWin); int32_t winCode = TSDB_CODE_SUCCESS; code = pAggSup->stateStore.streamStateStateAddIfNotExist( pAggSup->pState, &winfo.sessionWin, NULL, pAggSup->stateKeySize, compareStateKey, (void**)&winfo.pStatePos, @@ -4587,7 +4597,7 @@ int32_t doStreamStateDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOpera buf = decodeSResultWindowInfo(buf, &winfo, pInfo->streamAggSup.resultRowSize); code = - tSimpleHashPut(pInfo->streamAggSup.pResultRows, &key, sizeof(SSessionKey), &winfo, sizeof(SResultWindowInfo)); + tSimpleHashPut(pInfo->streamAggSup.pResultRows, &winfo.sessionWin, sizeof(SSessionKey), &winfo, sizeof(SResultWindowInfo)); QUERY_CHECK_CODE(code, lino, _end); } @@ -5213,7 +5223,7 @@ static int32_t doStreamIntervalAggNext(SOperatorInfo* pOperator, SSDataBlock** p while ((pIte = tSimpleHashIterate(pInfo->pUpdatedMap, pIte, &iter)) != NULL) { void* tmp = taosArrayPush(pInfo->pUpdated, pIte); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } @@ -5377,7 +5387,8 @@ int32_t createStreamIntervalOperatorInfo(SOperatorInfo* downstream, SPhysiNode* taosMemoryFree(buff); } - code = initIntervalDownStream(downstream, pPhyNode->type, pInfo); + pInfo->basic.primaryPkIndex = -1; + code = initIntervalDownStream(downstream, pPhyNode->type, pInfo, &pInfo->basic); QUERY_CHECK_CODE(code, lino, _error); code = appendDownstream(pOperator, &downstream, 1); @@ -5633,7 +5644,7 @@ static int32_t doStreamMidIntervalAggNext(SOperatorInfo* pOperator, SSDataBlock* pBlock->info.type == STREAM_CLEAR) { SArray* delWins = taosArrayInit(8, sizeof(SWinKey)); if (!delWins) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } code = @@ -5687,7 +5698,7 @@ static int32_t doStreamMidIntervalAggNext(SOperatorInfo* pOperator, SSDataBlock* } else if (pBlock->info.type == STREAM_MID_RETRIEVE) { SArray* delWins = taosArrayInit(8, sizeof(SWinKey)); if (!delWins) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } code = doDeleteWindows(pOperator, &pInfo->interval, pBlock, delWins, pInfo->pUpdatedMap, NULL); @@ -5732,7 +5743,7 @@ static int32_t doStreamMidIntervalAggNext(SOperatorInfo* pOperator, SSDataBlock* while ((pIte = tSimpleHashIterate(pInfo->pUpdatedMap, pIte, &iter)) != NULL) { void* tmp = taosArrayPush(pInfo->pUpdated, pIte); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } diff --git a/source/libs/executor/src/sysscanoperator.c b/source/libs/executor/src/sysscanoperator.c index 18344d9e79..dcebdf59a9 100644 --- a/source/libs/executor/src/sysscanoperator.c +++ b/source/libs/executor/src/sysscanoperator.c @@ -2576,7 +2576,7 @@ int32_t optSysIntersection(SArray* in, SArray* out) { if (has == true) { void* tmp = taosArrayPush(out, &tgt); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _end; } } diff --git a/source/libs/executor/src/timesliceoperator.c b/source/libs/executor/src/timesliceoperator.c index f9211e5730..2ea300ace8 100644 --- a/source/libs/executor/src/timesliceoperator.c +++ b/source/libs/executor/src/timesliceoperator.c @@ -544,7 +544,7 @@ static int32_t initPrevRowsKeeper(STimeSliceOperatorInfo* pInfo, SSDataBlock* pB pInfo->pPrevRow = taosArrayInit(4, sizeof(SGroupKeys)); if (pInfo->pPrevRow == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t numOfCols = taosArrayGetSize(pBlock->pDataBlock); @@ -579,7 +579,7 @@ static int32_t initNextRowsKeeper(STimeSliceOperatorInfo* pInfo, SSDataBlock* pB pInfo->pNextRow = taosArrayInit(4, sizeof(SGroupKeys)); if (pInfo->pNextRow == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t numOfCols = taosArrayGetSize(pBlock->pDataBlock); @@ -615,7 +615,7 @@ static int32_t initFillLinearInfo(STimeSliceOperatorInfo* pInfo, SSDataBlock* pB pInfo->pLinearInfo = taosArrayInit(4, sizeof(SFillLinearInfo)); if (pInfo->pLinearInfo == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t numOfCols = taosArrayGetSize(pBlock->pDataBlock); diff --git a/source/libs/executor/src/tlinearhash.c b/source/libs/executor/src/tlinearhash.c index 9654f74ab1..99ef7ad9d9 100644 --- a/source/libs/executor/src/tlinearhash.c +++ b/source/libs/executor/src/tlinearhash.c @@ -229,7 +229,7 @@ static int32_t doAddNewBucket(SLHashObj* pHashObj) { char* p = taosMemoryRealloc(pHashObj->pBucket, POINTER_BYTES * newLen); if (p == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } memset(p + POINTER_BYTES * pHashObj->numOfBuckets, 0, newLen - pHashObj->numOfBuckets); diff --git a/source/libs/executor/src/tsort.c b/source/libs/executor/src/tsort.c index 19b825b0ca..00daafa59d 100644 --- a/source/libs/executor/src/tsort.c +++ b/source/libs/executor/src/tsort.c @@ -432,7 +432,7 @@ void tsortDestroySortHandle(SSortHandle* pSortHandle) { int32_t tsortAddSource(SSortHandle* pSortHandle, void* pSource) { void* p = taosArrayPush(pSortHandle->pOrderedSource, &pSource); - return (p != NULL)? TSDB_CODE_SUCCESS:TSDB_CODE_OUT_OF_MEMORY; + return (p != NULL)? TSDB_CODE_SUCCESS:terrno; } static int32_t doAddNewExternalMemSource(SDiskbasedBuf* pBuf, SArray* pAllSources, SSDataBlock* pBlock, @@ -449,7 +449,7 @@ static int32_t doAddNewExternalMemSource(SDiskbasedBuf* pBuf, SArray* pAllSource void* p = taosArrayPush(pAllSources, &pSource); if (p == NULL) { taosArrayDestroy(pPageIdList); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (*sourceId) += 1; @@ -525,7 +525,7 @@ static int32_t doAddToBuf(SSDataBlock* pDataBlock, SSortHandle* pHandle) { if (px == NULL) { taosArrayDestroy(pPageIdList); blockDataDestroy(p); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t size = blockDataGetSize(p) + sizeof(int32_t) + taosArrayGetSize(p->pDataBlock) * sizeof(int32_t); diff --git a/source/libs/function/src/builtinsimpl.c b/source/libs/function/src/builtinsimpl.c index a24b7197c6..7761ec8aa5 100644 --- a/source/libs/function/src/builtinsimpl.c +++ b/source/libs/function/src/builtinsimpl.c @@ -480,7 +480,7 @@ int32_t funcInputGetNextRowDescPk(SFuncInputRowIter* pIter, SFuncInputRow* pRow, pIter->pPrevData = taosMemoryMalloc(pIter->pDataCol->info.bytes); if (NULL == pIter->pPrevData) { qError("out of memory when function get input row."); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } char* srcData = colDataGetData(pIter->pDataCol, pIter->inputEndIndex); (void)memcpy(pIter->pPrevData, srcData, pIter->pDataCol->info.bytes); @@ -489,7 +489,7 @@ int32_t funcInputGetNextRowDescPk(SFuncInputRowIter* pIter, SFuncInputRow* pRow, if (NULL == pIter->pPrevPk) { qError("out of memory when function get input row."); taosMemoryFree(pIter->pPrevData); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } char* pkData = colDataGetData(pIter->pPkCol, pIter->inputEndIndex); (void)memcpy(pIter->pPrevPk, pkData, pIter->pPkCol->info.bytes); @@ -545,14 +545,14 @@ int32_t funcInputGetNextRowDescPk(SFuncInputRowIter* pIter, SFuncInputRow* pRow, pIter->pPrevData = taosMemoryMalloc(pIter->pDataCol->info.bytes); if (NULL == pIter->pPrevData) { qError("out of memory when function get input row."); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (void)memcpy(pIter->pPrevData, colDataGetData(pIter->pDataCol, pIter->inputEndIndex), pIter->pDataCol->info.bytes); pIter->pPrevPk = taosMemoryMalloc(pIter->pPkCol->info.bytes); if (NULL == pIter->pPrevPk) { qError("out of memory when function get input row."); taosMemoryFree(pIter->pPrevData); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (void)memcpy(pIter->pPrevPk, colDataGetData(pIter->pPkCol, pIter->inputEndIndex), pIter->pPkCol->info.bytes); @@ -2644,7 +2644,7 @@ static int32_t prepareBuf(SqlFunctionCtx* pCtx) { pCtx->subsidiaries.rowLen = rowLen + pCtx->subsidiaries.num * sizeof(bool); pCtx->subsidiaries.buf = taosMemoryMalloc(pCtx->subsidiaries.rowLen); if (NULL == pCtx->subsidiaries.buf) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } return TSDB_CODE_SUCCESS; @@ -6065,7 +6065,7 @@ int32_t modeFunctionSetup(SqlFunctionCtx* pCtx, SResultRowEntryInfo* pResInfo) { if (NULL == pInfo->buf) { taosHashCleanup(pInfo->pHash); pInfo->pHash = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return TSDB_CODE_SUCCESS; diff --git a/source/libs/function/src/detail/tminmax.c b/source/libs/function/src/detail/tminmax.c index 608f3bf260..e3c12e9a57 100644 --- a/source/libs/function/src/detail/tminmax.c +++ b/source/libs/function/src/detail/tminmax.c @@ -947,7 +947,7 @@ int32_t doMinMaxHelper(SqlFunctionCtx* pCtx, int32_t isMinFunc, int32_t* nElems) case TSDB_DATA_TYPE_NCHAR: { pBuf->str = taosMemoryMalloc(pCol->info.bytes); if (pBuf->str == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (void)memcpy(pBuf->str, colDataGetData(pCol, i), varDataTLen(colDataGetData(pCol, i))); break; diff --git a/source/libs/function/src/thistogram.c b/source/libs/function/src/thistogram.c index 2283845cfb..5ba43f546c 100644 --- a/source/libs/function/src/thistogram.c +++ b/source/libs/function/src/thistogram.c @@ -37,7 +37,7 @@ int32_t tHistogramCreate(int32_t numOfEntries, SHistogramInfo** pHisto) { /* need one redundant slot */ *pHisto = taosMemoryMalloc(sizeof(SHistogramInfo) + sizeof(SHistBin) * (numOfEntries + 1)); if (NULL == *pHisto) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } #if !defined(USE_ARRAYLIST) @@ -468,7 +468,7 @@ int32_t tHistogramUniform(SHistogramInfo* pHisto, double* ratio, int32_t num, do #if defined(USE_ARRAYLIST) *pVal = taosMemoryMalloc(num * sizeof(double)); if (NULL == *pVal) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } for (int32_t i = 0; i < num; ++i) { @@ -521,7 +521,7 @@ int32_t tHistogramUniform(SHistogramInfo* pHisto, double* ratio, int32_t num, do #else double* pVal = taosMemoryMalloc(num * sizeof(double)); if (NULL == *pVal) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } for (int32_t i = 0; i < num; ++i) { double numOfElem = ratio[i] * pHisto->numOfElems; diff --git a/source/libs/function/src/tpercentile.c b/source/libs/function/src/tpercentile.c index cc618f3f65..92a7c0d669 100644 --- a/source/libs/function/src/tpercentile.c +++ b/source/libs/function/src/tpercentile.c @@ -460,7 +460,7 @@ int32_t tMemBucketPut(tMemBucket *pBucket, const void *data, size_t size) { pSlot->info.pageId = pageId; if (taosArrayPush(pPageIdList, &pageId) == NULL) { taosArrayDestroy(pPageIdList); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } diff --git a/source/libs/function/src/tudf.c b/source/libs/function/src/tudf.c index 6145d9f03f..ffdd4ea500 100644 --- a/source/libs/function/src/tudf.c +++ b/source/libs/function/src/tudf.c @@ -1678,7 +1678,7 @@ int32_t udfcInitializeUvTask(SClientUdfTask *task, int8_t uvTaskType, SClientUvT void *bufBegin = taosMemoryMalloc(bufLen); if(bufBegin == NULL) { fnError("udfc create uv task, malloc buffer failed. size: %d", bufLen); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } void *buf = bufBegin; if(encodeUdfRequest(&buf, &request) <= 0) @@ -1733,7 +1733,7 @@ int32_t udfcStartUvTask(SClientUvTaskNode *uvTask) { uv_pipe_t *pipe = taosMemoryMalloc(sizeof(uv_pipe_t)); if(pipe == NULL) { fnError("udfc event loop start connect task malloc pipe failed."); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (uv_pipe_init(&uvTask->udfc->uvLoop, pipe, 0) != 0) { fnError("udfc event loop start connect task uv_pipe_init failed."); @@ -1762,7 +1762,7 @@ int32_t udfcStartUvTask(SClientUvTaskNode *uvTask) { fnError("udfc event loop start connect task malloc connReq failed."); taosMemoryFree(pipe); taosMemoryFree(conn); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } connReq->data = uvTask; uv_pipe_connect(connReq, pipe, uvTask->udfc->udfdPipeName, onUdfcPipeConnect); @@ -1777,7 +1777,7 @@ int32_t udfcStartUvTask(SClientUvTaskNode *uvTask) { uv_write_t *write = taosMemoryMalloc(sizeof(uv_write_t)); if(write == NULL) { fnError("udfc event loop start req_rsp task malloc write failed."); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } write->data = pipe->data; QUEUE *connTaskQueue = &((SClientUvConn *)pipe->data)->taskQueue; diff --git a/source/libs/function/src/udfd.c b/source/libs/function/src/udfd.c index 72eaae9451..e1dfd686d4 100644 --- a/source/libs/function/src/udfd.c +++ b/source/libs/function/src/udfd.c @@ -1617,7 +1617,7 @@ int32_t udfdInitResidentFuncs() { if(taosArrayPush(global.residentFuncs, func) == NULL) { taosArrayDestroy(global.residentFuncs); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } diff --git a/source/libs/index/inc/indexUtil.h b/source/libs/index/inc/indexUtil.h index 9eb8001d17..61c16e1217 100644 --- a/source/libs/index/inc/indexUtil.h +++ b/source/libs/index/inc/indexUtil.h @@ -21,29 +21,29 @@ extern "C" { #endif -#define SERIALIZE_MEM_TO_BUF(buf, key, mem) \ - do { \ - (void)memcpy((void *)buf, (void *)(&key->mem), sizeof(key->mem)); \ - buf += sizeof(key->mem); \ +#define SERIALIZE_MEM_TO_BUF(buf, key, mem) \ + do { \ + TAOS_UNUSED(memcpy((void *)buf, (void *)(&key->mem), sizeof(key->mem))); \ + buf += sizeof(key->mem); \ } while (0) -#define SERIALIZE_STR_MEM_TO_BUF(buf, key, mem, len) \ - do { \ - (void)memcpy((void *)buf, (void *)key->mem, len); \ - buf += len; \ +#define SERIALIZE_STR_MEM_TO_BUF(buf, key, mem, len) \ + do { \ + TAOS_UNUSED(memcpy((void *)buf, (void *)key->mem, len)); \ + buf += len; \ } while (0) -#define SERIALIZE_VAR_TO_BUF(buf, var, type) \ - do { \ - type c = var; \ - (void)memcpy((void *)buf, (void *)&c, sizeof(c)); \ - buf += sizeof(c); \ +#define SERIALIZE_VAR_TO_BUF(buf, var, type) \ + do { \ + type c = var; \ + TAOS_UNUSED(memcpy((void *)buf, (void *)&c, sizeof(c))); \ + buf += sizeof(c); \ } while (0) -#define SERIALIZE_STR_VAR_TO_BUF(buf, var, len) \ - do { \ - (void)memcpy((void *)buf, (void *)var, len); \ - buf += len; \ +#define SERIALIZE_STR_VAR_TO_BUF(buf, var, len) \ + do { \ + TAOS_UNUSED(memcpy((void *)buf, (void *)var, len)); \ + buf += len; \ } while (0) #define INDEX_MERGE_ADD_DEL(src, dst, tgt) \ diff --git a/source/libs/index/src/index.c b/source/libs/index/src/index.c index b2fd0afd68..38d4efd1ed 100644 --- a/source/libs/index/src/index.c +++ b/source/libs/index/src/index.c @@ -99,15 +99,15 @@ static int32_t idxMergeCacheAndTFile(SArray* result, IterateValue* icache, Itera static void idxPost(void* idx) { SIndex* pIdx = idx; - (void)tsem_post(&pIdx->sem); + TAOS_UNUSED(tsem_post(&pIdx->sem)); } static void indexWait(void* idx) { SIndex* pIdx = idx; - (void)tsem_wait(&pIdx->sem); + TAOS_UNUSED(tsem_wait(&pIdx->sem)); } int32_t indexOpen(SIndexOpts* opts, const char* path, SIndex** index) { - (void)taosThreadOnce(&isInit, indexEnvInit); + TAOS_UNUSED(taosThreadOnce(&isInit, indexEnvInit)); int code = TSDB_CODE_SUCCESS; SIndex* idx = taosMemoryCalloc(1, sizeof(SIndex)); @@ -128,17 +128,17 @@ int32_t indexOpen(SIndexOpts* opts, const char* path, SIndex** index) { idx->colObj = taosHashInit(8, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_ENTRY_LOCK); if (idx->colObj == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, NULL, END); + TAOS_CHECK_GOTO(terrno, NULL, END); } idx->version = 1; idx->path = taosStrdup(path); if (idx->path == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, NULL, END); + TAOS_CHECK_GOTO(terrno, NULL, END); } - (void)taosThreadMutexInit(&idx->mtx, NULL); - (void)tsem_init(&idx->sem, 0, 0); + TAOS_UNUSED(taosThreadMutexInit(&idx->mtx, NULL)); + TAOS_UNUSED(tsem_init(&idx->sem, 0, 0)); idx->refId = idxAddRef(idx); idx->opts = *opts; @@ -158,8 +158,8 @@ END: void indexDestroy(void* handle) { if (handle == NULL) return; SIndex* idx = handle; - (void)taosThreadMutexDestroy(&idx->mtx); - (void)tsem_destroy(&idx->sem); + TAOS_UNUSED(taosThreadMutexDestroy(&idx->mtx)); + TAOS_UNUSED(tsem_destroy(&idx->sem)); idxTFileDestroy(idx->tindex); taosMemoryFree(idx->path); @@ -190,7 +190,7 @@ void indexClose(SIndex* sIdx) { } idxReleaseRef(sIdx->refId); - (void)idxRemoveRef(sIdx->refId); + TAOS_UNUSED(idxRemoveRef(sIdx->refId)); } int64_t idxAddRef(void* p) { // impl @@ -203,17 +203,17 @@ int32_t idxRemoveRef(int64_t ref) { void idxAcquireRef(int64_t ref) { // impl - (void)taosAcquireRef(indexRefMgt, ref); + TAOS_UNUSED(taosAcquireRef(indexRefMgt, ref)); } void idxReleaseRef(int64_t ref) { // impl - (void)taosReleaseRef(indexRefMgt, ref); + TAOS_UNUSED(taosReleaseRef(indexRefMgt, ref)); } int32_t indexPut(SIndex* index, SIndexMultiTerm* fVals, uint64_t uid) { // TODO(yihao): reduce the lock range int32_t code = 0; - (void)taosThreadMutexLock(&index->mtx); + TAOS_UNUSED(taosThreadMutexLock(&index->mtx)); for (int i = 0; i < taosArrayGetSize(fVals); i++) { SIndexTerm* p = taosArrayGetP(fVals, i); @@ -231,7 +231,7 @@ int32_t indexPut(SIndex* index, SIndexMultiTerm* fVals, uint64_t uid) { } } } - (void)taosThreadMutexUnlock(&index->mtx); + TAOS_UNUSED(taosThreadMutexUnlock(&index->mtx)); if (code != 0) { return code; @@ -261,7 +261,7 @@ int32_t indexSearch(SIndex* index, SIndexMultiTermQuery* multiQuerys, SArray* re SArray* iRslts = taosArrayInit(4, POINTER_BYTES); if (iRslts == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int nQuery = taosArrayGetSize(multiQuerys->query); @@ -275,10 +275,10 @@ int32_t indexSearch(SIndex* index, SIndexMultiTermQuery* multiQuerys, SArray* re } if (taosArrayPush(iRslts, (void*)&trslt) == NULL) { idxInterRsltDestroy(iRslts); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } - (void)idxMergeFinalResults(iRslts, opera, result); + TAOS_UNUSED(idxMergeFinalResults(iRslts, opera, result)); idxInterRsltDestroy(iRslts); return 0; } @@ -319,7 +319,7 @@ void indexMultiTermQueryDestroy(SIndexMultiTermQuery* pQuery) { int32_t indexMultiTermQueryAdd(SIndexMultiTermQuery* pQuery, SIndexTerm* term, EIndexQueryType qType) { SIndexTermQuery q = {.qType = qType, .term = term}; if (taosArrayPush(pQuery->query, &q) == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return 0; } @@ -387,7 +387,7 @@ SIndexMultiTerm* indexMultiTermCreate() { return taosArrayInit(4, sizeof(SIndexT int32_t indexMultiTermAdd(SIndexMultiTerm* terms, SIndexTerm* term) { if (taosArrayPush(terms, &term) == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return 0; } @@ -421,7 +421,7 @@ void indexRebuild(SIndexJson* idx, void* iter) { schedMsg.fp = idxSchedRebuildIdx; schedMsg.ahandle = idx; idxAcquireRef(idx->refId); - (void)taosScheduleTask(indexQhandle, &schedMsg); + TAOS_UNUSED(taosScheduleTask(indexQhandle, &schedMsg)); } /* @@ -463,14 +463,14 @@ static int32_t idxTermSearch(SIndex* sIdx, SIndexTermQuery* query, SArray** resu int32_t sz = idxSerialCacheKey(&key, buf); - (void)taosThreadMutexLock(&sIdx->mtx); + TAOS_UNUSED(taosThreadMutexLock(&sIdx->mtx)); IndexCache** pCache = taosHashGet(sIdx->colObj, buf, sz); cache = (pCache == NULL) ? NULL : *pCache; - (void)taosThreadMutexUnlock(&sIdx->mtx); + TAOS_UNUSED(taosThreadMutexUnlock(&sIdx->mtx)); *result = taosArrayInit(4, sizeof(uint64_t)); if (*result == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } // TODO: iterator mem and tidex @@ -574,7 +574,7 @@ static int32_t idxMayMergeTempToFinalRslt(SArray* result, TFileValue* tfv, SIdxT } } else { if (taosArrayPush(result, &tfv) == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } return code; @@ -658,7 +658,7 @@ int32_t idxFlushCacheToTFile(SIndex* sIdx, void* cache, bool quit) { SArray* result = taosArrayInit(1024, sizeof(void*)); if (result == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, NULL, _exception); + TAOS_CHECK_GOTO(terrno, NULL, _exception); } bool cn = cacheIter ? cacheIter->next(cacheIter) : false; @@ -666,7 +666,7 @@ int32_t idxFlushCacheToTFile(SIndex* sIdx, void* cache, bool quit) { SIdxTRslt* tr = idxTRsltCreate(); if (tr == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, NULL, _exception); + TAOS_CHECK_GOTO(terrno, NULL, _exception); } while (cn == true || tn == true) { IterateValue* cv = (cn == true) ? cacheIter->getValue(cacheIter) : NULL; @@ -757,9 +757,9 @@ static int64_t idxGetAvailableVer(SIndex* sIdx, IndexCache* cache) { IndexTFile* tf = (IndexTFile*)(sIdx->tindex); - (void)taosThreadMutexLock(&tf->mtx); + TAOS_UNUSED(taosThreadMutexLock(&tf->mtx)); TFileReader* rd = tfileCacheGet(tf->cache, &key); - (void)taosThreadMutexUnlock(&tf->mtx); + TAOS_UNUSED(taosThreadMutexUnlock(&tf->mtx)); if (rd != NULL) { ver = (ver > rd->header.version ? ver : rd->header.version) + 1; @@ -801,9 +801,9 @@ static int32_t idxGenTFile(SIndex* sIdx, IndexCache* cache, SArray* batch) { TFileHeader* header = &reader->header; ICacheKey key = {.suid = cache->suid, .colName = header->colName, .nColName = strlen(header->colName)}; - (void)taosThreadMutexLock(&tf->mtx); + TAOS_UNUSED(taosThreadMutexLock(&tf->mtx)); code = tfileCachePut(tf->cache, &key, reader); - (void)taosThreadMutexUnlock(&tf->mtx); + TAOS_UNUSED(taosThreadMutexUnlock(&tf->mtx)); return code; @@ -820,7 +820,7 @@ int32_t idxSerialCacheKey(ICacheKey* key, char* buf) { char* p = buf; char tbuf[65] = {0}; - (void)idxInt2str((int64_t)key->suid, tbuf, 0); + TAOS_UNUSED(idxInt2str((int64_t)key->suid, tbuf, 0)); SERIALIZE_STR_VAR_TO_BUF(buf, tbuf, strlen(tbuf)); SERIALIZE_VAR_TO_BUF(buf, '_', char); diff --git a/source/libs/index/src/indexCache.c b/source/libs/index/src/indexCache.c index 828a3e2e9e..613c2430c9 100644 --- a/source/libs/index/src/indexCache.c +++ b/source/libs/index/src/indexCache.c @@ -109,7 +109,7 @@ static int32_t cacheSearchTerm(void* cache, SIndexTerm* term, SIdxTRslt* tr, STe } taosMemoryFree(pCt); - (void)tSkipListDestroyIter(iter); + TAOS_UNUSED(tSkipListDestroyIter(iter)); return code; } static int32_t cacheSearchPrefix(void* cache, SIndexTerm* term, SIdxTRslt* tr, STermValueType* s) { @@ -153,7 +153,7 @@ static int32_t cacheSearchCompareFunc(void* cache, SIndexTerm* term, SIdxTRslt* break; } CacheTerm* c = (CacheTerm*)SL_GET_NODE_DATA(node); - TExeCond cond = cmpFn(c->colVal, pCt->colVal, pCt->colType); + TExeCond cond = cmpFn(c->colVal, pCt->colVal, pCt->colType); if (cond == FAILED) { code = terrno; goto _return; @@ -178,7 +178,7 @@ static int32_t cacheSearchCompareFunc(void* cache, SIndexTerm* term, SIdxTRslt* _return: taosMemoryFree(pCt); - (void)tSkipListDestroyIter(iter); + TAOS_UNUSED(tSkipListDestroyIter(iter)); return code; } static int32_t cacheSearchLessThan(void* cache, SIndexTerm* term, SIdxTRslt* tr, STermValueType* s) { @@ -244,7 +244,7 @@ static int32_t cacheSearchTerm_JSON(void* cache, SIndexTerm* term, SIdxTRslt* tr taosMemoryFree(pCt); taosMemoryFree(exBuf); - (void)tSkipListDestroyIter(iter); + TAOS_UNUSED(tSkipListDestroyIter(iter)); return code; } static int32_t cacheSearchSuffix_JSON(void* cache, SIndexTerm* term, SIdxTRslt* tr, STermValueType* s) { @@ -363,7 +363,7 @@ static int32_t cacheSearchCompareFunc_JSON(void* cache, SIndexTerm* term, SIdxTR _return: taosMemoryFree(pCt); taosMemoryFree(exBuf); - (void)tSkipListDestroyIter(iter); + TAOS_UNUSED(tSkipListDestroyIter(iter)); return code; } @@ -390,8 +390,8 @@ IndexCache* idxCacheCreate(SIndex* idx, uint64_t suid, const char* colName, int8 cache->suid = suid; cache->occupiedMem = 0; - (void)taosThreadMutexInit(&cache->mtx, NULL); - (void)taosThreadCondInit(&cache->finished, NULL); + TAOS_UNUSED(taosThreadMutexInit(&cache->mtx, NULL)); + TAOS_UNUSED(taosThreadCondInit(&cache->finished, NULL)); idxCacheRef(cache); if (idx != NULL) { @@ -402,10 +402,10 @@ IndexCache* idxCacheCreate(SIndex* idx, uint64_t suid, const char* colName, int8 void idxCacheDebug(IndexCache* cache) { MemTable* tbl = NULL; - (void)taosThreadMutexLock(&cache->mtx); + TAOS_UNUSED(taosThreadMutexLock(&cache->mtx)); tbl = cache->mem; idxMemRef(tbl); - (void)taosThreadMutexUnlock(&cache->mtx); + TAOS_UNUSED(taosThreadMutexUnlock(&cache->mtx)); { SSkipList* slt = tbl->mem; @@ -418,16 +418,16 @@ void idxCacheDebug(IndexCache* cache) { indexInfo("{colVal: %s, version: %" PRId64 "} \t", ct->colVal, ct->version); } } - (void)tSkipListDestroyIter(iter); + TAOS_UNUSED(tSkipListDestroyIter(iter)); idxMemUnRef(tbl); } { - (void)taosThreadMutexLock(&cache->mtx); + TAOS_UNUSED(taosThreadMutexLock(&cache->mtx)); tbl = cache->imm; idxMemRef(tbl); - (void)taosThreadMutexUnlock(&cache->mtx); + TAOS_UNUSED(taosThreadMutexUnlock(&cache->mtx)); if (tbl != NULL) { SSkipList* slt = tbl->mem; SSkipListIterator* iter = tSkipListCreateIter(slt); @@ -439,7 +439,7 @@ void idxCacheDebug(IndexCache* cache) { indexInfo("{colVal: %s, version: %" PRId64 "} \t", ct->colVal, ct->version); } } - (void)tSkipListDestroyIter(iter); + TAOS_UNUSED(tSkipListDestroyIter(iter)); } idxMemUnRef(tbl); @@ -456,29 +456,29 @@ void idxCacheDestroySkiplist(SSkipList* slt) { taosMemoryFree(ct); } } - (void)tSkipListDestroyIter(iter); + TAOS_UNUSED(tSkipListDestroyIter(iter)); tSkipListDestroy(slt); } void idxCacheBroadcast(void* cache) { IndexCache* pCache = cache; - (void)taosThreadCondBroadcast(&pCache->finished); + TAOS_UNUSED(taosThreadCondBroadcast(&pCache->finished)); } void idxCacheWait(void* cache) { IndexCache* pCache = cache; - (void)taosThreadCondWait(&pCache->finished, &pCache->mtx); + TAOS_UNUSED(taosThreadCondWait(&pCache->finished, &pCache->mtx)); } void idxCacheDestroyImm(IndexCache* cache) { if (cache == NULL) { return; } MemTable* tbl = NULL; - (void)taosThreadMutexLock(&cache->mtx); + TAOS_UNUSED(taosThreadMutexLock(&cache->mtx)); tbl = cache->imm; cache->imm = NULL; // or throw int bg thread idxCacheBroadcast(cache); - (void)taosThreadMutexUnlock(&cache->mtx); + TAOS_UNUSED(taosThreadMutexUnlock(&cache->mtx)); idxMemUnRef(tbl); idxMemUnRef(tbl); @@ -493,8 +493,8 @@ void idxCacheDestroy(void* cache) { idxMemUnRef(pCache->imm); taosMemoryFree(pCache->colName); - (void)taosThreadMutexDestroy(&pCache->mtx); - (void)taosThreadCondDestroy(&pCache->finished); + TAOS_UNUSED(taosThreadMutexDestroy(&pCache->mtx)); + TAOS_UNUSED(taosThreadCondDestroy(&pCache->finished)); if (pCache->index != NULL) { idxReleaseRef(((SIndex*)pCache->index)->refId); } @@ -509,7 +509,7 @@ Iterate* idxCacheIteratorCreate(IndexCache* cache) { if (iter == NULL) { return NULL; } - (void)taosThreadMutexLock(&cache->mtx); + TAOS_UNUSED(taosThreadMutexLock(&cache->mtx)); idxMemRef(cache->imm); @@ -520,7 +520,7 @@ Iterate* idxCacheIteratorCreate(IndexCache* cache) { iter->next = idxCacheIteratorNext; iter->getValue = idxCacheIteratorGetValue; - (void)taosThreadMutexUnlock(&cache->mtx); + TAOS_UNUSED(taosThreadMutexUnlock(&cache->mtx)); return iter; } @@ -528,7 +528,7 @@ void idxCacheIteratorDestroy(Iterate* iter) { if (iter == NULL) { return; } - (void)tSkipListDestroyIter(iter->iter); + TAOS_UNUSED(tSkipListDestroyIter(iter->iter)); iterateValueDestroy(&iter->val, true); taosMemoryFree(iter); } @@ -542,7 +542,7 @@ int idxCacheSchedToMerge(IndexCache* pCache, bool notify) { } schedMsg.msg = NULL; idxAcquireRef(pCache->index->refId); - (void)taosScheduleTask(indexQhandle, &schedMsg); + TAOS_UNUSED(taosScheduleTask(indexQhandle, &schedMsg)); return 0; } @@ -567,7 +567,7 @@ static void idxCacheMakeRoomForWrite(IndexCache* cache) { } // 1. sched to merge // 2. unref cache in bgwork - (void)idxCacheSchedToMerge(cache, quit); + TAOS_UNUSED(idxCacheSchedToMerge(cache, quit)); } } } @@ -603,15 +603,15 @@ int idxCachePut(void* cache, SIndexTerm* term, uint64_t uid) { // ugly code, refactor later int64_t estimate = sizeof(ct) + strlen(ct->colVal); - (void)taosThreadMutexLock(&pCache->mtx); + TAOS_UNUSED(taosThreadMutexLock(&pCache->mtx)); pCache->occupiedMem += estimate; idxCacheMakeRoomForWrite(pCache); MemTable* tbl = pCache->mem; idxMemRef(tbl); - (void)tSkipListPut(tbl->mem, (char*)ct); + TAOS_UNUSED(tSkipListPut(tbl->mem, (char*)ct)); idxMemUnRef(tbl); - (void)taosThreadMutexUnlock(&pCache->mtx); + TAOS_UNUSED(taosThreadMutexUnlock(&pCache->mtx)); idxCacheUnRef(pCache); return 0; } @@ -619,13 +619,13 @@ void idxCacheForceToMerge(void* cache) { IndexCache* pCache = cache; idxCacheRef(pCache); - (void)taosThreadMutexLock(&pCache->mtx); + TAOS_UNUSED(taosThreadMutexLock(&pCache->mtx)); indexInfo("%p is forced to merge into tfile", pCache); pCache->occupiedMem += MEM_SIGNAL_QUIT; idxCacheMakeRoomForWrite(pCache); - (void)taosThreadMutexUnlock(&pCache->mtx); + TAOS_UNUSED(taosThreadMutexUnlock(&pCache->mtx)); idxCacheUnRef(pCache); return; } @@ -656,12 +656,12 @@ int idxCacheSearch(void* cache, SIndexTermQuery* query, SIdxTRslt* result, STerm IndexCache* pCache = cache; MemTable *mem = NULL, *imm = NULL; - (void)taosThreadMutexLock(&pCache->mtx); + TAOS_UNUSED(taosThreadMutexLock(&pCache->mtx)); mem = pCache->mem; imm = pCache->imm; idxMemRef(mem); idxMemRef(imm); - (void)taosThreadMutexUnlock(&pCache->mtx); + TAOS_UNUSED(taosThreadMutexUnlock(&pCache->mtx)); int64_t st = taosGetTimestampUs(); @@ -797,7 +797,7 @@ static void idxDoMergeWork(SSchedMsg* msg) { int quit = msg->thandle ? true : false; taosMemoryFree(msg->thandle); - (void)idxFlushCacheToTFile(sidx, pCache, quit); + TAOS_UNUSED(idxFlushCacheToTFile(sidx, pCache, quit)); } static bool idxCacheIteratorNext(Iterate* itera) { SSkipListIterator* iter = itera->iter; diff --git a/source/libs/index/src/indexComm.c b/source/libs/index/src/indexComm.c index 0fab194044..fee0df5582 100644 --- a/source/libs/index/src/indexComm.c +++ b/source/libs/index/src/indexComm.c @@ -349,7 +349,7 @@ int32_t idxConvertDataToStr(void* src, int8_t type, void** dst) { if (*dst == NULL) { return terrno; } - (void)idxInt2str(*(int64_t*)src, *dst, -1); + TAOS_UNUSED(idxInt2str(*(int64_t*)src, *dst, -1)); tlen = strlen(*dst); break; case TSDB_DATA_TYPE_BOOL: @@ -358,7 +358,7 @@ int32_t idxConvertDataToStr(void* src, int8_t type, void** dst) { if (*dst == NULL) { return terrno; } - (void)idxInt2str(*(uint8_t*)src, *dst, 1); + TAOS_UNUSED(idxInt2str(*(uint8_t*)src, *dst, 1)); tlen = strlen(*dst); break; case TSDB_DATA_TYPE_TINYINT: @@ -366,7 +366,7 @@ int32_t idxConvertDataToStr(void* src, int8_t type, void** dst) { if (*dst == NULL) { return terrno; } - (void)idxInt2str(*(int8_t*)src, *dst, 1); + TAOS_UNUSED(idxInt2str(*(int8_t*)src, *dst, 1)); tlen = strlen(*dst); break; case TSDB_DATA_TYPE_SMALLINT: @@ -374,12 +374,12 @@ int32_t idxConvertDataToStr(void* src, int8_t type, void** dst) { if (*dst == NULL) { return terrno; } - (void)idxInt2str(*(int16_t*)src, *dst, -1); + TAOS_UNUSED(idxInt2str(*(int16_t*)src, *dst, -1)); tlen = strlen(*dst); break; case TSDB_DATA_TYPE_USMALLINT: *dst = taosMemoryCalloc(1, bufSize + 1); - (void)idxInt2str(*(uint16_t*)src, *dst, -1); + TAOS_UNUSED(idxInt2str(*(uint16_t*)src, *dst, -1)); tlen = strlen(*dst); break; case TSDB_DATA_TYPE_INT: @@ -387,7 +387,7 @@ int32_t idxConvertDataToStr(void* src, int8_t type, void** dst) { if (*dst == NULL) { return terrno; } - (void)idxInt2str(*(int32_t*)src, *dst, -1); + TAOS_UNUSED(idxInt2str(*(int32_t*)src, *dst, -1)); tlen = strlen(*dst); break; case TSDB_DATA_TYPE_UINT: @@ -395,7 +395,7 @@ int32_t idxConvertDataToStr(void* src, int8_t type, void** dst) { if (*dst == NULL) { return terrno; } - (void)idxInt2str(*(uint32_t*)src, *dst, 1); + TAOS_UNUSED(idxInt2str(*(uint32_t*)src, *dst, 1)); tlen = strlen(*dst); break; case TSDB_DATA_TYPE_BIGINT: @@ -411,7 +411,7 @@ int32_t idxConvertDataToStr(void* src, int8_t type, void** dst) { if (*dst == NULL) { return terrno; } - (void)idxInt2str(*(uint64_t*)src, *dst, 1); + TAOS_UNUSED(idxInt2str(*(uint64_t*)src, *dst, 1)); tlen = strlen(*dst); break; case TSDB_DATA_TYPE_FLOAT: diff --git a/source/libs/index/src/indexFilter.c b/source/libs/index/src/indexFilter.c index fa59fe23fe..02e5bd34a6 100644 --- a/source/libs/index/src/indexFilter.c +++ b/source/libs/index/src/indexFilter.c @@ -1033,7 +1033,7 @@ static int32_t sifCalculate(SNode *pNode, SIFParam *pDst) { if (NULL == ctx.pRes) { indexError("index-filter failed to taosHashInit"); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } nodesWalkExprPostOrder(pNode, sifCalcWalker, &ctx); @@ -1057,7 +1057,7 @@ static int32_t sifCalculate(SNode *pNode, SIFParam *pDst) { pDst->status = res->status; sifFreeParam(res); - (void)taosHashRemove(ctx.pRes, (void *)&pNode, POINTER_BYTES); + TAOS_UNUSED(taosHashRemove(ctx.pRes, (void *)&pNode, POINTER_BYTES)); } sifFreeRes(ctx.pRes); return code; @@ -1073,7 +1073,7 @@ static int32_t sifGetFltHint(SNode *pNode, SIdxFltStatus *status, SMetaDataFilte ctx.pRes = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_NO_LOCK); if (NULL == ctx.pRes) { indexError("index-filter failed to taosHashInit"); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } nodesWalkExprPostOrder(pNode, sifCalcWalker, &ctx); @@ -1089,7 +1089,7 @@ static int32_t sifGetFltHint(SNode *pNode, SIdxFltStatus *status, SMetaDataFilte } *status = res->status; sifFreeParam(res); - (void)taosHashRemove(ctx.pRes, (void *)&pNode, POINTER_BYTES); + TAOS_UNUSED(taosHashRemove(ctx.pRes, (void *)&pNode, POINTER_BYTES)); void *iter = taosHashIterate(ctx.pRes, NULL); while (iter != NULL) { @@ -1113,7 +1113,7 @@ int32_t doFilterTag(SNode *pFilterNode, SIndexMetaArg *metaArg, SArray *result, SArray *output = taosArrayInit(8, sizeof(uint64_t)); if (output == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SIFParam param = {.arg = *metaArg, .result = output, .status = SFLT_NOT_INDEX, .api = *pAPI}; diff --git a/source/libs/index/src/indexFst.c b/source/libs/index/src/indexFst.c index aa617c2de2..e87126b930 100644 --- a/source/libs/index/src/indexFst.c +++ b/source/libs/index/src/indexFst.c @@ -219,9 +219,9 @@ void fstStateCompileForOneTransNext(IdxFstFile* w, CompiledAddr addr, uint8_t in uint8_t v = fstStateCommInput(&s, &null); if (null) { // w->write_all(&[inp]) - (void)idxFileWrite(w, &inp, 1); + TAOS_UNUSED(idxFileWrite(w, &inp, 1)); } - (void)idxFileWrite(w, &(s.val), 1); + TAOS_UNUSED(idxFileWrite(w, &(s.val), 1)); // w->write_all(&[s.val]) return; } @@ -233,7 +233,7 @@ void fstStateCompileForOneTrans(IdxFstFile* w, CompiledAddr addr, FstTransition* FST_SET_OUTPUT_PACK_SIZE(packSizes, outPackSize); FST_SET_TRANSITION_PACK_SIZE(packSizes, transPackSize); - (void)idxFileWrite(w, (char*)&packSizes, sizeof(packSizes)); + TAOS_UNUSED(idxFileWrite(w, (char*)&packSizes, sizeof(packSizes))); FstState st = fstStateCreate(OneTrans); @@ -242,9 +242,9 @@ void fstStateCompileForOneTrans(IdxFstFile* w, CompiledAddr addr, FstTransition* bool null = false; uint8_t inp = fstStateCommInput(&st, &null); if (null == true) { - (void)idxFileWrite(w, (char*)&trn->inp, sizeof(trn->inp)); + TAOS_UNUSED(idxFileWrite(w, (char*)&trn->inp, sizeof(trn->inp))); } - (void)idxFileWrite(w, (char*)(&(st.val)), sizeof(st.val)); + TAOS_UNUSED(idxFileWrite(w, (char*)(&(st.val)), sizeof(st.val))); return; } void fstStateCompileForAnyTrans(IdxFstFile* w, CompiledAddr addr, FstBuilderNode* node) { @@ -290,7 +290,7 @@ void fstStateCompileForAnyTrans(IdxFstFile* w, CompiledAddr addr, FstBuilderNode } for (int32_t i = sz - 1; i >= 0; i--) { FstTransition* t = taosArrayGet(node->trans, i); - (void)idxFileWrite(w, (char*)&t->inp, 1); + TAOS_UNUSED(idxFileWrite(w, (char*)&t->inp, 1)); } if (sz > TRANS_INDEX_THRESHOLD) { // A value of 255 indicates that no transition exists for the byte at that idx @@ -300,24 +300,24 @@ void fstStateCompileForAnyTrans(IdxFstFile* w, CompiledAddr addr, FstBuilderNode FstTransition* t = taosArrayGet(node->trans, i); index[t->inp] = i; } - (void)idxFileWrite(w, (char*)index, 256); + TAOS_UNUSED(idxFileWrite(w, (char*)index, 256)); taosMemoryFree(index); } - (void)idxFileWrite(w, (char*)&packSizes, 1); + TAOS_UNUSED(idxFileWrite(w, (char*)&packSizes, 1)); bool null = false; - (void)fstStateStateNtrans(&st, &null); + TAOS_UNUSED(fstStateStateNtrans(&st, &null)); if (null == true) { // 256 can't be represented in a u8, so we abuse the fact that // the # of transitions can never be 1 here, since 1 is always // encoded in the state byte. uint8_t v = 1; if (sz == 256) { - (void)idxFileWrite(w, (char*)&v, 1); + TAOS_UNUSED(idxFileWrite(w, (char*)&v, 1)); } else { - (void)idxFileWrite(w, (char*)&sz, 1); + TAOS_UNUSED(idxFileWrite(w, (char*)&sz, 1)); } } - (void)idxFileWrite(w, (char*)(&(st.val)), 1); + TAOS_UNUSED(idxFileWrite(w, (char*)(&(st.val)), 1)); return; } @@ -343,7 +343,7 @@ uint8_t fstStateCommInput(FstState* s, bool* null) { uint64_t fstStateInputLen(FstState* s) { bool null = false; - (void)fstStateCommInput(s, &null); + TAOS_UNUSED(fstStateCommInput(s, &null)); return null ? 1 : 0; } @@ -479,7 +479,7 @@ uint64_t fstStateTransIndexSize(FstState* s, uint64_t version, uint64_t nTrans) } uint64_t fstStateNtransLen(FstState* s) { bool null = false; - (void)fstStateStateNtrans(s, &null); + TAOS_UNUSED(fstStateStateNtrans(s, &null)); return null == true ? 1 : 0; } uint64_t fstStateNtrans(FstState* s, FstSlice* slice) { @@ -651,11 +651,11 @@ bool fstNodeGetTransitionAddrAt(FstNode* node, uint64_t i, CompiledAddr* res) { bool s = true; FstState* st = &node->state; if (st->state == OneTransNext) { - (void)fstStateTransAddr(st, node); + TAOS_UNUSED(fstStateTransAddr(st, node)); } else if (st->state == OneTrans) { - (void)fstStateTransAddr(st, node); + TAOS_UNUSED(fstStateTransAddr(st, node)); } else if (st->state == AnyTrans) { - (void)fstStateTransAddrForAnyTrans(st, node, i); + TAOS_UNUSED(fstStateTransAddrForAnyTrans(st, node, i)); } else if (FST_STATE_EMPTY_FINAL(node)) { s = false; } else { @@ -730,13 +730,13 @@ FstBuilder* fstBuilderCreate(void* w, FstType ty) { char buf64[8] = {0}; void* pBuf64 = buf64; - (void)taosEncodeFixedU64(&pBuf64, VERSION); - (void)idxFileWrite(b->wrt, buf64, sizeof(buf64)); + TAOS_UNUSED(taosEncodeFixedU64(&pBuf64, VERSION)); + TAOS_UNUSED(idxFileWrite(b->wrt, buf64, sizeof(buf64))); pBuf64 = buf64; memset(buf64, 0, sizeof(buf64)); - (void)taosEncodeFixedU64(&pBuf64, ty); - (void)idxFileWrite(b->wrt, buf64, sizeof(buf64)); + TAOS_UNUSED(taosEncodeFixedU64(&pBuf64, ty)); + TAOS_UNUSED(idxFileWrite(b->wrt, buf64, sizeof(buf64))); return b; } @@ -835,7 +835,7 @@ CompiledAddr fstBuilderCompile(FstBuilder* b, FstBuilderNode* bn) { } CompiledAddr startAddr = (CompiledAddr)(FST_WRITER_COUNT(b->wrt)); - (void)fstBuilderNodeCompileTo(bn, b->wrt, b->lastAddr, startAddr); + TAOS_UNUSED(fstBuilderNodeCompileTo(bn, b->wrt, b->lastAddr, startAddr)); b->lastAddr = (CompiledAddr)(FST_WRITER_COUNT(b->wrt) - 1); if (entry->state == NOTFOUND) { FST_REGISTRY_CELL_INSERT(entry->cell, b->lastAddr); @@ -854,23 +854,23 @@ void* fstBuilderInsertInner(FstBuilder* b) { char buf64[8] = {0}; void* pBuf64 = buf64; - (void)taosEncodeFixedU64(&pBuf64, b->len); - (void)idxFileWrite(b->wrt, buf64, sizeof(buf64)); + TAOS_UNUSED(taosEncodeFixedU64(&pBuf64, b->len)); + TAOS_UNUSED(idxFileWrite(b->wrt, buf64, sizeof(buf64))); pBuf64 = buf64; - (void)taosEncodeFixedU64(&pBuf64, rootAddr); - (void)idxFileWrite(b->wrt, buf64, sizeof(buf64)); + TAOS_UNUSED(taosEncodeFixedU64(&pBuf64, rootAddr)); + TAOS_UNUSED(idxFileWrite(b->wrt, buf64, sizeof(buf64))); char buf32[4] = {0}; void* pBuf32 = buf32; uint32_t sum = idxFileMaskedCheckSum(b->wrt); - (void)taosEncodeFixedU32(&pBuf32, sum); - (void)idxFileWrite(b->wrt, buf32, sizeof(buf32)); + TAOS_UNUSED(taosEncodeFixedU32(&pBuf32, sum)); + TAOS_UNUSED(idxFileWrite(b->wrt, buf32, sizeof(buf32))); - (void)idxFileFlush(b->wrt); + TAOS_UNUSED(idxFileFlush(b->wrt)); return b->wrt; } -void fstBuilderFinish(FstBuilder* b) { (void)fstBuilderInsertInner(b); } +void fstBuilderFinish(FstBuilder* b) { TAOS_UNUSED(fstBuilderInsertInner(b)); } FstSlice fstNodeAsSlice(FstNode* node) { FstSlice* slice = &node->data; @@ -930,19 +930,19 @@ Fst* fstCreate(FstSlice* slice) { uint64_t skip = 0; uint64_t version; - (void)taosDecodeFixedU64(buf, &version); + TAOS_UNUSED(taosDecodeFixedU64(buf, &version)); skip += sizeof(version); if (version == 0 || version > VERSION) { return NULL; } uint64_t type; - (void)taosDecodeFixedU64(buf + skip, &type); + TAOS_UNUSED(taosDecodeFixedU64(buf + skip, &type)); skip += sizeof(type); uint32_t checkSum = 0; len -= sizeof(checkSum); - (void)taosDecodeFixedU32(buf + len, &checkSum); + TAOS_UNUSED(taosDecodeFixedU32(buf + len, &checkSum)); if (taosCheckChecksum(buf, len, checkSum)) { indexError("index file is corrupted"); // verify fst @@ -950,11 +950,11 @@ Fst* fstCreate(FstSlice* slice) { } CompiledAddr rootAddr; len -= sizeof(rootAddr); - (void)taosDecodeFixedU64(buf + len, &rootAddr); + TAOS_UNUSED(taosDecodeFixedU64(buf + len, &rootAddr)); uint64_t fstLen; len -= sizeof(fstLen); - (void)taosDecodeFixedU64(buf + len, &fstLen); + TAOS_UNUSED(taosDecodeFixedU64(buf + len, &fstLen)); // TODO(validate root addr) Fst* fst = (Fst*)taosMemoryCalloc(1, sizeof(Fst)); if (fst == NULL) { @@ -976,7 +976,7 @@ Fst* fstCreate(FstSlice* slice) { *s = fstSliceCopy(slice, 0, FST_SLICE_LEN(slice) - 1); fst->data = s; - (void)taosThreadMutexInit(&fst->mtx, NULL); + TAOS_UNUSED(taosThreadMutexInit(&fst->mtx, NULL)); return fst; FST_CREAT_FAILED: @@ -990,7 +990,7 @@ void fstDestroy(Fst* fst) { taosMemoryFree(fst->meta); fstSliceDestroy(fst->data); taosMemoryFree(fst->data); - (void)taosThreadMutexDestroy(&fst->mtx); + TAOS_UNUSED(taosThreadMutexDestroy(&fst->mtx)); } taosMemoryFree(fst); } @@ -1018,7 +1018,7 @@ bool fstGet(Fst* fst, FstSlice* b, Output* out) { } FstTransition trn; - (void)fstNodeGetTransitionAt(root, res, &trn); + TAOS_UNUSED(fstNodeGetTransitionAt(root, res, &trn)); tOut += trn.out; root = fstGetNode(fst, trn.addr); if (taosArrayPush(nodes, &root) == NULL) { @@ -1145,7 +1145,7 @@ FStmSt* stmStCreate(Fst* fst, FAutoCtx* automation, FstBoundWithData* min, FstBo sws->stack = (SArray*)taosArrayInit(256, sizeof(FstStreamState)); sws->endAt = max; - (void)stmStSeekMin(sws, min); + TAOS_UNUSED(stmStSeekMin(sws, min)); return sws; } @@ -1198,7 +1198,7 @@ bool stmStSeekMin(FStmSt* sws, FstBoundWithData* min) { uint64_t res = 0; if (fstNodeFindInput(node, b, &res)) { FstTransition trn; - (void)fstNodeGetTransitionAt(node, res, &trn); + TAOS_UNUSED(fstNodeGetTransitionAt(node, res, &trn)); void* preState = autState; autState = automFuncs[aut->type].accept(aut, preState, b); if (taosArrayPush(sws->inp, &b) == NULL) { @@ -1244,12 +1244,12 @@ bool stmStSeekMin(FStmSt* sws, FstBoundWithData* min) { FstStreamState* s = taosArrayGet(sws->stack, sz - 1); if (inclusize) { s->trans -= 1; - (void)taosArrayPop(sws->inp); + TAOS_UNUSED(taosArrayPop(sws->inp)); } else { FstNode* n = s->node; uint64_t trans = s->trans; FstTransition trn; - (void)fstNodeGetTransitionAt(n, trans - 1, &trn); + TAOS_UNUSED(fstNodeGetTransitionAt(n, trans - 1, &trn)); FstStreamState s = { .node = fstGetNode(sws->fst, trn.addr), .trans = 0, .out = {.null = false, .out = out}, .autState = autState}; if (taosArrayPush(sws->stack, &s) == NULL) { @@ -1283,13 +1283,13 @@ FStmStRslt* stmStNextWith(FStmSt* sws, streamCallback__fn callback) { FstStreamState* p = (FstStreamState*)taosArrayPop(sws->stack); if (p->trans >= FST_NODE_LEN(p->node) || !automFuncs[aut->type].canMatch(aut, p->autState)) { if (FST_NODE_ADDR(p->node) != fstGetRootAddr(sws->fst)) { - (void)taosArrayPop(sws->inp); + TAOS_UNUSED(taosArrayPop(sws->inp)); } fstStreamStateDestroy(p); continue; } FstTransition trn; - (void)fstNodeGetTransitionAt(p->node, p->trans, &trn); + TAOS_UNUSED(fstNodeGetTransitionAt(p->node, p->trans, &trn)); Output out = p->out.out + trn.out; void* nextState = automFuncs[aut->type].accept(aut, p->autState, trn.inp); diff --git a/source/libs/index/src/indexFstDfa.c b/source/libs/index/src/indexFstDfa.c index c95847525f..3b0014f16a 100644 --- a/source/libs/index/src/indexFstDfa.c +++ b/source/libs/index/src/indexFstDfa.c @@ -132,7 +132,7 @@ bool dfaBuilderRunState(FstDfaBuilder *builder, FstSparseSet *cur, FstSparseSet bool succ = sparSetAdd(cur, ip, NULL); if (succ == false) return false; } - (void)dfaRun(builder->dfa, cur, next, byte); + TAOS_UNUSED(dfaRun(builder->dfa, cur, next, byte)); t = taosArrayGet(builder->dfa->states, state); @@ -149,7 +149,7 @@ bool dfaBuilderCacheState(FstDfaBuilder *builder, FstSparseSet *set, uint32_t *r int32_t code = 0; SArray *tinsts = taosArrayInit(4, sizeof(uint32_t)); if (tinsts == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _exception; } bool isMatch = false; @@ -163,13 +163,13 @@ bool dfaBuilderCacheState(FstDfaBuilder *builder, FstSparseSet *set, uint32_t *r continue; } else if (inst->ty == RANGE) { if (taosArrayPush(tinsts, &ip) == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _exception; } } else if (inst->ty == MATCH) { isMatch = true; if (taosArrayPush(tinsts, &ip) == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _exception; } } @@ -185,7 +185,7 @@ bool dfaBuilderCacheState(FstDfaBuilder *builder, FstSparseSet *set, uint32_t *r } else { DfaState st = {.insts = tinsts, .isMatch = isMatch}; if (taosArrayPush(builder->dfa->states, &st) == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _exception; } diff --git a/source/libs/index/src/indexFstFile.c b/source/libs/index/src/indexFstFile.c index 5c6a39d13c..efe890aa3a 100644 --- a/source/libs/index/src/indexFstFile.c +++ b/source/libs/index/src/indexFstFile.c @@ -30,7 +30,9 @@ typedef struct { } SDataBlock; static void deleteDataBlockFromLRU(const void* key, size_t keyLen, void* value, void* ud) { - (void)ud; + TAOS_UNUSED(ud); + TAOS_UNUSED(key); + TAOS_UNUSED(keyLen); taosMemoryFree(value); } @@ -38,7 +40,7 @@ static FORCE_INLINE void idxGenLRUKey(char* buf, const char* path, int32_t block char* p = buf; SERIALIZE_STR_VAR_TO_BUF(p, path, strlen(path)); SERIALIZE_VAR_TO_BUF(p, '_', char); - (void)idxInt2str(blockId, p, 0); + TAOS_UNUSED(idxInt2str(blockId, p, 0)); return; } static FORCE_INLINE int idxFileCtxDoWrite(IFileCtx* ctx, uint8_t* buf, int len) { @@ -48,7 +50,7 @@ static FORCE_INLINE int idxFileCtxDoWrite(IFileCtx* ctx, uint8_t* buf, int len) if (len + ctx->file.wBufOffset >= cap) { int32_t nw = cap - ctx->file.wBufOffset; memcpy(ctx->file.wBuf + ctx->file.wBufOffset, buf, nw); - (void)taosWriteFile(ctx->file.pFile, ctx->file.wBuf, cap); + TAOS_UNUSED(taosWriteFile(ctx->file.pFile, ctx->file.wBuf, cap)); memset(ctx->file.wBuf, 0, cap); ctx->file.wBufOffset = 0; @@ -58,7 +60,7 @@ static FORCE_INLINE int idxFileCtxDoWrite(IFileCtx* ctx, uint8_t* buf, int len) nw = (len / cap) * cap; if (nw != 0) { - (void)taosWriteFile(ctx->file.pFile, buf, nw); + TAOS_UNUSED(taosWriteFile(ctx->file.pFile, buf, nw)); } len -= nw; @@ -115,7 +117,7 @@ static int idxFileCtxDoReadFrom(IFileCtx* ctx, uint8_t* buf, int len, int32_t of SDataBlock* blk = taosLRUCacheValue(ctx->lru, h); nread = TMIN(blkLeft, len); memcpy(buf + total, blk->buf + blkOffset, nread); - (void)taosLRUCacheRelease(ctx->lru, h, false); + TAOS_UNUSED(taosLRUCacheRelease(ctx->lru, h, false)); } else { int32_t left = ctx->file.size - offset; if (left < kBlockSize) { @@ -166,7 +168,7 @@ static FORCE_INLINE int idxFileCtxGetSize(IFileCtx* ctx) { return ctx->offset; } else { int64_t file_size = 0; - (void)taosStatFile(ctx->file.buf, &file_size, NULL, NULL); + TAOS_UNUSED(taosStatFile(ctx->file.buf, &file_size, NULL, NULL)); return (int)file_size; } } @@ -254,16 +256,16 @@ void idxFileCtxDestroy(IFileCtx* ctx, bool remove) { int32_t nw = taosWriteFile(ctx->file.pFile, ctx->file.wBuf, ctx->file.wBufOffset); ctx->file.wBufOffset = 0; } - (void)(ctx->flush(ctx)); + TAOS_UNUSED(ctx->flush(ctx)); taosMemoryFreeClear(ctx->file.wBuf); - (void)taosCloseFile(&ctx->file.pFile); + TAOS_UNUSED(taosCloseFile(&ctx->file.pFile)); if (ctx->file.readOnly) { #ifdef USE_MMAP munmap(ctx->file.ptr, ctx->file.size); #endif } if (remove) { - (void)unlink(ctx->file.buf); + TAOS_UNUSED(unlink(ctx->file.buf)); } } taosMemoryFree(ctx); @@ -279,7 +281,7 @@ IdxFstFile* idxFileCreate(void* wrt) { return cw; } void idxFileDestroy(IdxFstFile* cw) { - (void)idxFileFlush(cw); + TAOS_UNUSED(idxFileFlush(cw)); taosMemoryFree(cw); } @@ -317,7 +319,7 @@ uint32_t idxFileMaskedCheckSum(IdxFstFile* write) { int idxFileFlush(IdxFstFile* write) { IFileCtx* ctx = write->wrt; - (void)(ctx->flush(ctx)); + TAOS_UNUSED(ctx->flush(ctx)); return 1; } @@ -327,7 +329,7 @@ void idxFilePackUintIn(IdxFstFile* writer, uint64_t n, uint8_t nBytes) { buf[i] = (uint8_t)n; n = n >> 8; } - (void)idxFileWrite(writer, buf, nBytes); + TAOS_UNUSED(idxFileWrite(writer, buf, nBytes)); taosMemoryFree(buf); return; } diff --git a/source/libs/index/src/indexFstNode.c b/source/libs/index/src/indexFstNode.c index 245f5cf5fc..1f2b4cbddb 100644 --- a/source/libs/index/src/indexFstNode.c +++ b/source/libs/index/src/indexFstNode.c @@ -76,14 +76,14 @@ int32_t fstBuilderNodeCloneFrom(FstBuilderNode* dst, FstBuilderNode* src) { size_t sz = taosArrayGetSize(src->trans); dst->trans = taosArrayInit(sz, sizeof(FstTransition)); if (dst->trans == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } for (size_t i = 0; i < sz; i++) { FstTransition* trn = taosArrayGet(src->trans, i); if (taosArrayPush(dst->trans, trn) == NULL) { taosArrayDestroy(dst->trans); dst->trans = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } return 0; diff --git a/source/libs/index/src/indexFstRegister.c b/source/libs/index/src/indexFstRegister.c index cc069c5d0f..ce34bb50d0 100644 --- a/source/libs/index/src/indexFstRegister.c +++ b/source/libs/index/src/indexFstRegister.c @@ -128,7 +128,7 @@ FstRegistryEntry* fstRegistryGetEntry(FstRegistry* registry, FstBuilderNode* bNo entry->addr = cell->addr; return entry; } else { - (void)fstBuilderNodeCloneFrom(cell->node, bNode); + TAOS_UNUSED(fstBuilderNodeCloneFrom(cell->node, bNode)); entry->state = NOTFOUND; entry->cell = cell; // copy or not } @@ -148,7 +148,7 @@ FstRegistryEntry* fstRegistryGetEntry(FstRegistry* registry, FstBuilderNode* bNo return entry; } // clone from bNode, refactor later - (void)fstBuilderNodeCloneFrom(cell2->node, bNode); + TAOS_UNUSED(fstBuilderNodeCloneFrom(cell2->node, bNode)); fstRegistryCellSwap(registry->table, start, start + 1); FstRegistryCell* cCell = taosArrayGet(registry->table, start); @@ -169,7 +169,7 @@ FstRegistryEntry* fstRegistryGetEntry(FstRegistry* registry, FstBuilderNode* bNo uint64_t last = end - 1; FstRegistryCell* cell = (FstRegistryCell*)taosArrayGet(registry->table, last); // clone from bNode, refactor later - (void)fstBuilderNodeCloneFrom(cell->node, bNode); + TAOS_UNUSED(fstBuilderNodeCloneFrom(cell->node, bNode)); fstRegistryCellPromote(registry->table, last, start); FstRegistryCell* cCell = taosArrayGet(registry->table, start); diff --git a/source/libs/index/src/indexFstUtil.c b/source/libs/index/src/indexFstUtil.c index 92cece3890..f0df2f7124 100644 --- a/source/libs/index/src/indexFstUtil.c +++ b/source/libs/index/src/indexFstUtil.c @@ -91,7 +91,7 @@ FstSlice fstSliceCreate(uint8_t* data, uint64_t len) { // just shallow copy FstSlice fstSliceCopy(FstSlice* s, int32_t start, int32_t end) { FstString* str = s->str; - (void)atomic_add_fetch_32(&str->ref, 1); + TAOS_UNUSED(atomic_add_fetch_32(&str->ref, 1)); FstSlice t = {.str = str, .start = start + s->start, .end = end + s->start}; return t; diff --git a/source/libs/index/src/indexTfile.c b/source/libs/index/src/indexTfile.c index eb00cc7990..78fd9da452 100644 --- a/source/libs/index/src/indexTfile.c +++ b/source/libs/index/src/indexTfile.c @@ -280,7 +280,7 @@ static int32_t tfSearchPrefix(void* reader, SIndexTerm* tem, SIdxTRslt* tr) { SArray* offsets = taosArrayInit(16, sizeof(uint64_t)); if (offsets == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } FAutoCtx* ctx = automCtxCreate((void*)p, AUTOMATION_PREFIX); @@ -374,7 +374,7 @@ static int32_t tfSearchCompareFunc(void* reader, SIndexTerm* tem, SIdxTRslt* tr, goto _return; } if (MATCH == cond) { - (void)tfileReaderLoadTableIds((TFileReader*)reader, rt->out.out, tr->total); + TAOS_UNUSED(tfileReaderLoadTableIds((TFileReader*)reader, rt->out.out, tr->total)); } else if (CONTINUE == cond) { } else if (BREAK == cond) { swsResultDestroy(rt); @@ -528,7 +528,7 @@ static int32_t tfSearchCompareFunc_JSON(void* reader, SIndexTerm* tem, SIdxTRslt } } if (MATCH == cond) { - (void)tfileReaderLoadTableIds((TFileReader*)reader, rt->out.out, tr->total); + TAOS_UNUSED(tfileReaderLoadTableIds((TFileReader*)reader, rt->out.out, tr->total)); } else if (CONTINUE == cond) { } else if (BREAK == cond) { swsResultDestroy(rt); @@ -639,7 +639,7 @@ int32_t tfileWriterPut(TFileWriter* tw, void* data, bool order) { if (fn == NULL) { return terrno; } - (void)taosArraySortPWithExt((SArray*)(data), tfileValueCompare, &fn); + TAOS_UNUSED(taosArraySortPWithExt((SArray*)(data), tfileValueCompare, &fn)); } int32_t sz = taosArrayGetSize((SArray*)data); @@ -654,7 +654,7 @@ int32_t tfileWriterPut(TFileWriter* tw, void* data, bool order) { if (tbsz == 0) continue; fstOffset += TF_TABLE_TATOAL_SIZE(tbsz); } - (void)tfileWriteFstOffset(tw, fstOffset); + TAOS_UNUSED(tfileWriteFstOffset(tw, fstOffset)); int32_t cap = 4 * 1024; char* buf = taosMemoryCalloc(1, cap); @@ -675,14 +675,14 @@ int32_t tfileWriterPut(TFileWriter* tw, void* data, bool order) { char* t = (char*)taosMemoryRealloc(buf, cap); if (t == NULL) { taosMemoryFree(buf); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } buf = t; } char* p = buf; tfileSerialTableIdsToBuf(p, v->tableId); - (void)(tw->ctx->write(tw->ctx, buf, ttsz)); + TAOS_UNUSED((tw->ctx->write(tw->ctx, buf, ttsz))); v->offset = tw->offset; tw->offset += ttsz; memset(buf, 0, cap); @@ -710,7 +710,7 @@ int32_t tfileWriterPut(TFileWriter* tw, void* data, bool order) { } } fstBuilderDestroy(tw->fb); - (void)tfileWriteFooter(tw); + TAOS_UNUSED(tfileWriteFooter(tw)); return 0; } void tfileWriterClose(TFileWriter* tw) { @@ -739,7 +739,7 @@ IndexTFile* idxTFileCreate(SIndex* idx, const char* path) { tfileCacheDestroy(cache); return NULL; } - (void)taosThreadMutexInit(&tfile->mtx, NULL); + TAOS_UNUSED(taosThreadMutexInit(&tfile->mtx, NULL)); tfile->cache = cache; return tfile; } @@ -747,7 +747,7 @@ void idxTFileDestroy(IndexTFile* tfile) { if (tfile == NULL) { return; } - (void)taosThreadMutexDestroy(&tfile->mtx); + TAOS_UNUSED(taosThreadMutexDestroy(&tfile->mtx)); tfileCacheDestroy(tfile->cache); taosMemoryFree(tfile); } @@ -764,9 +764,9 @@ int idxTFileSearch(void* tfile, SIndexTermQuery* query, SIdxTRslt* result) { SIndexTerm* term = query->term; ICacheKey key = {.suid = term->suid, .colType = term->colType, .colName = term->colName, .nColName = term->nColName}; - (void)taosThreadMutexLock(&pTfile->mtx); + TAOS_UNUSED(taosThreadMutexLock(&pTfile->mtx)); TFileReader* reader = tfileCacheGet(pTfile->cache, &key); - (void)taosThreadMutexUnlock(&pTfile->mtx); + TAOS_UNUSED(taosThreadMutexUnlock(&pTfile->mtx)); if (reader == NULL) { return 0; } @@ -870,9 +870,9 @@ TFileReader* tfileGetReaderByCol(IndexTFile* tf, uint64_t suid, char* colName) { TFileReader* rd = NULL; ICacheKey key = {.suid = suid, .colType = TSDB_DATA_TYPE_BINARY, .colName = colName, .nColName = strlen(colName)}; - (void)taosThreadMutexLock(&tf->mtx); + TAOS_UNUSED(taosThreadMutexLock(&tf->mtx)); rd = tfileCacheGet(tf->cache, &key); - (void)taosThreadMutexUnlock(&tf->mtx); + TAOS_UNUSED(taosThreadMutexUnlock(&tf->mtx)); return rd; } @@ -915,7 +915,7 @@ int32_t tfileValuePush(TFileValue* tf, uint64_t val) { return TSDB_CODE_INVALID_PARA; } if (taosArrayPush(tf->tableId, &val) == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return 0; } @@ -978,7 +978,7 @@ static int tfileWriteData(TFileWriter* write, TFileValue* tval) { static int tfileWriteFooter(TFileWriter* write) { char buf[sizeof(FILE_MAGIC_NUMBER) + 1] = {0}; void* pBuf = (void*)buf; - (void)taosEncodeFixedU64((void**)(void*)&pBuf, FILE_MAGIC_NUMBER); + TAOS_UNUSED(taosEncodeFixedU64((void**)(void*)&pBuf, FILE_MAGIC_NUMBER)); int nwrite = write->ctx->write(write->ctx, (uint8_t*)buf, (int32_t)strlen(buf)); indexInfo("tfile write footer size: %d", write->ctx->size(write->ctx)); @@ -1052,7 +1052,7 @@ static int32_t tfileReaderLoadTableIds(TFileReader* reader, int32_t offset, SArr int32_t left = block + sizeof(block) - p; if (left >= sizeof(uint64_t)) { if (taosArrayPush(result, (uint64_t*)p) == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } p += sizeof(uint64_t); } else { @@ -1065,7 +1065,7 @@ static int32_t tfileReaderLoadTableIds(TFileReader* reader, int32_t offset, SArr memcpy(buf + left, block, sizeof(uint64_t) - left); if (taosArrayPush(result, (uint64_t*)buf) == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } p = block + sizeof(uint64_t) - left; } @@ -1088,7 +1088,7 @@ static int tfileReaderVerify(TFileReader* reader) { return TSDB_CODE_INDEX_INVALID_FILE; } - (void)taosDecodeFixedU64(buf, &tMagicNumber); + TAOS_UNUSED(taosDecodeFixedU64(buf, &tMagicNumber)); return tMagicNumber == FILE_MAGIC_NUMBER ? 0 : TSDB_CODE_INDEX_INVALID_FILE; } @@ -1118,7 +1118,7 @@ static int32_t tfileGetFileList(const char* path, SArray** ppResult) { int64_t version; SArray* files = taosArrayInit(4, sizeof(void*)); if (files == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } TdDirPtr pDir = taosOpenDir(path); @@ -1140,18 +1140,18 @@ static int32_t tfileGetFileList(const char* path, SArray** ppResult) { sprintf(buf, "%s/%s", path, file); if (taosArrayPush(files, &buf) == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, NULL, _exception); + TAOS_CHECK_GOTO(terrno, NULL, _exception); } } - (void)taosCloseDir(&pDir); + TAOS_UNUSED(taosCloseDir(&pDir)); taosArraySort(files, tfileCompare); - (void)tfileRmExpireFile(files); + TAOS_UNUSED(tfileRmExpireFile(files)); *ppResult = files; return 0; _exception: - (void)taosCloseDir(&pDir); + TAOS_UNUSED(taosCloseDir(&pDir)); if (files != NULL) { taosArrayDestroyEx(files, tfileDestroyFileName); taosArrayDestroy(files); @@ -1181,12 +1181,12 @@ static int tfileParseFileName(const char* filename, uint64_t* suid, char* col, i } // tfile name suid-colId-version.tindex static void tfileGenFileName(char* filename, uint64_t suid, const char* col, int64_t version) { - (void)sprintf(filename, "%" PRIu64 "-%s-%" PRId64 ".tindex", suid, col, version); + TAOS_UNUSED(sprintf(filename, "%" PRIu64 "-%s-%" PRId64 ".tindex", suid, col, version)); return; } static void FORCE_INLINE tfileGenFileFullName(char* fullname, const char* path, uint64_t suid, const char* col, int64_t version) { char filename[128] = {0}; tfileGenFileName(filename, suid, col, version); - (void)sprintf(fullname, "%s/%s", path, filename); + TAOS_UNUSED(sprintf(fullname, "%s/%s", path, filename)); } diff --git a/source/libs/index/src/indexUtil.c b/source/libs/index/src/indexUtil.c index aca1ec37fe..cbecb90d5e 100644 --- a/source/libs/index/src/indexUtil.c +++ b/source/libs/index/src/indexUtil.c @@ -69,7 +69,7 @@ int32_t iIntersection(SArray *in, SArray *out) { } if (has == true) { if (taosArrayPush(out, &tgt) == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } } @@ -119,7 +119,7 @@ int32_t iUnion(SArray *in, SArray *out) { } } if (taosArrayPush(out, &mVal) == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } } else { @@ -220,17 +220,17 @@ int32_t idxTRsltMergeTo(SIdxTRslt *tr, SArray *result) { } else { SArray *arrs = taosArrayInit(2, sizeof(void *)); if (arrs == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (taosArrayPush(arrs, &tr->total) == NULL) { taosArrayDestroy(arrs); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (taosArrayPush(arrs, &tr->add) == NULL) { taosArrayDestroy(arrs); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } code = iUnion(arrs, result); taosArrayDestroy(arrs); diff --git a/source/libs/monitor/src/monMain.c b/source/libs/monitor/src/monMain.c index 4808ae0fdf..f581d8c83d 100644 --- a/source/libs/monitor/src/monMain.c +++ b/source/libs/monitor/src/monMain.c @@ -118,7 +118,7 @@ void monSetBmInfo(SMonBmInfo *pInfo) { int32_t monInit(const SMonCfg *pCfg) { tsMonitor.logs = taosArrayInit(16, sizeof(SMonLogItem)); if (tsMonitor.logs == NULL) { - TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY); + TAOS_RETURN(terrno); } tsMonitor.cfg = *pCfg; diff --git a/source/libs/monitorfw/src/taos_metric_formatter_custom.c b/source/libs/monitorfw/src/taos_metric_formatter_custom.c index da05d09d9c..6e7ded62bb 100644 --- a/source/libs/monitorfw/src/taos_metric_formatter_custom.c +++ b/source/libs/monitorfw/src/taos_metric_formatter_custom.c @@ -88,17 +88,46 @@ int taos_metric_formatter_load_sample_new(taos_metric_formatter_t *self, taos_me char* value = *(pair + 1); SJson* tag = tjsonCreateObject(); - (void)tjsonAddStringToObject(tag, "name", key); - (void)tjsonAddStringToObject(tag, "value", value); - - (void)tjsonAddItemToArray(arrayTag, tag); + if ((r = tjsonAddStringToObject(tag, "name", key)) != 0) { + taosMemoryFreeClear(arr); + taosMemoryFreeClear(keyvalue); + taosMemoryFreeClear(keyvalues); + return r; + } + if ((r = tjsonAddStringToObject(tag, "value", value)) != 0) { + taosMemoryFreeClear(arr); + taosMemoryFreeClear(keyvalue); + taosMemoryFreeClear(keyvalues); + return r; + } + if ((r = tjsonAddItemToArray(arrayTag, tag)) != 0) { + taosMemoryFreeClear(arr); + taosMemoryFreeClear(keyvalue); + taosMemoryFreeClear(keyvalues); + return r; + } + } + if ((r = tjsonAddItemToObject(item, "tags", arrayTag)) != 0) { + taosMemoryFreeClear(arr); + taosMemoryFreeClear(keyvalue); + taosMemoryFreeClear(keyvalues); + return r; } - (void)tjsonAddItemToObject(item, "tags", arrayTag); metrics = tjsonCreateArray(); - (void)tjsonAddItemToObject(item, "metrics", metrics); + if ((r = tjsonAddItemToObject(item, "metrics", metrics)) != 0) { + taosMemoryFreeClear(arr); + taosMemoryFreeClear(keyvalue); + taosMemoryFreeClear(keyvalues); + return r; + } - (void)tjsonAddItemToArray(arrayMetricGroups, item); + if ((r = tjsonAddItemToArray(arrayMetricGroups, item)) != 0) { + taosMemoryFreeClear(arr); + taosMemoryFreeClear(keyvalue); + taosMemoryFreeClear(keyvalues); + return r; + } } else{ metrics = tjsonGetObjectItem(item, "metrics"); @@ -109,20 +138,20 @@ int taos_metric_formatter_load_sample_new(taos_metric_formatter_t *self, taos_me taosMemoryFreeClear(keyvalues); SJson* metric = tjsonCreateObject(); - (void)tjsonAddStringToObject(metric, "name", metricName); + if ((r = tjsonAddStringToObject(metric, "name", metricName)) != 0) return r; double old_value = 0; #define USE_EXCHANGE #ifdef USE_EXCHANGE - (void)taos_metric_sample_exchange(sample, 0, &old_value); + if ((r = taos_metric_sample_exchange(sample, 0, &old_value)) != 0) return r; #else old_value = sample->r_value; taos_metric_sample_set(sample, 0); #endif - (void)tjsonAddDoubleToObject(metric, "value", old_value); - (void)tjsonAddDoubleToObject(metric, "type", metric_type); - (void)tjsonAddItemToArray(metrics, metric); + if ((r = tjsonAddDoubleToObject(metric, "value", old_value)) != 0) return r; + if ((r = tjsonAddDoubleToObject(metric, "type", metric_type)) != 0) return r; + if ((r = tjsonAddItemToArray(metrics, metric)) != 0) return r; return 0; } @@ -150,7 +179,10 @@ int taos_metric_formatter_load_metric_new(taos_metric_formatter_t *self, taos_me SJson* table = tjsonGetArrayItem(tableArray, i); char tableName[MONITOR_TABLENAME_LEN] = {0}; - (void)tjsonGetStringValue(table, "name", tableName); + if ((r = tjsonGetStringValue(table, "name", tableName)) != 0) { + taosMemoryFreeClear(name); + return r; + } if(strcmp(tableName, arr[0]) == 0){ isFound = true; arrayMetricGroups = tjsonGetObjectItem(table, "metric_groups"); @@ -161,10 +193,16 @@ int taos_metric_formatter_load_metric_new(taos_metric_formatter_t *self, taos_me if(!isFound){ table = tjsonCreateObject(); - (void)tjsonAddStringToObject(table, "name", arr[0]); + if ((r = tjsonAddStringToObject(table, "name", arr[0])) != 0) { + taosMemoryFreeClear(name); + return r; + } arrayMetricGroups = tjsonCreateArray(); - (void)tjsonAddItemToObject(table, "metric_groups", arrayMetricGroups); + if ((r = tjsonAddItemToObject(table, "metric_groups", arrayMetricGroups)) != 0) { + taosMemoryFreeClear(name); + return r; + } } int32_t sample_count = 0; @@ -183,7 +221,10 @@ int taos_metric_formatter_load_metric_new(taos_metric_formatter_t *self, taos_me } if(!isFound && sample_count > 0){ - (void)tjsonAddItemToArray(tableArray, table); + if ((r = tjsonAddItemToArray(tableArray, table)) != 0) { + taosMemoryFreeClear(name); + return r; + } } else{ if(table != NULL) tjsonDelete(table); diff --git a/source/libs/nodes/src/nodesCloneFuncs.c b/source/libs/nodes/src/nodesCloneFuncs.c index d9b72b36b7..5db8863311 100644 --- a/source/libs/nodes/src/nodesCloneFuncs.c +++ b/source/libs/nodes/src/nodesCloneFuncs.c @@ -102,7 +102,6 @@ static int32_t exprNodeCopy(const SExprNode* pSrc, SExprNode* pDst) { COPY_OBJECT_FIELD(resType, sizeof(SDataType)); COPY_CHAR_ARRAY_FIELD(aliasName); COPY_CHAR_ARRAY_FIELD(userAlias); - COPY_SCALAR_FIELD(orderAlias); COPY_SCALAR_FIELD(projIdx); return TSDB_CODE_SUCCESS; } diff --git a/source/libs/nodes/src/nodesCodeFuncs.c b/source/libs/nodes/src/nodesCodeFuncs.c index 99d7c4e265..b0b293306e 100644 --- a/source/libs/nodes/src/nodesCodeFuncs.c +++ b/source/libs/nodes/src/nodesCodeFuncs.c @@ -440,7 +440,7 @@ static int32_t nodeListToJson(SJson* pJson, const char* pName, const SNodeList* if (LIST_LENGTH(pList) > 0) { SJson* jList = tjsonAddArrayToObject(pJson, pName); if (NULL == jList) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SNode* pNode; FOREACH(pNode, pList) { @@ -8246,8 +8246,7 @@ int32_t nodesNodeToString(const SNode* pNode, bool format, char** pStr, int32_t* SJson* pJson = tjsonCreateObject(); if (NULL == pJson) { - terrno = TSDB_CODE_OUT_OF_MEMORY; - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = nodeToJson(pNode, pJson); @@ -8297,8 +8296,7 @@ int32_t nodesListToString(const SNodeList* pList, bool format, char** pStr, int3 SJson* pJson = tjsonCreateArray(); if (NULL == pJson) { - terrno = TSDB_CODE_OUT_OF_MEMORY; - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SNode* pNode; diff --git a/source/libs/nodes/src/nodesMsgFuncs.c b/source/libs/nodes/src/nodesMsgFuncs.c index e71cfc47f8..3ea5ff6611 100644 --- a/source/libs/nodes/src/nodesMsgFuncs.c +++ b/source/libs/nodes/src/nodesMsgFuncs.c @@ -79,7 +79,7 @@ static int32_t initTlvEncoder(STlvEncoder* pEncoder) { pEncoder->offset = 0; pEncoder->tlvCount = 0; pEncoder->pBuf = taosMemoryMalloc(pEncoder->allocSize); - return NULL == pEncoder->pBuf ? TSDB_CODE_OUT_OF_MEMORY : TSDB_CODE_SUCCESS; + return NULL == pEncoder->pBuf ? terrno : TSDB_CODE_SUCCESS; } static void clearTlvEncoder(STlvEncoder* pEncoder) { taosMemoryFree(pEncoder->pBuf); } @@ -96,7 +96,7 @@ static int32_t tlvEncodeImpl(STlvEncoder* pEncoder, int16_t type, const void* pV pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + tlvLen); void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize); if (NULL == pNewBuf) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pEncoder->pBuf = pNewBuf; } @@ -113,7 +113,7 @@ static int32_t tlvEncodeValueImpl(STlvEncoder* pEncoder, const void* pValue, int if (pEncoder->offset + len > pEncoder->allocSize) { void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize * 2); if (NULL == pNewBuf) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pEncoder->pBuf = pNewBuf; pEncoder->allocSize = pEncoder->allocSize * 2; @@ -248,7 +248,7 @@ static int32_t tlvEncodeObj(STlvEncoder* pEncoder, int16_t type, FToMsg func, co pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + sizeof(STlv)); void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize); if (NULL == pNewBuf) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pEncoder->pBuf = pNewBuf; } @@ -520,7 +520,7 @@ static int32_t tlvDecodeCStrP(STlv* pTlv, char** pValue) { static int32_t tlvDecodeDynBinary(STlv* pTlv, void** pValue) { *pValue = taosMemoryMalloc(pTlv->len); if (NULL == *pValue) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } memcpy(*pValue, pTlv->value, pTlv->len); return TSDB_CODE_SUCCESS; @@ -4841,7 +4841,7 @@ static int32_t msgToSArray(STlv* pTlv, void** pObj){ } pArray = taosArrayInit(capacity, elemSize); if (NULL == pArray) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pArray->size = actualSize; if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) { @@ -4859,7 +4859,7 @@ static int32_t msgToSArray(STlv* pTlv, void** pObj){ if (pDataTlv != NULL) { pArray = taosArrayInit(capacity, elemSize); if (NULL == pArray) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pArray->size = actualSize; if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) { diff --git a/source/libs/nodes/src/nodesUtilFuncs.c b/source/libs/nodes/src/nodesUtilFuncs.c index 22acf4df45..2c102f5e74 100644 --- a/source/libs/nodes/src/nodesUtilFuncs.c +++ b/source/libs/nodes/src/nodesUtilFuncs.c @@ -2443,8 +2443,7 @@ typedef struct SCollectFuncsCxt { static EDealRes collectFuncs(SNode* pNode, void* pContext) { SCollectFuncsCxt* pCxt = (SCollectFuncsCxt*)pContext; - if (QUERY_NODE_FUNCTION == nodeType(pNode) && pCxt->classifier(((SFunctionNode*)pNode)->funcId) && - !(((SExprNode*)pNode)->orderAlias)) { + if (QUERY_NODE_FUNCTION == nodeType(pNode) && pCxt->classifier(((SFunctionNode*)pNode)->funcId)) { SFunctionNode* pFunc = (SFunctionNode*)pNode; if (FUNCTION_TYPE_TBNAME == pFunc->funcType && pCxt->tableAlias) { SValueNode* pVal = (SValueNode*)nodesListGetNode(pFunc->pParameterList, 0); @@ -2765,7 +2764,7 @@ int32_t nodesMakeValueNodeFromString(char* literal, SValueNode** ppValNode) { pValNode->node.resType.bytes = lenStr + VARSTR_HEADER_SIZE; char* p = taosMemoryMalloc(lenStr + 1 + VARSTR_HEADER_SIZE); if (p == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } varDataSetLen(p, lenStr); memcpy(varDataVal(p), literal, lenStr + 1); diff --git a/source/libs/parser/src/parAstCreater.c b/source/libs/parser/src/parAstCreater.c index 77d50ffd91..55fda8c8de 100644 --- a/source/libs/parser/src/parAstCreater.c +++ b/source/libs/parser/src/parAstCreater.c @@ -933,7 +933,7 @@ SNode* createOperatorNode(SAstCreateContext* pCxt, EOperatorType type, SNode* pL SValueNode* pVal = (SValueNode*)pLeft; char* pNewLiteral = taosMemoryCalloc(1, strlen(pVal->literal) + 2); if (!pNewLiteral) { - pCxt->errCode = TSDB_CODE_OUT_OF_MEMORY; + pCxt->errCode = terrno; goto _err; } if ('+' == pVal->literal[0]) { diff --git a/source/libs/parser/src/parCalcConst.c b/source/libs/parser/src/parCalcConst.c index 87b434a202..e757ec8b24 100644 --- a/source/libs/parser/src/parCalcConst.c +++ b/source/libs/parser/src/parCalcConst.c @@ -210,7 +210,7 @@ static int32_t calcConstProject(SCalcConstContext* pCxt, SNode* pProject, bool d if (NULL != ((SExprNode*)pProject)->pAssociation) { pAssociation = taosArrayDup(((SExprNode*)pProject)->pAssociation, NULL); if (NULL == pAssociation) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } diff --git a/source/libs/parser/src/parInsertSml.c b/source/libs/parser/src/parInsertSml.c index 6bfab0c9ce..da9c9d5b8d 100644 --- a/source/libs/parser/src/parInsertSml.c +++ b/source/libs/parser/src/parInsertSml.c @@ -101,11 +101,11 @@ static int32_t smlBuildTagRow(SArray* cols, SBoundColInfo* tags, SSchema* pSchem SMsgBuf* msg) { SArray* pTagArray = taosArrayInit(tags->numOfBound, sizeof(STagVal)); if (!pTagArray) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } *tagName = taosArrayInit(8, TSDB_COL_NAME_LEN); if (!*tagName) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = TSDB_CODE_SUCCESS; @@ -125,7 +125,7 @@ static int32_t smlBuildTagRow(SArray* cols, SBoundColInfo* tags, SSchema* pSchem } if (taosArrayPush(*tagName, pTagSchema->name) == NULL){ - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; uError("SML smlBuildTagRow error push tag name"); goto end; } @@ -160,7 +160,7 @@ static int32_t smlBuildTagRow(SArray* cols, SBoundColInfo* tags, SSchema* pSchem (void)memcpy(&val.i64, &(kv->value), kv->length); } if (taosArrayPush(pTagArray, &val) == NULL){ - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; uError("SML smlBuildTagRow error push tag array"); goto end; } @@ -209,7 +209,7 @@ void clearColValArraySml(SArray* pCols) { int32_t smlBuildRow(STableDataCxt* pTableCxt) { SRow** pRow = taosArrayReserve(pTableCxt->pData->aRowP, 1); if (pRow == NULL){ - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int ret = tRowBuild(pTableCxt->pValues, pTableCxt->pSchema, pRow); if (TSDB_CODE_SUCCESS != ret) { @@ -431,7 +431,7 @@ int32_t smlBindData(SQuery* query, bool dataFormat, SArray* tags, SArray* colsSc pVal->value.nData = kv->length; pVal->value.pData = taosMemoryMalloc(kv->length); if (NULL == pVal->value.pData) { - ret = TSDB_CODE_OUT_OF_MEMORY; + ret = terrno; goto end; } (void)memcpy(pVal->value.pData, (uint8_t*)kv->value, kv->length); @@ -443,7 +443,7 @@ int32_t smlBindData(SQuery* query, bool dataFormat, SArray* tags, SArray* colsSc SRow** pRow = taosArrayReserve(pTableCxt->pData->aRowP, 1); if (NULL == pRow) { - ret = TSDB_CODE_OUT_OF_MEMORY; + ret = terrno; goto end; } ret = tRowBuild(pTableCxt->pValues, pTableCxt->pSchema, pRow); @@ -488,7 +488,7 @@ int32_t smlInitHandle(SQuery** query) { uError("create pTableBlockHashObj error"); qDestroyQuery(pQuery); nodesDestroyNode((SNode*)stmt); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } stmt->freeHashFunc = insDestroyTableDataCxtHashMap; stmt->freeArrayFunc = insDestroyVgroupDataCxtList; diff --git a/source/libs/parser/src/parInsertSql.c b/source/libs/parser/src/parInsertSql.c index a7e842f486..d6841fb492 100644 --- a/source/libs/parser/src/parInsertSql.c +++ b/source/libs/parser/src/parInsertSql.c @@ -666,7 +666,7 @@ static int32_t parseTagToken(const char** end, SToken* pToken, SSchema* pSchema, } else { val->pData = taosMemoryMalloc(size); if (NULL == val->pData) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } else { memcpy(val->pData, output, size); val->nData = size; @@ -683,7 +683,7 @@ static int32_t parseTagToken(const char** end, SToken* pToken, SSchema* pSchema, if (realLen > pSchema->bytes - VARSTR_HEADER_SIZE) realLen = pSchema->bytes - VARSTR_HEADER_SIZE; void* p = taosMemoryMalloc(realLen); if (p == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (!taosMbsToUcs4(pToken->z, pToken->n, (TdUcs4*)(p), realLen, &output)) { if (terrno == TAOS_SYSTEM_ERROR(E2BIG)) { @@ -736,7 +736,7 @@ int32_t parseTagValue(SMsgBuf* pMsgBuf, const char** pSql, uint8_t precision, SS bool isNull = isNullValue(pTagSchema->type, pToken); if (!isNull && pTagName) { if (NULL == taosArrayPush(pTagName, pTagSchema->name)) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -758,7 +758,7 @@ int32_t parseTagValue(SMsgBuf* pMsgBuf, const char** pSql, uint8_t precision, SS int32_t code = parseTagToken(pSql, pToken, pTagSchema, precision, &val, pMsgBuf); if (TSDB_CODE_SUCCESS == code) { if (NULL == taosArrayPush(pTagVals, &val)){ - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } } @@ -946,7 +946,7 @@ static int32_t parseTagsClauseImpl(SInsertParseContext* pCxt, SVnodeModifyOpStmt if (!(pTagVals = taosArrayInit(pCxt->tags.numOfBound, sizeof(STagVal))) || !(pTagName = taosArrayInit(pCxt->tags.numOfBound, TSDB_COL_NAME_LEN))) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _exit; } @@ -1425,7 +1425,7 @@ int32_t initTableColSubmitData(STableDataCxt* pTableCxt) { SSchema* pSchema = &pTableCxt->pMeta->schema[pTableCxt->boundColsInfo.pColIndex[i]]; SColData* pCol = taosArrayReserve(pTableCxt->pData->aCol, 1); if (NULL == pCol) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } tColDataInit(pCol, pSchema->colId, pSchema->type, pSchema->flags); } @@ -1595,7 +1595,7 @@ static int32_t parseValueTokenImpl(SInsertParseContext* pCxt, const char** pSql, } pVal->value.pData = taosMemoryMalloc(pToken->n); if (NULL == pVal->value.pData) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } memcpy(pVal->value.pData, pToken->z, pToken->n); pVal->value.nData = pToken->n; @@ -1615,7 +1615,7 @@ static int32_t parseValueTokenImpl(SInsertParseContext* pCxt, const char** pSql, if (realLen > pSchema->bytes - VARSTR_HEADER_SIZE) realLen = pSchema->bytes - VARSTR_HEADER_SIZE; char* pUcs4 = taosMemoryMalloc(realLen); if (NULL == pUcs4) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (!taosMbsToUcs4(pToken->z, pToken->n, (TdUcs4*)pUcs4, realLen, &len)) { taosMemoryFree(pUcs4); @@ -1636,7 +1636,7 @@ static int32_t parseValueTokenImpl(SInsertParseContext* pCxt, const char** pSql, } pVal->value.pData = taosMemoryMalloc(pToken->n); if (NULL == pVal->value.pData) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } memcpy(pVal->value.pData, pToken->z, pToken->n); pVal->value.nData = pToken->n; @@ -1657,7 +1657,7 @@ static int32_t parseValueTokenImpl(SInsertParseContext* pCxt, const char** pSql, } else { pVal->value.pData = taosMemoryMalloc(size); if (NULL == pVal->value.pData) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } else { memcpy(pVal->value.pData, output, size); pVal->value.nData = size; @@ -2218,7 +2218,7 @@ static int32_t parseDataFromFileImpl(SInsertParseContext* pCxt, SVnodeModifyOpSt if (NULL == pStmt->pTableCxtHashObj) { pStmt->pTableCxtHashObj = taosHashInit(128, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK); if (!pStmt->pTableCxtHashObj) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } int32_t numOfRows = 0; @@ -2351,20 +2351,20 @@ static int32_t constructStbRowsDataContext(SVnodeModifyOpStmt* pStmt, SStbRowsDa pStbRowsCxt->aTagNames = taosArrayInit(8, TSDB_COL_NAME_LEN); if (!pStbRowsCxt->aTagNames) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } } if (TSDB_CODE_SUCCESS == code) { pStbRowsCxt->aTagVals = taosArrayInit(8, sizeof(STagVal)); if (!pStbRowsCxt->aTagVals) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } } if (TSDB_CODE_SUCCESS == code) { // col values and bound cols info of STableDataContext is not used pStbRowsCxt->aColVals = taosArrayInit(getNumOfColumns(pStbRowsCxt->pStbMeta), sizeof(SColVal)); if (!pStbRowsCxt->aColVals) - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } if (TSDB_CODE_SUCCESS == code) { code = insInitColValues(pStbRowsCxt->pStbMeta, pStbRowsCxt->aColVals); @@ -2539,7 +2539,7 @@ static int32_t checkTableClauseFirstToken(SInsertParseContext* pCxt, SVnodeModif static int32_t setStmtInfo(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) { SBoundColInfo* tags = taosMemoryMalloc(sizeof(pCxt->tags)); if (NULL == tags) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } memcpy(tags, &pCxt->tags, sizeof(pCxt->tags)); @@ -2726,13 +2726,13 @@ static int32_t addTableVgroupFromMetaData(const SArray* pTables, SVnodeModifyOpS static int32_t buildTagNameFromMeta(STableMeta* pMeta, SArray** pTagName) { *pTagName = taosArrayInit(pMeta->tableInfo.numOfTags, TSDB_COL_NAME_LEN); if (NULL == *pTagName) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SSchema* pSchema = getTableTagSchema(pMeta); int32_t code = 0; for (int32_t i = 0; i < pMeta->tableInfo.numOfTags; ++i) { if (NULL == taosArrayPush(*pTagName, pSchema[i].name)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; taosArrayDestroy(*pTagName); *pTagName = NULL; break; @@ -2872,12 +2872,12 @@ static int32_t setRefreshMeta(SQuery* pQuery) { taosArrayDestroy(pQuery->pTableList); pQuery->pTableList = taosArrayInit(taosHashGetSize(pStmt->pTableNameHashObj), sizeof(SName)); if (!pQuery->pTableList) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } else { SName* pTable = taosHashIterate(pStmt->pTableNameHashObj, NULL); while (NULL != pTable) { if (NULL == taosArrayPush(pQuery->pTableList, pTable)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; taosHashCancelIterate(pStmt->pTableNameHashObj, pTable); break; } @@ -2890,12 +2890,12 @@ static int32_t setRefreshMeta(SQuery* pQuery) { taosArrayDestroy(pQuery->pDbList); pQuery->pDbList = taosArrayInit(taosHashGetSize(pStmt->pDbFNameHashObj), TSDB_DB_FNAME_LEN); if (!pQuery->pDbList) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } else { char* pDb = taosHashIterate(pStmt->pDbFNameHashObj, NULL); while (NULL != pDb) { if (NULL == taosArrayPush(pQuery->pDbList, pDb)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; taosHashCancelIterate(pStmt->pDbFNameHashObj, pDb); break; } @@ -2970,13 +2970,13 @@ static int32_t parseInsertSqlImpl(SInsertParseContext* pCxt, SVnodeModifyOpStmt* static int32_t buildInsertTableReq(SName* pName, SArray** pTables) { *pTables = taosArrayInit(1, sizeof(SName)); if (NULL == *pTables) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (NULL == taosArrayPush(*pTables, pName)) { taosArrayDestroy(*pTables); *pTables = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return TSDB_CODE_SUCCESS; } @@ -2985,7 +2985,7 @@ static int32_t buildInsertDbReq(SName* pName, SArray** pDbs) { if (NULL == *pDbs) { *pDbs = taosArrayInit(1, sizeof(STablesReq)); if (NULL == *pDbs) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -3002,7 +3002,7 @@ static int32_t buildInsertDbReq(SName* pName, SArray** pDbs) { static int32_t buildInsertUserAuthReq(const char* pUser, SName* pName, SArray** pUserAuth) { *pUserAuth = taosArrayInit(1, sizeof(SUserAuthInfo)); if (NULL == *pUserAuth) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SUserAuthInfo userAuth = {.type = AUTH_TYPE_WRITE}; @@ -3011,7 +3011,7 @@ static int32_t buildInsertUserAuthReq(const char* pUser, SName* pName, SArray** if (NULL == taosArrayPush(*pUserAuth, &userAuth)) { taosArrayDestroy(*pUserAuth); *pUserAuth = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return TSDB_CODE_SUCCESS; diff --git a/source/libs/parser/src/parInsertStmt.c b/source/libs/parser/src/parInsertStmt.c index ec4a6ee0e7..06b9c2d9ef 100644 --- a/source/libs/parser/src/parInsertStmt.c +++ b/source/libs/parser/src/parInsertStmt.c @@ -166,7 +166,7 @@ int32_t qBindStmtTagsValue(void* pBlock, void* boundTags, int64_t suid, const ch } } if (NULL == taosArrayPush(tagName, pTagSchema->name)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto end; } if (pTagSchema->type == TSDB_DATA_TYPE_JSON) { @@ -178,7 +178,7 @@ int32_t qBindStmtTagsValue(void* pBlock, void* boundTags, int64_t suid, const ch isJson = true; char* tmp = taosMemoryCalloc(1, colLen + 1); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto end; } memcpy(tmp, bind[c].buffer, colLen); @@ -219,7 +219,7 @@ int32_t qBindStmtTagsValue(void* pBlock, void* boundTags, int64_t suid, const ch memcpy(&val.i64, bind[c].buffer, colLen); } if (NULL == taosArrayPush(pTagArray, &val)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto end; } } @@ -261,7 +261,7 @@ int32_t convertStmtNcharCol(SMsgBuf* pMsgBuf, SSchema* pSchema, TAOS_MULTI_BIND* if (dst->buffer_length < newBuflen) { dst->buffer = taosMemoryRealloc(dst->buffer, newBuflen); if (NULL == dst->buffer) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -269,7 +269,7 @@ int32_t convertStmtNcharCol(SMsgBuf* pMsgBuf, SSchema* pSchema, TAOS_MULTI_BIND* dst->length = taosMemoryRealloc(dst->length, sizeof(int32_t) * src->num); if (NULL == dst->length) { taosMemoryFreeClear(dst->buffer); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -514,7 +514,7 @@ int32_t qBindStmtTagsValue2(void* pBlock, void* boundTags, int64_t suid, const c } } if (NULL == taosArrayPush(tagName, pTagSchema->name)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto end; } if (pTagSchema->type == TSDB_DATA_TYPE_JSON) { @@ -526,7 +526,7 @@ int32_t qBindStmtTagsValue2(void* pBlock, void* boundTags, int64_t suid, const c isJson = true; char* tmp = taosMemoryCalloc(1, colLen + 1); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto end; } memcpy(tmp, bind[c].buffer, colLen); @@ -567,7 +567,7 @@ int32_t qBindStmtTagsValue2(void* pBlock, void* boundTags, int64_t suid, const c memcpy(&val.i64, bind[c].buffer, colLen); } if (NULL == taosArrayPush(pTagArray, &val)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto end; } } @@ -690,12 +690,12 @@ int32_t qBindStmtStbColsValue2(void* pBlock, SArray* pCols, TAOS_STMT2_BIND* bin if (!ncharBinds) { ncharBinds = taosArrayInit(1, sizeof(ncharBind)); if (!ncharBinds) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _return; } } if (!taosArrayPush(ncharBinds, &ncharBind)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _return; } pBindInfos[c].bind = taosArrayGetLast(ncharBinds); @@ -733,7 +733,7 @@ static int32_t convertStmtNcharCol2(SMsgBuf* pMsgBuf, SSchema* pSchema, TAOS_STM // if (dst->buffer_length < newBuflen) { dst->buffer = taosMemoryRealloc(dst->buffer, newBuflen); if (NULL == dst->buffer) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } //} @@ -741,7 +741,7 @@ static int32_t convertStmtNcharCol2(SMsgBuf* pMsgBuf, SSchema* pSchema, TAOS_STM dst->length = taosMemoryRealloc(dst->length, sizeof(int32_t) * src->num); if (NULL == dst->length) { taosMemoryFreeClear(dst->buffer); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -1000,7 +1000,7 @@ int32_t qCloneStmtDataBlock(STableDataCxt** pDst, STableDataCxt* pSrc, bool rese void* pNewMeta = taosMemoryMalloc(TABLE_META_SIZE(pCxt->pMeta)); if (NULL == pNewMeta) { insDestroyTableDataCxt(*pDst); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } memcpy(pNewMeta, pCxt->pMeta, TABLE_META_SIZE(pCxt->pMeta)); pNewCxt->pMeta = pNewMeta; @@ -1013,7 +1013,7 @@ int32_t qCloneStmtDataBlock(STableDataCxt** pDst, STableDataCxt* pSrc, bool rese void* pNewColIdx = taosMemoryMalloc(pCxt->boundColsInfo.numOfBound * sizeof(*pCxt->boundColsInfo.pColIndex)); if (NULL == pNewColIdx) { insDestroyTableDataCxt(*pDst); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } memcpy(pNewColIdx, pCxt->boundColsInfo.pColIndex, pCxt->boundColsInfo.numOfBound * sizeof(*pCxt->boundColsInfo.pColIndex)); @@ -1024,7 +1024,7 @@ int32_t qCloneStmtDataBlock(STableDataCxt** pDst, STableDataCxt* pSrc, bool rese SSubmitTbData* pNewTb = (SSubmitTbData*)taosMemoryMalloc(sizeof(SSubmitTbData)); if (NULL == pNewTb) { insDestroyTableDataCxt(*pDst); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } memcpy(pNewTb, pCxt->pData, sizeof(*pCxt->pData)); diff --git a/source/libs/parser/src/parInsertUtil.c b/source/libs/parser/src/parInsertUtil.c index b3bfa3982c..05373aefb3 100644 --- a/source/libs/parser/src/parInsertUtil.c +++ b/source/libs/parser/src/parInsertUtil.c @@ -178,7 +178,7 @@ static int32_t initColValues(STableMeta* pTableMeta, SArray* pValues) { for (int32_t i = 0; i < pTableMeta->tableInfo.numOfColumns; ++i) { SColVal val = COL_VAL_NONE(pSchemas[i].colId, pSchemas[i].type); if (NULL == taosArrayPush(pValues, &val)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } } @@ -261,7 +261,7 @@ static int32_t createTableDataCxt(STableMeta* pTableMeta, SVCreateTbReq** pCreat if (TSDB_CODE_SUCCESS == code && !ignoreColVals) { pTableCxt->pValues = taosArrayInit(pTableMeta->tableInfo.numOfColumns, sizeof(SColVal)); if (NULL == pTableCxt->pValues) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } else { code = initColValues(pTableMeta, pTableCxt->pValues); } @@ -281,12 +281,12 @@ static int32_t createTableDataCxt(STableMeta* pTableMeta, SVCreateTbReq** pCreat if (pTableCxt->pData->flags & SUBMIT_REQ_COLUMN_DATA_FORMAT) { pTableCxt->pData->aCol = taosArrayInit(128, sizeof(SColData)); if (NULL == pTableCxt->pData->aCol) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } } else { pTableCxt->pData->aRowP = taosArrayInit(128, POINTER_BYTES); if (NULL == pTableCxt->pData->aRowP) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } } } @@ -323,13 +323,13 @@ static int32_t rebuildTableData(SSubmitTbData* pSrc, SSubmitTbData** pDst) { if (pTmp->flags & SUBMIT_REQ_COLUMN_DATA_FORMAT) { pTmp->aCol = taosArrayInit(128, sizeof(SColData)); if (NULL == pTmp->aCol) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; taosMemoryFree(pTmp); } } else { pTmp->aRowP = taosArrayInit(128, POINTER_BYTES); if (NULL == pTmp->aRowP) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; taosMemoryFree(pTmp); } } @@ -458,13 +458,13 @@ static int32_t fillVgroupDataCxt(STableDataCxt* pTableCxt, SVgroupDataCxt* pVgCx if (NULL == pVgCxt->pData->aSubmitTbData) { pVgCxt->pData->aSubmitTbData = taosArrayInit(128, sizeof(SSubmitTbData)); if (NULL == pVgCxt->pData->aSubmitTbData) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } // push data to submit, rebuild empty data for next submit if (NULL == taosArrayPush(pVgCxt->pData->aSubmitTbData, pTableCxt->pData)) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = 0; if (isRebuild) { @@ -494,7 +494,7 @@ static int32_t createVgroupDataCxt(STableDataCxt* pTableCxt, SHashObj* pVgroupHa int32_t code = taosHashPut(pVgroupHash, &pVgCxt->vgId, sizeof(pVgCxt->vgId), &pVgCxt, POINTER_BYTES); if (TSDB_CODE_SUCCESS == code) { if (NULL == taosArrayPush(pVgroupList, &pVgCxt)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; insDestroyVgroupDataCxt(pVgCxt); return code; } @@ -723,7 +723,7 @@ int32_t insMergeTableDataCxt(SHashObj* pTableHash, SArray** pVgDataBlocks, bool if (NULL == pVgroupHash || NULL == pVgroupList) { taosHashCleanup(pVgroupHash); taosArrayDestroy(pVgroupList); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = TSDB_CODE_SUCCESS; @@ -805,7 +805,7 @@ static int32_t buildSubmitReq(int32_t vgId, SSubmitReq2* pReq, void** pData, uin len += sizeof(SSubmitReq2Msg); pBuf = taosMemoryMalloc(len); if (NULL == pBuf) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } ((SSubmitReq2Msg*)pBuf)->header.vgId = htonl(vgId); ((SSubmitReq2Msg*)pBuf)->header.contLen = htonl(len); diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 473b4f4b1a..9e2220994f 100755 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -396,7 +396,7 @@ static int32_t addNamespace(STranslateContext* pCxt, void* pTable) { if (currTotalLevel > pCxt->currLevel) { SArray* pTables = taosArrayGetP(pCxt->pNsLevel, pCxt->currLevel); if (NULL == taosArrayPush(pTables, &pTable)) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (hasSameTableAlias(pTables)) { return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_NOT_UNIQUE_TABLE_ALIAS, @@ -406,7 +406,7 @@ static int32_t addNamespace(STranslateContext* pCxt, void* pTable) { do { SArray* pTables = taosArrayInit(TARRAY_MIN_SIZE, POINTER_BYTES); if (NULL == pTables) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (pCxt->currLevel == currTotalLevel) { if (NULL == taosArrayPush(pTables, &pTable)) { @@ -420,7 +420,7 @@ static int32_t addNamespace(STranslateContext* pCxt, void* pTable) { } } if (NULL == taosArrayPush(pCxt->pNsLevel, &pTables)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; taosArrayDestroy(pTables); break; } @@ -811,7 +811,7 @@ static int32_t initTranslateContext(SParseContext* pParseCxt, SParseMetaCache* p pCxt->pTables = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK); pCxt->pTargetTables = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK); if (NULL == pCxt->pNsLevel || NULL == pCxt->pDbs || NULL == pCxt->pTables || NULL == pCxt->pTargetTables) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return TSDB_CODE_SUCCESS; } @@ -833,7 +833,7 @@ static int32_t resetHighLevelTranslateNamespace(STranslateContext* pCxt) { } pCxt->pNsLevel = taosArrayInit(TARRAY_MIN_SIZE, POINTER_BYTES); if (NULL == pCxt->pNsLevel) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return TSDB_CODE_SUCCESS; } @@ -848,7 +848,7 @@ static int32_t resetTranslateNamespace(STranslateContext* pCxt) { } pCxt->pNsLevel = taosArrayInit(TARRAY_MIN_SIZE, POINTER_BYTES); if (NULL == pCxt->pNsLevel) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return TSDB_CODE_SUCCESS; } @@ -1208,7 +1208,7 @@ static int32_t setColumnInfoByExpr(STempTableNode* pTable, SExprNode* pExpr, SCo if (NULL == pExpr->pAssociation) { pExpr->pAssociation = taosArrayInit(TARRAY_MIN_SIZE, sizeof(SAssociationNode)); - if (!pExpr->pAssociation) return TSDB_CODE_OUT_OF_MEMORY; + if (!pExpr->pAssociation) return terrno; } SAssociationNode assNode; assNode.pPlace = (SNode**)pColRef; @@ -2700,7 +2700,7 @@ static int32_t rewriteDatabaseFunc(STranslateContext* pCxt, SNode** pNode) { if (NULL != pCxt->pParseCxt->db) { pCurrDb = taosStrdup((void*)pCxt->pParseCxt->db); if (NULL == pCurrDb) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } int32_t code = rewriteFuncToValue(pCxt, &pCurrDb, pNode); @@ -2711,7 +2711,7 @@ static int32_t rewriteDatabaseFunc(STranslateContext* pCxt, SNode** pNode) { static int32_t rewriteClentVersionFunc(STranslateContext* pCxt, SNode** pNode) { char* pVer = taosStrdup((void*)version); if (NULL == pVer) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = rewriteFuncToValue(pCxt, &pVer, pNode); if (TSDB_CODE_SUCCESS != code) taosMemoryFree(pVer); @@ -2721,7 +2721,7 @@ static int32_t rewriteClentVersionFunc(STranslateContext* pCxt, SNode** pNode) { static int32_t rewriteServerVersionFunc(STranslateContext* pCxt, SNode** pNode) { char* pVer = taosStrdup((void*)pCxt->pParseCxt->svrVer); if (NULL == pVer) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = rewriteFuncToValue(pCxt, &pVer, pNode); if (TSDB_CODE_SUCCESS != code) taosMemoryFree(pVer); @@ -2749,7 +2749,7 @@ static int32_t rewriteUserFunc(STranslateContext* pCxt, SNode** pNode) { } char* pUserConn = taosStrdup((void*)userConn); if (NULL == pUserConn) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = rewriteFuncToValue(pCxt, &pUserConn, pNode); if (TSDB_CODE_SUCCESS != code) { @@ -3795,13 +3795,13 @@ static int32_t addMnodeToVgroupList(const SEpSet* pEpSet, SArray** pVgroupList) if (NULL == *pVgroupList) { *pVgroupList = taosArrayInit(TARRAY_MIN_SIZE, sizeof(SVgroupInfo)); if (NULL == *pVgroupList) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } SVgroupInfo vg = {.vgId = MNODE_HANDLE}; memcpy(&vg.epSet, pEpSet, sizeof(SEpSet)); if (NULL == taosArrayPush(*pVgroupList, &vg)) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return TSDB_CODE_SUCCESS; } @@ -3853,10 +3853,10 @@ static int32_t getVnodeSysTableVgroupListImpl(STranslateContext* pCxt, SName* pT if (TSDB_CODE_SUCCESS == code) { *pVgroupList = taosArrayInit(1, sizeof(SVgroupInfo)); if (NULL == *pVgroupList) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } else { if (NULL == taosArrayPush(*pVgroupList, &vgInfo)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } } } else if (TSDB_CODE_MND_DB_NOT_EXIST == code || TSDB_CODE_MND_DB_IN_CREATING == code || @@ -4040,7 +4040,7 @@ static int32_t setTableTsmas(STranslateContext* pCxt, SName* pName, SRealTableNo if (!pRealTable->tsmaTargetTbVgInfo) { pRealTable->tsmaTargetTbVgInfo = taosArrayInit(pRealTable->pTsmas->size, POINTER_BYTES); if (!pRealTable->tsmaTargetTbVgInfo) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } } @@ -4071,7 +4071,7 @@ static int32_t setTableTsmas(STranslateContext* pCxt, SName* pName, SRealTableNo if (!pRealTable->tsmaTargetTbInfo) { pRealTable->tsmaTargetTbInfo = taosArrayInit(pRealTable->pTsmas->size, sizeof(STsmaTargetTbInfo)); if (!pRealTable->tsmaTargetTbInfo) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } } @@ -5185,7 +5185,7 @@ static int32_t rewriteProjectAlias(SNodeList* pProjectionList) { static int32_t checkProjectAlias(STranslateContext* pCxt, SNodeList* pProjectionList, SHashObj** pOutput) { SHashObj* pUserAliasSet = taosHashInit(LIST_LENGTH(pProjectionList), taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_NO_LOCK); - if (!pUserAliasSet) return TSDB_CODE_OUT_OF_MEMORY; + if (!pUserAliasSet) return terrno; SNode* pProject = NULL; int32_t code = TSDB_CODE_SUCCESS; FOREACH(pProject, pProjectionList) { @@ -6077,7 +6077,7 @@ static int32_t isOperatorTbnameInCond(STranslateContext* pCxt, SOperatorNode* pO } SNodeListNode* pValueListNode = (SNodeListNode*)pOperator->pRight; *ppTbNames = taosArrayInit(LIST_LENGTH(pValueListNode->pNodeList), sizeof(void*)); - if (!*ppTbNames) return TSDB_CODE_OUT_OF_MEMORY; + if (!*ppTbNames) return terrno; SNodeList* pValueNodeList = pValueListNode->pNodeList; SNode* pValNode = NULL; FOREACH(pValNode, pValueNodeList) { @@ -6147,7 +6147,7 @@ static int32_t findEqualCondTbnameInLogicCondAnd(STranslateContext* pCxt, SNode* if (!isTableExistInTableTbnames(aTableTbnames, info.pRealTable)) { // TODO: intersect tbNames of same table? speed if (NULL == taosArrayPush(aTableTbnames, &info)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } } else { @@ -6178,7 +6178,7 @@ static int32_t unionEqualCondTbnamesOfSameTable(SArray* aTableTbnames, SEqCondTb } if (TSDB_CODE_SUCCESS == code && !bFoundTable) { if (NULL == taosArrayPush(aTableTbnames, pInfo)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } } return code; @@ -6228,7 +6228,7 @@ static int32_t findEqualCondTbname(STranslateContext* pCxt, SNode* pWhere, SArra if (TSDB_CODE_SUCCESS != code) return code; if (bIsEqTbnameCond) { if (NULL == taosArrayPush(aTableTbnames, &info)) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } } else if (nodeType(pWhere) == QUERY_NODE_LOGIC_CONDITION) { @@ -6363,12 +6363,12 @@ static int32_t setEqualTbnameTableVgroups(STranslateContext* pCxt, SSelectStmt* if (pInfo->pRealTable->pTsmas) { pInfo->pRealTable->tsmaTargetTbVgInfo = taosArrayInit(pInfo->pRealTable->pTsmas->size, POINTER_BYTES); - if (!pInfo->pRealTable->tsmaTargetTbVgInfo) return TSDB_CODE_OUT_OF_MEMORY; + if (!pInfo->pRealTable->tsmaTargetTbVgInfo) return terrno; for (int32_t i = 0; i < pInfo->pRealTable->pTsmas->size; ++i) { STableTSMAInfo* pTsma = taosArrayGetP(pInfo->pRealTable->pTsmas, i); SArray* pTbNames = taosArrayInit(pInfo->aTbnames->size, POINTER_BYTES); - if (!pTbNames) return TSDB_CODE_OUT_OF_MEMORY; + if (!pTbNames) return terrno; for (int32_t k = 0; k < pInfo->aTbnames->size; ++k) { const char* pTbName = taosArrayGetP(pInfo->aTbnames, k); @@ -6387,7 +6387,7 @@ static int32_t setEqualTbnameTableVgroups(STranslateContext* pCxt, SSelectStmt* } if (TSDB_CODE_SUCCESS == code) { vgsInfo = taosMemoryMalloc(sizeof(SVgroupsInfo) + nTbls * sizeof(SVgroupInfo)); - if (!vgsInfo) code = TSDB_CODE_OUT_OF_MEMORY; + if (!vgsInfo) code = terrno; } if (TSDB_CODE_SUCCESS == code) { findVgroupsFromEqualTbname(pCxt, pTbNames, pInfo->pRealTable->table.dbName, numOfVgs, vgsInfo); @@ -6644,7 +6644,6 @@ static EDealRes replaceOrderByAliasImpl(SNode** pNode, void* pContext) { pCxt->pTranslateCxt->errCode = code; return DEAL_RES_ERROR; } - ((SExprNode*)pNew)->orderAlias = true; nodesDestroyNode(*pNode); *pNode = pNew; return DEAL_RES_CONTINUE; @@ -6668,7 +6667,6 @@ static EDealRes replaceOrderByAliasImpl(SNode** pNode, void* pContext) { pCxt->pTranslateCxt->errCode = code; return DEAL_RES_ERROR; } - ((SExprNode*)pNew)->orderAlias = true; ((SOrderByExprNode*)*pNode)->pExpr = pNew; nodesDestroyNode(pExpr); return DEAL_RES_CONTINUE; @@ -7055,7 +7053,6 @@ static int32_t addOrderByPrimaryKeyToQueryImpl(STranslateContext* pCxt, SNode* p nodesDestroyNode((SNode*)pOrderByExpr); return code; } - ((SExprNode*)pOrderByExpr->pExpr)->orderAlias = true; // NODES_DESTORY_LIST(*pOrderByList); return nodesListMakeStrictAppend(pOrderByList, (SNode*)pOrderByExpr); } @@ -7164,7 +7161,7 @@ static int32_t buildCreateDbRetentions(const SNodeList* pRetentions, SCreateDbRe if (NULL != pRetentions) { pReq->pRetensions = taosArrayInit(LIST_LENGTH(pRetentions), sizeof(SRetention)); if (NULL == pReq->pRetensions) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SValueNode* pFreq = NULL; SValueNode* pKeep = NULL; @@ -7176,7 +7173,7 @@ static int32_t buildCreateDbRetentions(const SNodeList* pRetentions, SCreateDbRe SRetention retention = { .freq = pFreq->datum.i, .freqUnit = pFreq->unit, .keep = pKeep->datum.i, .keepUnit = pKeep->unit}; if (NULL == taosArrayPush(pReq->pRetensions, &retention)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } } @@ -7721,7 +7718,7 @@ static int32_t checkCreateDatabase(STranslateContext* pCxt, SCreateDatabaseStmt* CMD_TYPE* pCmdReq = genericCmd; \ char* cmdSql = taosMemoryMalloc(sqlLen); \ if (cmdSql == NULL) { \ - return TSDB_CODE_OUT_OF_MEMORY; \ + return terrno; \ } \ memcpy(cmdSql, sql, sqlLen); \ pCmdReq->sqlLen = sqlLen; \ @@ -7857,7 +7854,7 @@ static int32_t buildCmdMsg(STranslateContext* pCxt, int16_t msgType, FSerializeF if (TSDB_CODE_SUCCESS != code) return code; pCxt->pCmdMsg = taosMemoryMalloc(sizeof(SCmdMsgInfo)); if (NULL == pCxt->pCmdMsg) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pCxt->pCmdMsg->epSet = pCxt->pParseCxt->mgmtEpSet; pCxt->pCmdMsg->msgType = msgType; @@ -7868,7 +7865,7 @@ static int32_t buildCmdMsg(STranslateContext* pCxt, int16_t msgType, FSerializeF pCxt->pCmdMsg->pMsg = taosMemoryMalloc(pCxt->pCmdMsg->msgLen); if (NULL == pCxt->pCmdMsg->pMsg) { taosMemoryFreeClear(pCxt->pCmdMsg); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (-1 == func(pCxt->pCmdMsg->pMsg, pCxt->pCmdMsg->msgLen, pReq)) { code = TSDB_CODE_INVALID_MSG; @@ -8008,7 +8005,7 @@ static int32_t translateS3MigrateDatabase(STranslateContext* pCxt, SS3MigrateDat static int32_t columnDefNodeToField(SNodeList* pList, SArray** pArray, bool calBytes) { *pArray = taosArrayInit(LIST_LENGTH(pList), sizeof(SFieldWithOptions)); - if (!pArray) return TSDB_CODE_OUT_OF_MEMORY; + if (!pArray) return terrno; int32_t code = TSDB_CODE_SUCCESS; SNode* pNode; @@ -8034,7 +8031,7 @@ static int32_t columnDefNodeToField(SNodeList* pList, SArray** pArray, bool calB field.flags |= COL_IS_KEY; } if (NULL == taosArrayPush(*pArray, &field)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } } @@ -8047,7 +8044,7 @@ static int32_t columnDefNodeToField(SNodeList* pList, SArray** pArray, bool calB static int32_t tagDefNodeToField(SNodeList* pList, SArray** pArray, bool calBytes) { *pArray = taosArrayInit(LIST_LENGTH(pList), sizeof(SField)); - if (!*pArray) return TSDB_CODE_OUT_OF_MEMORY; + if (!*pArray) return terrno; SNode* pNode; FOREACH(pNode, pList) { SColumnDefNode* pCol = (SColumnDefNode*)pNode; @@ -8280,7 +8277,7 @@ static int32_t checkTableSchemaImpl(STranslateContext* pCxt, SNodeList* pTags, S SHashObj* pHash = taosHashInit(LIST_LENGTH(pTags) + LIST_LENGTH(pCols), taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_NO_LOCK); if (NULL == pHash) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = checkTableTagsSchema(pCxt, pHash, pTags); @@ -8807,7 +8804,7 @@ static int32_t buildRollupFuncs(SNodeList* pFuncs, SArray** pArray) { return TSDB_CODE_SUCCESS; } *pArray = taosArrayInit(LIST_LENGTH(pFuncs), TSDB_FUNC_NAME_LEN); - if (!*pArray) return TSDB_CODE_OUT_OF_MEMORY; + if (!*pArray) return terrno; SNode* pNode; FOREACH(pNode, pFuncs) { if (NULL == taosArrayPush(*pArray, ((SFunctionNode*)pNode)->functionName)) { @@ -8843,7 +8840,7 @@ static int32_t buildCreateStbReq(STranslateContext* pCxt, SCreateTableStmt* pStm if (pStmt->pOptions->commentNull == false) { pReq->pComment = taosStrdup(pStmt->pOptions->comment); if (NULL == pReq->pComment) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pReq->commentLen = strlen(pStmt->pOptions->comment); } else { @@ -8920,7 +8917,7 @@ static int32_t buildAlterSuperTableReq(STranslateContext* pCxt, SAlterTableStmt* if (pStmt->pOptions->commentNull == false) { pAlterReq->comment = taosStrdup(pStmt->pOptions->comment); if (NULL == pAlterReq->comment) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pAlterReq->commentLen = strlen(pStmt->pOptions->comment); } else { @@ -8932,7 +8929,7 @@ static int32_t buildAlterSuperTableReq(STranslateContext* pCxt, SAlterTableStmt* pAlterReq->pFields = taosArrayInit(2, sizeof(TAOS_FIELD)); if (NULL == pAlterReq->pFields) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } switch (pStmt->alterType) { @@ -8945,7 +8942,7 @@ static int32_t buildAlterSuperTableReq(STranslateContext* pCxt, SAlterTableStmt* TAOS_FIELD field = {.type = pStmt->dataType.type, .bytes = calcTypeBytes(pStmt->dataType)}; strcpy(field.name, pStmt->colName); if (NULL == taosArrayPush(pAlterReq->pFields, &field)) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } break; } @@ -8954,12 +8951,12 @@ static int32_t buildAlterSuperTableReq(STranslateContext* pCxt, SAlterTableStmt* TAOS_FIELD oldField = {0}; strcpy(oldField.name, pStmt->colName); if (NULL == taosArrayPush(pAlterReq->pFields, &oldField)) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } TAOS_FIELD newField = {0}; strcpy(newField.name, pStmt->newColName); if (NULL == taosArrayPush(pAlterReq->pFields, &newField)) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } break; } @@ -8977,7 +8974,7 @@ static int32_t buildAlterSuperTableReq(STranslateContext* pCxt, SAlterTableStmt* return code; } if (NULL == taosArrayPush(pAlterReq->pFields, &field)) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } break; } @@ -8985,7 +8982,7 @@ static int32_t buildAlterSuperTableReq(STranslateContext* pCxt, SAlterTableStmt* taosArrayDestroy(pAlterReq->pFields); pAlterReq->pFields = taosArrayInit(1, sizeof(SFieldWithOptions)); - if (!pAlterReq->pFields) return TSDB_CODE_OUT_OF_MEMORY; + if (!pAlterReq->pFields) return terrno; SFieldWithOptions field = {.type = pStmt->dataType.type, .bytes = calcTypeBytes(pStmt->dataType)}; // TAOS_FIELD field = {.type = pStmt->dataType.type, .bytes = calcTypeBytes(pStmt->dataType)}; strcpy(field.name, pStmt->colName); @@ -9004,7 +9001,7 @@ static int32_t buildAlterSuperTableReq(STranslateContext* pCxt, SAlterTableStmt* return code; } } - if (NULL == taosArrayPush(pAlterReq->pFields, &field)) return TSDB_CODE_OUT_OF_MEMORY; + if (NULL == taosArrayPush(pAlterReq->pFields, &field)) return terrno; break; } default: @@ -9399,7 +9396,7 @@ static int32_t getSmaIndexDstVgId(STranslateContext* pCxt, const char* pDbName, static int32_t getSmaIndexSql(STranslateContext* pCxt, char** pSql, int32_t* pLen) { *pSql = taosStrdup(pCxt->pParseCxt->pSql); if (NULL == *pSql) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } *pLen = pCxt->pParseCxt->sqlLen + 1; return TSDB_CODE_SUCCESS; @@ -9739,7 +9736,7 @@ static int32_t buildCreateTopicReq(STranslateContext* pCxt, SCreateTopicStmt* pS pReq->sql = taosStrdup(pCxt->pParseCxt->pSql); if (NULL == pReq->sql) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = TSDB_CODE_SUCCESS; @@ -10579,7 +10576,7 @@ static int32_t addProjToProjColPos(STranslateContext* pCxt, const SSchema* pSche } if (TSDB_CODE_SUCCESS == code) { SProjColPos pos = {.colId = pSchema->colId, .pProj = pNewProj, .flags = pSchema->flags}; - code = (NULL == taosArrayPush(pProjColPos, &pos) ? TSDB_CODE_OUT_OF_MEMORY : TSDB_CODE_SUCCESS); + code = (NULL == taosArrayPush(pProjColPos, &pos) ? terrno : TSDB_CODE_SUCCESS); } if (TSDB_CODE_SUCCESS != code) { nodesDestroyNode(pNewProj); @@ -10591,7 +10588,7 @@ static int32_t setFillNullCols(SArray* pProjColPos, const STableMeta* pMeta, SCM int32_t numOfBoundCols = taosArrayGetSize(pProjColPos); pReq->fillNullCols = taosArrayInit(pMeta->tableInfo.numOfColumns - numOfBoundCols, sizeof(SColLocation)); if (NULL == pReq->fillNullCols) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } const SSchema* pSchemas = getTableColumnSchema(pMeta); int32_t indexOfBoundCols = 0; @@ -10607,7 +10604,7 @@ static int32_t setFillNullCols(SArray* pProjColPos, const STableMeta* pMeta, SCM } SColLocation colLoc = {.colId = pSchema->colId, .slotId = i, .type = pSchema->type}; if (NULL == taosArrayPush(pReq->fillNullCols, &colLoc)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } } @@ -10622,7 +10619,7 @@ static int32_t adjustOrderOfProjections(STranslateContext* pCxt, SNodeList** ppC SArray* pProjColPos = taosArrayInit(LIST_LENGTH((*ppCols)), sizeof(SProjColPos)); if (NULL == pProjColPos) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = TSDB_CODE_SUCCESS; @@ -10749,7 +10746,7 @@ static int32_t adjustOrderOfTags(STranslateContext* pCxt, SNodeList* pTags, cons SArray* pTagPos = taosArrayInit(LIST_LENGTH(pTags), sizeof(SProjColPos)); if (NULL == pTagPos) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = TSDB_CODE_SUCCESS; @@ -11154,7 +11151,7 @@ static int32_t buildCreateStreamReq(STranslateContext* pCxt, SCreateStreamStmt* if (TSDB_CODE_SUCCESS == code) { pReq->sql = taosStrdup(pCxt->pParseCxt->pSql); if (NULL == pReq->sql) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } } @@ -11196,7 +11193,7 @@ static int32_t translateCreateStream(STranslateContext* pCxt, SCreateStreamStmt* } else { pStmt->pReq = taosMemoryMalloc(sizeof(createReq)); if (NULL == pStmt->pReq) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } else { memcpy(pStmt->pReq, &createReq, sizeof(createReq)); memset(&createReq, 0, sizeof(createReq)); @@ -11235,7 +11232,7 @@ static int32_t buildIntervalForCreateStream(SCreateStreamStmt* pStmt, SInterval* static int32_t createStreamReqVersionInfo(SSDataBlock* pBlock, SArray** pArray, int64_t* lastTs, SInterval* pInterval) { *pArray = taosArrayInit(pBlock->info.rows, sizeof(SVgroupVer)); if (*pArray == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (pBlock->info.rows > 0) { @@ -11800,7 +11797,7 @@ static int32_t buildTSMAAstStreamSubTable(SCreateTSMAStmt* pStmt, SMCreateSmaReq sprintf(pConcatFunc->functionName, "%s", "concat"); pVal->literal = taosMemoryMalloc(TSDB_TABLE_FNAME_LEN + 1); if (!pVal->literal) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _end; } sprintf(pVal->literal, "%s_", pReq->name); @@ -13320,7 +13317,7 @@ static int32_t buildNormalTableBatchReq(int32_t acctId, const SCreateTableStmt* req.comment = taosStrdup(pStmt->pOptions->comment); if (NULL == req.comment) { tdDestroySVCreateTbReq(&req); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } req.commentLen = strlen(pStmt->pOptions->comment); } else { @@ -13365,11 +13362,11 @@ static int32_t buildNormalTableBatchReq(int32_t acctId, const SCreateTableStmt* pBatch->req.pArray = taosArrayInit(1, sizeof(struct SVCreateTbReq)); if (NULL == pBatch->req.pArray) { tdDestroySVCreateTbReq(&req); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (NULL == taosArrayPush(pBatch->req.pArray, &req)) { tdDestroySVCreateTbReq(&req); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return TSDB_CODE_SUCCESS; @@ -13391,7 +13388,7 @@ static int32_t serializeVgroupCreateTableBatch(SVgroupCreateTableBatch* pTbBatch tlen += sizeof(SMsgHead); void* buf = taosMemoryMalloc(tlen); if (NULL == buf) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } ((SMsgHead*)buf)->vgId = htonl(pTbBatch->info.vgId); ((SMsgHead*)buf)->contLen = htonl(tlen); @@ -13415,7 +13412,7 @@ static int32_t serializeVgroupCreateTableBatch(SVgroupCreateTableBatch* pTbBatch pVgData->size = tlen; pVgData->numOfTables = (int32_t)taosArrayGetSize(pTbBatch->req.pArray); if (NULL == taosArrayPush(pBufArray, &pVgData)) { - ret = TSDB_CODE_OUT_OF_MEMORY; + ret = terrno; taosMemoryFreeClear(buf); taosMemoryFreeClear(pVgData); } @@ -13461,7 +13458,7 @@ static int32_t buildCreateTableDataBlock(int32_t acctId, const SCreateTableStmt* SArray** pBufArray) { *pBufArray = taosArrayInit(1, POINTER_BYTES); if (NULL == *pBufArray) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SVgroupCreateTableBatch tbatch = {0}; @@ -13544,7 +13541,7 @@ static int32_t addCreateTbReqIntoVgroup(SHashObj* pVgroupHashmap, const char* db code = terrno; } else if (NULL == taosArrayPush(tBatch.req.pArray, &req)) { taosArrayDestroy(tBatch.req.pArray); - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } else { code = taosHashPut(pVgroupHashmap, &pVgInfo->vgId, sizeof(pVgInfo->vgId), &tBatch, sizeof(tBatch)); if (TSDB_CODE_SUCCESS != code) { @@ -13553,7 +13550,7 @@ static int32_t addCreateTbReqIntoVgroup(SHashObj* pVgroupHashmap, const char* db } } else { // add to the correct vgroup if (NULL == taosArrayPush(pTableBatch->req.pArray, &req)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } } @@ -13590,7 +13587,7 @@ static int32_t buildKVRowForBindTags(STranslateContext* pCxt, SCreateSubTableCla SArray* pTagArray = taosArrayInit(LIST_LENGTH(pStmt->pValsOfTags), sizeof(STagVal)); if (NULL == pTagArray) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = TSDB_CODE_SUCCESS; @@ -13657,7 +13654,7 @@ static int32_t buildKVRowForAllTags(STranslateContext* pCxt, SCreateSubTableClau SArray* pTagArray = taosArrayInit(LIST_LENGTH(pStmt->pValsOfTags), sizeof(STagVal)); if (NULL == pTagArray) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = TSDB_CODE_SUCCESS; @@ -13773,7 +13770,7 @@ static int32_t buildTagIndexForBindTags(SMsgBuf* pMsgBuf, SCreateSubTableFromFil SHashObj* pIdxHash = taosHashInit(16, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), false, HASH_NO_LOCK); if (NULL == pIdxHash) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } bool tbnameFound = false; @@ -13829,7 +13826,7 @@ static int32_t buildTagIndexForBindTags(SMsgBuf* pMsgBuf, SCreateSubTableFromFil } if (NULL == taosArrayPush(aTagIndexs, &idx)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _OUT; } } @@ -13990,7 +13987,7 @@ static int32_t parseCsvFile(SMsgBuf* pMsgBuf, SParseContext* pParseCxt, SParseFi if (NULL == taosArrayPush(pParFileCxt->aCreateTbData, &data)) { taosMemoryFreeClear(pParFileCxt->pTag); - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } } else { taosMemoryFreeClear(pParFileCxt->pTag); @@ -14045,7 +14042,7 @@ static int32_t constructParseFileContext(SCreateSubTableFromFileClause* pStmt, S if (NULL == pParFileCxt->aTagNames) { pParFileCxt->aTagNames = taosArrayInit(8, TSDB_COL_NAME_LEN); if (NULL == pParFileCxt->aTagNames) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _ERR; } } @@ -14053,7 +14050,7 @@ static int32_t constructParseFileContext(SCreateSubTableFromFileClause* pStmt, S if (NULL == pParFileCxt->aCreateTbData) { pParFileCxt->aCreateTbData = taosArrayInit(16, sizeof(SCreateTableData)); if (NULL == pParFileCxt->aCreateTbData) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _ERR; } } @@ -14061,7 +14058,7 @@ static int32_t constructParseFileContext(SCreateSubTableFromFileClause* pStmt, S if (NULL == pParFileCxt->aTagIndexs) { pParFileCxt->aTagIndexs = taosArrayInit(pStmt->pSpecificTags->length, sizeof(int16_t)); if (!pParFileCxt->aTagIndexs) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _ERR; } } @@ -14069,7 +14066,7 @@ static int32_t constructParseFileContext(SCreateSubTableFromFileClause* pStmt, S if (NULL == pParFileCxt->aTagVals) { pParFileCxt->aTagVals = taosArrayInit(8, sizeof(STagVal)); if (!pParFileCxt->aTagVals) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _ERR; } } @@ -14222,7 +14219,7 @@ static int32_t rewriteCreateMultiTable(STranslateContext* pCxt, SQuery* pQuery) SHashObj* pVgroupHashmap = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), false, HASH_NO_LOCK); if (NULL == pVgroupHashmap) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } taosHashSetFreeFp(pVgroupHashmap, destroyCreateTbReqBatch); @@ -14258,7 +14255,7 @@ static int32_t rewriteCreateTableFromFile(STranslateContext* pCxt, SQuery* pQuer pModifyStmt->destroyParseFileCxt = destructParseFileContext; pModifyStmt->pVgroupsHashObj = taosHashInit(128, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), true, HASH_NO_LOCK); if (NULL == pModifyStmt->pVgroupsHashObj) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } taosHashSetFreeFp(pModifyStmt->pVgroupsHashObj, destroyCreateTbReqBatch); @@ -14340,7 +14337,7 @@ static int32_t addDropTbReqIntoVgroup(SHashObj* pVgroupHashmap, SVgroupInfo* pVg if (NULL == taosArrayPush(tBatch.req.pArray, pReq)) { taosArrayDestroy(tBatch.req.pArray); tBatch.req.pArray = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } code = taosHashPut(pVgroupHashmap, &pVgInfo->vgId, sizeof(pVgInfo->vgId), &tBatch, sizeof(tBatch)); @@ -14351,7 +14348,7 @@ static int32_t addDropTbReqIntoVgroup(SHashObj* pVgroupHashmap, SVgroupInfo* pVg } } else { // add to the correct vgroup if (NULL == taosArrayPush(pTableBatch->req.pArray, pReq)) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } return code; @@ -14405,7 +14402,7 @@ static int32_t serializeVgroupDropTableBatch(SVgroupDropTableBatch* pTbBatch, SA tlen += sizeof(SMsgHead); void* buf = taosMemoryMalloc(tlen); if (NULL == buf) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } ((SMsgHead*)buf)->vgId = htonl(pTbBatch->info.vgId); ((SMsgHead*)buf)->contLen = htonl(tlen); @@ -14429,7 +14426,7 @@ static int32_t serializeVgroupDropTableBatch(SVgroupDropTableBatch* pTbBatch, SA pVgData->size = tlen; pVgData->numOfTables = (int32_t)taosArrayGetSize(pTbBatch->req.pArray); if (NULL == taosArrayPush(pBufArray, &pVgData)) { - ret = TSDB_CODE_OUT_OF_MEMORY; + ret = terrno; taosMemoryFreeClear(pVgData); taosMemoryFreeClear(buf); } @@ -14471,7 +14468,7 @@ static int32_t rewriteDropTable(STranslateContext* pCxt, SQuery* pQuery) { SHashObj* pVgroupHashmap = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), false, HASH_NO_LOCK); if (NULL == pVgroupHashmap) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } taosHashSetFreeFp(pVgroupHashmap, destroyDropTbReqBatch); @@ -14525,7 +14522,7 @@ static int32_t rewriteDropTable(STranslateContext* pCxt, SQuery* pQuery) { reqOnVg.pTbs = pTbBatch->req.pArray; if (NULL == taosArrayPush(req.pVgReqs, &reqOnVg)) { taosHashCancelIterate(pVgroupHashmap, pTbBatch); - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } } while (true); @@ -14567,11 +14564,11 @@ static int32_t buildUpdateTagValReq(STranslateContext* pCxt, SAlterTableStmt* pS } pReq->tagName = taosStrdup(pStmt->colName); if (NULL == pReq->tagName) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pReq->pTagArray = taosArrayInit(1, sizeof(STagVal)); if (NULL == pReq->pTagArray) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pReq->colId = pSchema->colId; pReq->tagType = pSchema->type; @@ -14654,7 +14651,7 @@ static int32_t buildAddColReq(STranslateContext* pCxt, SAlterTableStmt* pStmt, S pReq->colName = taosStrdup(pStmt->colName); if (NULL == pReq->colName) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pReq->type = pStmt->dataType.type; @@ -14688,7 +14685,7 @@ static int32_t buildDropColReq(STranslateContext* pCxt, SAlterTableStmt* pStmt, pReq->colName = taosStrdup(pStmt->colName); if (NULL == pReq->colName) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pReq->colId = pSchema->colId; @@ -14719,7 +14716,7 @@ static int32_t buildUpdateColReq(STranslateContext* pCxt, SAlterTableStmt* pStmt pReq->colName = taosStrdup(pStmt->colName); if (NULL == pReq->colName) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pReq->colId = pSchema->colId; @@ -14749,7 +14746,7 @@ static int32_t buildRenameColReq(STranslateContext* pCxt, SAlterTableStmt* pStmt pReq->colName = taosStrdup(pStmt->colName); pReq->colNewName = taosStrdup(pStmt->newColName); if (NULL == pReq->colName || NULL == pReq->colNewName) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return TSDB_CODE_SUCCESS; } @@ -14766,7 +14763,7 @@ static int32_t buildUpdateOptionsReq(STranslateContext* pCxt, SAlterTableStmt* p if (pStmt->pOptions->commentNull == false) { pReq->newComment = taosStrdup(pStmt->pOptions->comment); if (NULL == pReq->newComment) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } else { pReq->newCommentLen = strlen(pReq->newComment); } @@ -14788,7 +14785,7 @@ static int buildAlterTableColumnCompress(STranslateContext* pCxt, SAlterTableStm pReq->colName = taosStrdup(pStmt->colName); pReq->colId = pSchema->colId; if (NULL == pReq->colName) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (!checkColumnEncode(pStmt->pColOptions->encode)) return TSDB_CODE_TSC_ENCODE_PARAM_ERROR; @@ -14804,7 +14801,7 @@ static int32_t buildAlterTbReq(STranslateContext* pCxt, SAlterTableStmt* pStmt, SVAlterTbReq* pReq) { pReq->tbName = taosStrdup(pStmt->tableName); if (NULL == pReq->tbName) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pReq->action = pStmt->alterType; @@ -14856,7 +14853,7 @@ static int32_t serializeAlterTbReq(STranslateContext* pCxt, SAlterTableStmt* pSt tlen += sizeof(SMsgHead); void* pMsg = taosMemoryMalloc(tlen); if (NULL == pMsg) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } ((SMsgHead*)pMsg)->vgId = htonl(vg.vgId); ((SMsgHead*)pMsg)->contLen = htonl(tlen); @@ -14879,7 +14876,7 @@ static int32_t serializeAlterTbReq(STranslateContext* pCxt, SAlterTableStmt* pSt pVgData->size = tlen; pVgData->numOfTables = 1; if (NULL == taosArrayPush(pArray, &pVgData)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } } @@ -14890,7 +14887,7 @@ static int32_t buildModifyVnodeArray(STranslateContext* pCxt, SAlterTableStmt* p SArray** pArray) { SArray* pTmpArray = taosArrayInit(1, sizeof(void*)); if (NULL == pTmpArray) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = serializeAlterTbReq(pCxt, pStmt, pReq, pTmpArray); @@ -14969,7 +14966,7 @@ static int32_t serializeFlushVgroup(SVgroupInfo* pVg, SArray* pBufArray) { void* buf = taosMemoryMalloc(len); int32_t code = TSDB_CODE_SUCCESS; if (NULL == buf) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } ((SMsgHead*)buf)->vgId = htonl(pVg->vgId); ((SMsgHead*)buf)->contLen = htonl(len); @@ -14983,7 +14980,7 @@ static int32_t serializeFlushVgroup(SVgroupInfo* pVg, SArray* pBufArray) { pVgData->pData = buf; pVgData->size = len; if (NULL == taosArrayPush(pBufArray, &pVgData)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } return code; @@ -14994,7 +14991,7 @@ static int32_t serializeFlushDb(SArray* pVgs, SArray** pOutput) { SArray* pBufArray = taosArrayInit(numOfVgs, sizeof(void*)); if (NULL == pBufArray) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } for (int32_t i = 0; i < numOfVgs; ++i) { @@ -15660,13 +15657,13 @@ static int32_t setRefreshMeta(STranslateContext* pCxt, SQuery* pQuery) { taosArrayDestroy(pQuery->pDbList); pQuery->pDbList = taosArrayInit(taosHashGetSize(pCxt->pDbs), TSDB_DB_FNAME_LEN); if (NULL == pQuery->pDbList) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SFullDatabaseName* pDb = taosHashIterate(pCxt->pDbs, NULL); while (NULL != pDb) { if (NULL == taosArrayPush(pQuery->pDbList, pDb->fullDbName)) { taosHashCancelIterate(pCxt->pDbs, pDb); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pDb = taosHashIterate(pCxt->pDbs, pDb); } @@ -15676,13 +15673,13 @@ static int32_t setRefreshMeta(STranslateContext* pCxt, SQuery* pQuery) { taosArrayDestroy(pQuery->pTableList); pQuery->pTableList = taosArrayInit(taosHashGetSize(pCxt->pTables), sizeof(SName)); if (NULL == pQuery->pTableList) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SName* pTable = taosHashIterate(pCxt->pTables, NULL); while (NULL != pTable) { if (NULL == taosArrayPush(pQuery->pTableList, pTable)) { taosHashCancelIterate(pCxt->pTables, pTable); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pTable = taosHashIterate(pCxt->pTables, pTable); } @@ -15692,13 +15689,13 @@ static int32_t setRefreshMeta(STranslateContext* pCxt, SQuery* pQuery) { taosArrayDestroy(pQuery->pTargetTableList); pQuery->pTargetTableList = taosArrayInit(taosHashGetSize(pCxt->pTargetTables), sizeof(SName)); if (NULL == pQuery->pTargetTableList) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SName* pTable = taosHashIterate(pCxt->pTargetTables, NULL); while (NULL != pTable) { if (NULL == taosArrayPush(pQuery->pTargetTableList, pTable)) { taosHashCancelIterate(pCxt->pTargetTables, pTable); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pTable = taosHashIterate(pCxt->pTargetTables, pTable); } diff --git a/source/libs/parser/src/parUtil.c b/source/libs/parser/src/parUtil.c index d17b8ac6c2..76a8303cad 100644 --- a/source/libs/parser/src/parUtil.c +++ b/source/libs/parser/src/parUtil.c @@ -424,7 +424,7 @@ int32_t parseJsontoTagData(const char* json, SArray* pTagVals, STag** ppTag, voi keyHash = taosHashInit(8, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, false); if (!keyHash) { - retCode = TSDB_CODE_OUT_OF_MEMORY; + retCode = terrno; goto end; } for (int32_t i = 0; i < size; i++) { @@ -494,7 +494,7 @@ int32_t parseJsontoTagData(const char* json, SArray* pTagVals, STag** ppTag, voi goto end; } if (NULL == taosArrayPush(pTagVals, &val)) { - retCode = TSDB_CODE_OUT_OF_MEMORY; + retCode = terrno; goto end; } } @@ -641,7 +641,7 @@ static int32_t buildTableReq(SHashObj* pTablesHash, SArray** pTables) { if (NULL != pTablesHash) { *pTables = taosArrayInit(taosHashGetSize(pTablesHash), sizeof(SName)); if (NULL == *pTables) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } void* p = taosHashIterate(pTablesHash, NULL); while (NULL != p) { @@ -653,7 +653,7 @@ static int32_t buildTableReq(SHashObj* pTablesHash, SArray** pTables) { int32_t code = tNameFromString(&name, fullName, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); if (TSDB_CODE_SUCCESS == code) { if (NULL == taosArrayPush(*pTables, &name)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } } if (TSDB_CODE_SUCCESS != code) { @@ -672,7 +672,7 @@ static int32_t buildDbReq(SHashObj* pDbsHash, SArray** pDbs) { if (NULL != pDbsHash) { *pDbs = taosArrayInit(taosHashGetSize(pDbsHash), TSDB_DB_FNAME_LEN); if (NULL == *pDbs) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } void* p = taosHashIterate(pDbsHash, NULL); while (NULL != p) { @@ -684,7 +684,7 @@ static int32_t buildDbReq(SHashObj* pDbsHash, SArray** pDbs) { taosHashCancelIterate(pDbsHash, p); taosArrayDestroy(*pDbs); *pDbs = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } p = taosHashIterate(pDbsHash, p); } @@ -697,7 +697,7 @@ static int32_t buildTableReqFromDb(SHashObj* pDbsHash, SArray** pDbs) { if (NULL == *pDbs) { *pDbs = taosArrayInit(taosHashGetSize(pDbsHash), sizeof(STablesReq)); if (NULL == *pDbs) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } SParseTablesMetaReq* p = taosHashIterate(pDbsHash, NULL); @@ -707,7 +707,7 @@ static int32_t buildTableReqFromDb(SHashObj* pDbsHash, SArray** pDbs) { int32_t code = buildTableReq(p->pTables, &req.pTables); if (TSDB_CODE_SUCCESS == code) { if (NULL == taosArrayPush(*pDbs, &req)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } } if (TSDB_CODE_SUCCESS != code) { @@ -726,7 +726,7 @@ static int32_t buildUserAuthReq(SHashObj* pUserAuthHash, SArray** pUserAuth) { if (NULL != pUserAuthHash) { *pUserAuth = taosArrayInit(taosHashGetSize(pUserAuthHash), sizeof(SUserAuthInfo)); if (NULL == *pUserAuth) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } void* p = taosHashIterate(pUserAuthHash, NULL); while (NULL != p) { @@ -740,7 +740,7 @@ static int32_t buildUserAuthReq(SHashObj* pUserAuthHash, SArray** pUserAuth) { taosHashCancelIterate(pUserAuthHash, p); taosArrayDestroy(*pUserAuth); *pUserAuth = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } p = taosHashIterate(pUserAuthHash, p); } @@ -752,7 +752,7 @@ static int32_t buildUdfReq(SHashObj* pUdfHash, SArray** pUdf) { if (NULL != pUdfHash) { *pUdf = taosArrayInit(taosHashGetSize(pUdfHash), TSDB_FUNC_NAME_LEN); if (NULL == *pUdf) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } void* p = taosHashIterate(pUdfHash, NULL); while (NULL != p) { @@ -764,7 +764,7 @@ static int32_t buildUdfReq(SHashObj* pUdfHash, SArray** pUdf) { taosHashCancelIterate(pUdfHash, p); taosArrayDestroy(*pUdf); *pUdf = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } p = taosHashIterate(pUdfHash, p); } @@ -837,7 +837,7 @@ static int32_t putMetaDataToHash(const char* pKey, int32_t len, const SArray* pD if (NULL == *pHash) { *pHash = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK); if (NULL == *pHash) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } SMetaRes* pRes = taosArrayGet(pData, index); @@ -973,7 +973,7 @@ static int32_t reserveTableReqInCacheImpl(const char* pTbFName, int32_t len, SHa if (NULL == *pTables) { *pTables = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK); if (NULL == *pTables) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } return taosHashPut(*pTables, pTbFName, len, &nullPointer, POINTER_BYTES); @@ -999,7 +999,7 @@ static int32_t reserveTableReqInDbCache(int32_t acctId, const char* pDb, const c if (NULL == *pDbs) { *pDbs = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK); if (NULL == *pDbs) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } char fullName[TSDB_DB_FNAME_LEN]; @@ -1074,7 +1074,7 @@ static int32_t reserveDbReqInCache(int32_t acctId, const char* pDb, SHashObj** p if (NULL == *pDbs) { *pDbs = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK); if (NULL == *pDbs) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } char fullName[TSDB_TABLE_FNAME_LEN]; @@ -1155,7 +1155,7 @@ static int32_t reserveUserAuthInCacheImpl(const char* pKey, int32_t len, SParseM if (NULL == pMetaCache->pUserAuth) { pMetaCache->pUserAuth = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK); if (NULL == pMetaCache->pUserAuth) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } return taosHashPut(pMetaCache->pUserAuth, pKey, len, &nullPointer, POINTER_BYTES); @@ -1191,7 +1191,7 @@ int32_t reserveUdfInCache(const char* pFunc, SParseMetaCache* pMetaCache) { if (NULL == pMetaCache->pUdf) { pMetaCache->pUdf = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK); if (NULL == pMetaCache->pUdf) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } return taosHashPut(pMetaCache->pUdf, pFunc, strlen(pFunc), &nullPointer, POINTER_BYTES); diff --git a/source/libs/planner/src/planOptimizer.c b/source/libs/planner/src/planOptimizer.c index 1296986e7f..401b4f93d1 100644 --- a/source/libs/planner/src/planOptimizer.c +++ b/source/libs/planner/src/planOptimizer.c @@ -1198,7 +1198,7 @@ static int32_t pdcJoinCollectColsFromParent(SJoinLogicNode* pJoin, SSHashObj* pT .pColHash = taosHashInit(128, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK) }; if (NULL == cxt.pColHash) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } nodesWalkExpr(pJoin->pPrimKeyEqCond, pdcJoinCollectCondCol, &cxt); @@ -4304,7 +4304,7 @@ static int32_t lastRowScanBuildFuncTypes(SScanLogicNode* pScan, SColumnNode* pCo pScan->pFuncTypes = taosArrayInit(pScan->pScanCols->length, sizeof(SFunctParam)); if (NULL == pScan->pFuncTypes) { taosMemoryFree(pFuncTypeParam); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -4317,7 +4317,7 @@ static int32_t lastRowScanBuildFuncTypes(SScanLogicNode* pScan, SColumnNode* pCo strcpy(pFuncTypeParam->pCol->name, pColNode->colName); if (NULL == taosArrayPush(pScan->pFuncTypes, pFuncTypeParam)) { taosMemoryFree(pFuncTypeParam); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } taosMemoryFree(pFuncTypeParam); @@ -6692,7 +6692,7 @@ static int32_t fillTSMAOptCtx(STSMAOptCtx* pTsmaOptCtx, SScanLogicNode* pScan) { pTsmaOptCtx->pUsefulTsmas = taosArrayInit(pScan->pTsmas->size, sizeof(STSMAOptUsefulTsma)); pTsmaOptCtx->pUsedTsmas = taosArrayInit(3, sizeof(STSMAOptUsefulTsma)); if (!pTsmaOptCtx->pUsefulTsmas || !pTsmaOptCtx->pUsedTsmas) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } return code; } @@ -6755,7 +6755,7 @@ static int32_t tsmaOptCheckValidFuncs(const SArray* pTsmaFuncs, const SNodeList* } found = true; if (NULL == taosArrayPush(pTsmaScanCols, &i)) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } break; } @@ -6813,7 +6813,7 @@ static int32_t tsmaOptFilterTsmas(STSMAOptCtx* pTsmaOptCtx) { for (int32_t i = 0; i < pTsmaOptCtx->pTsmas->size; ++i) { if (!pTsmaScanCols) { pTsmaScanCols = taosArrayInit(pTsmaOptCtx->pAggFuncs->length, sizeof(int32_t)); - if (!pTsmaScanCols) return TSDB_CODE_OUT_OF_MEMORY; + if (!pTsmaScanCols) return terrno; } if (pTsmaOptCtx->pScan->tableType == TSDB_CHILD_TABLE || pTsmaOptCtx->pScan->tableType == TSDB_NORMAL_TABLE) { const STsmaTargetTbInfo* ptbInfo = taosArrayGet(pTsmaOptCtx->pScan->pTsmaTargetTbInfo, i); @@ -6842,7 +6842,7 @@ static int32_t tsmaOptFilterTsmas(STSMAOptCtx* pTsmaOptCtx) { if (pTsmaScanCols) { taosArrayDestroy(pTsmaScanCols); } - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } if (pTsmaScanCols) taosArrayDestroy(pTsmaScanCols); @@ -6949,7 +6949,7 @@ static int32_t tsmaOptSplitWindows(STSMAOptCtx* pTsmaOptCtx, const STimeWindow* .scanRange = scanRange, .pTsmaScanCols = pTsmaFound ? pTsmaFound->pTsmaScanCols : NULL}; if (NULL == taosArrayPush(pTsmaOptCtx->pUsedTsmas, &usefulTsma)) - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } // the main tsma @@ -6962,7 +6962,7 @@ static int32_t tsmaOptSplitWindows(STSMAOptCtx* pTsmaOptCtx, const STimeWindow* STSMAOptUsefulTsma usefulTsma = { .pTsma = pTsma, .scanRange = scanRange, .pTsmaScanCols = pUsefulTsma->pTsmaScanCols}; if (NULL == taosArrayPush(pTsmaOptCtx->pUsedTsmas, &usefulTsma)) - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } // add tail tsma if possible @@ -6976,7 +6976,7 @@ static int32_t tsmaOptSplitWindows(STSMAOptCtx* pTsmaOptCtx, const STimeWindow* .scanRange = scanRange, .pTsmaScanCols = pTsmaFound ? pTsmaFound->pTsmaScanCols : NULL}; if (NULL == taosArrayPush(pTsmaOptCtx->pUsedTsmas, &usefulTsma)) - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return code; } diff --git a/source/libs/planner/src/planPhysiCreater.c b/source/libs/planner/src/planPhysiCreater.c index 2b0f449b77..a00eb05482 100644 --- a/source/libs/planner/src/planPhysiCreater.c +++ b/source/libs/planner/src/planPhysiCreater.c @@ -171,18 +171,18 @@ static int32_t putSlotToHashImpl(int16_t dataBlockId, int16_t slotId, const char if (NULL != pIndex) { SSlotIdInfo info = {.slotId = slotId, .set = false}; if (NULL == taosArrayPush(pIndex->pSlotIdsInfo, &info)) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return TSDB_CODE_SUCCESS; } SSlotIndex index = {.dataBlockId = dataBlockId, .pSlotIdsInfo = taosArrayInit(TARRAY_MIN_SIZE, sizeof(SSlotIdInfo))}; if (NULL == index.pSlotIdsInfo) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SSlotIdInfo info = {.slotId = slotId, .set = false}; if (NULL == taosArrayPush(index.pSlotIdsInfo, &info)) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } return taosHashPut(pHash, pName, len, &index, sizeof(SSlotIndex)); } @@ -195,22 +195,22 @@ static int32_t createDataBlockDescHash(SPhysiPlanContext* pCxt, int32_t capacity SHashObj** pDescHash, SHashObj** ppProjIdxDescHash) { SHashObj* pHash = taosHashInit(capacity, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_NO_LOCK); if (NULL == pHash) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SHashObj* pProjIdxHash = taosHashInit(capacity, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), false, HASH_NO_LOCK); if (!pProjIdxHash) { taosHashCleanup(pHash); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (NULL == taosArrayInsert(pCxt->pLocationHelper, dataBlockId, &pHash)) { taosHashCleanup(pHash); taosHashCleanup(pProjIdxHash); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (NULL == taosArrayInsert(pCxt->pProjIdxLocHelper, dataBlockId, &pProjIdxHash)) { taosHashCleanup(pHash); taosHashCleanup(pProjIdxHash); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } *pDescHash = pHash; @@ -529,14 +529,14 @@ static int32_t colIdCompare(const void* pLeft, const void* pRight) { static int32_t sortScanCols(SNodeList* pScanCols) { SArray* pArray = taosArrayInit(LIST_LENGTH(pScanCols), POINTER_BYTES); if (NULL == pArray) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = 0; SNode* pCol = NULL; FOREACH(pCol, pScanCols) { if (NULL == taosArrayPush(pArray, &pCol)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } } @@ -708,7 +708,7 @@ static int32_t createLastRowScanPhysiNode(SPhysiPlanContext* pCxt, SSubplan* pSu if (TSDB_CODE_SUCCESS == code && pScanLogicNode->pFuncTypes != NULL) { pScan->pFuncTypes = taosArrayInit(taosArrayGetSize(pScanLogicNode->pFuncTypes), sizeof(int32_t)); if (NULL == pScan->pFuncTypes) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SNode* pTargetNode = NULL; @@ -724,7 +724,7 @@ static int32_t createLastRowScanPhysiNode(SPhysiPlanContext* pCxt, SSubplan* pSu if (pColNode->colId == pFunctParam->pCol->colId && 0 == strncmp(pColNode->colName, pFunctParam->pCol->name, strlen(pColNode->colName))) { if (NULL == taosArrayInsert(pScan->pFuncTypes, funcTypeIndex, &pFunctParam->type)) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } break; } @@ -3047,7 +3047,7 @@ static int32_t setExecNodeList(SPhysiPlanContext* pCxt, SArray* pExecNodeList) { if (pCxt->hasSysScan || !pCxt->hasScan) { SQueryNodeLoad node = {.addr = {.nodeId = MNODE_HANDLE, .epSet = pCxt->pPlanCxt->mgmtEpSet}, .load = 0}; if (NULL == taosArrayPush(pExecNodeList, &node)) - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } return code; } @@ -3063,7 +3063,7 @@ int32_t createPhysiPlan(SPlanContext* pCxt, SQueryLogicPlan* pLogicPlan, SQueryP if (NULL == cxt.pLocationHelper || !cxt.pProjIdxLocHelper) { taosArrayDestroy(cxt.pLocationHelper); taosArrayDestroy(cxt.pProjIdxLocHelper); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t code = doCreatePhysiPlan(&cxt, pLogicPlan, pPlan); diff --git a/source/libs/qcom/src/queryUtil.c b/source/libs/qcom/src/queryUtil.c index e08d4cef87..ff20211af2 100644 --- a/source/libs/qcom/src/queryUtil.c +++ b/source/libs/qcom/src/queryUtil.c @@ -210,7 +210,6 @@ int32_t asyncSendMsgToServerExt(void* pTransporter, SEpSet* epSet, int64_t* pTra if (NULL == pMsg) { qError("0x%" PRIx64 " msg:%s malloc failed", pInfo->requestId, TMSG_INFO(pInfo->msgType)); destroySendMsgInfo(pInfo); - terrno = TSDB_CODE_OUT_OF_MEMORY; return terrno; } @@ -541,7 +540,7 @@ int32_t cloneTableMeta(STableMeta* pSrc, STableMeta** pDst) { } *pDst = taosMemoryMalloc(metaSize + schemaExtSize); if (NULL == *pDst) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } memcpy(*pDst, pSrc, metaSize); if (useCompress(pSrc->tableType) && pSrc->schemaExt) { @@ -585,7 +584,7 @@ int32_t cloneDbVgInfo(SDBVgInfo* pSrc, SDBVgInfo** pDst) { *pDst = taosMemoryMalloc(sizeof(*pSrc)); if (NULL == *pDst) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } memcpy(*pDst, pSrc, sizeof(*pSrc)); (*pDst)->vgArray = NULL; @@ -595,7 +594,7 @@ int32_t cloneDbVgInfo(SDBVgInfo* pSrc, SDBVgInfo** pDst) { HASH_ENTRY_LOCK); if (NULL == (*pDst)->vgHash) { taosMemoryFreeClear(*pDst); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SVgroupInfo* vgInfo = NULL; diff --git a/source/libs/qcom/src/querymsg.c b/source/libs/qcom/src/querymsg.c index 8725496ed2..48f392ee53 100644 --- a/source/libs/qcom/src/querymsg.c +++ b/source/libs/qcom/src/querymsg.c @@ -53,7 +53,7 @@ int32_t queryBuildUseDbOutput(SUseDbOutput *pOut, SUseDbRsp *usedbRsp) { pOut->dbVgroup->vgHash = taosHashInit(usedbRsp->vgNum, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), true, HASH_ENTRY_LOCK); if (NULL == pOut->dbVgroup->vgHash) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } for (int32_t i = 0; i < usedbRsp->vgNum; ++i) { @@ -259,11 +259,11 @@ int32_t queryBuildRetrieveFuncMsg(void *input, char **msg, int32_t msgSize, int3 funcReq.ignoreCodeComment = true; funcReq.pFuncNames = taosArrayInit(1, strlen(input) + 1); if (NULL == funcReq.pFuncNames) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (taosArrayPush(funcReq.pFuncNames, input) == NULL) { taosArrayDestroy(funcReq.pFuncNames); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t bufLen = tSerializeSRetrieveFuncReq(NULL, 0, &funcReq); diff --git a/source/libs/qworker/src/qwMsg.c b/source/libs/qworker/src/qwMsg.c index f84e5e463e..0011d1c70c 100644 --- a/source/libs/qworker/src/qwMsg.c +++ b/source/libs/qworker/src/qwMsg.c @@ -17,7 +17,7 @@ int32_t qwMallocFetchRsp(int8_t rpcMalloc, int32_t length, SRetrieveTableRsp **r (SRetrieveTableRsp *)(rpcMalloc ? rpcReallocCont(*rsp, msgSize) : taosMemoryRealloc(*rsp, msgSize)); if (NULL == pRsp) { qError("rpcMallocCont %d failed", msgSize); - QW_RET(TSDB_CODE_OUT_OF_MEMORY); + QW_RET(terrno); } if (NULL == *rsp) { @@ -79,7 +79,7 @@ int32_t qwBuildAndSendQueryRsp(int32_t rspType, SRpcHandleInfo *pConn, int32_t c void *pRsp = rpcMallocCont(msgSize); if (NULL == pRsp) { qError("rpcMallocCont %d failed", msgSize); - QW_RET(TSDB_CODE_OUT_OF_MEMORY); + QW_RET(terrno); } if (tSerializeSQueryTableRsp(pRsp, msgSize, &rsp) < 0) { @@ -246,7 +246,7 @@ int32_t qwBuildAndSendDropMsg(QW_FPARAMS_DEF, SRpcHandleInfo *pConn) { void *msg = rpcMallocCont(msgSize); if (NULL == msg) { QW_SCH_TASK_ELOG("rpcMallocCont %d failed", msgSize); - QW_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + QW_ERR_RET(terrno); } if (tSerializeSTaskDropReq(msg, msgSize, &qMsg) < 0) { @@ -325,7 +325,7 @@ int32_t qwRegisterQueryBrokenLinkArg(QW_FPARAMS_DEF, SRpcHandleInfo *pConn) { void *msg = rpcMallocCont(msgSize); if (NULL == msg) { QW_SCH_TASK_ELOG("rpcMallocCont %d failed", msgSize); - QW_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + QW_ERR_RET(terrno); } if (tSerializeSTaskDropReq(msg, msgSize, &qMsg) < 0) { @@ -360,7 +360,7 @@ int32_t qwRegisterHbBrokenLinkArg(SQWorker *mgmt, uint64_t sId, SRpcHandleInfo * void *msg = rpcMallocCont(msgSize); if (NULL == msg) { QW_SCH_ELOG("calloc %d failed", msgSize); - QW_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + QW_ERR_RET(terrno); } if (tSerializeSSchedulerHbReq(msg, msgSize, &req) < 0) { QW_SCH_ELOG("tSerializeSSchedulerHbReq hbReq failed, size:%d", msgSize); diff --git a/source/libs/qworker/src/qwUtil.c b/source/libs/qworker/src/qwUtil.c index aef348827a..d6266afa02 100644 --- a/source/libs/qworker/src/qwUtil.c +++ b/source/libs/qworker/src/qwUtil.c @@ -78,7 +78,7 @@ int32_t qwAddSchedulerImpl(SQWorker *mgmt, uint64_t sId, int32_t rwType) { if (NULL == newSch.tasksHash) { QW_SCH_ELOG("taosHashInit %d failed", mgmt->cfg.maxSchTaskNum); - QW_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + QW_ERR_RET(terrno); } QW_LOCK(QW_WRITE, &mgmt->schLock); diff --git a/source/libs/qworker/src/qworker.c b/source/libs/qworker/src/qworker.c index 2fd839cb8c..e08868d7c1 100644 --- a/source/libs/qworker/src/qworker.c +++ b/source/libs/qworker/src/qworker.c @@ -273,7 +273,7 @@ int32_t qwGenerateSchHbRsp(SQWorker *mgmt, SQWSchStatus *sch, SQWHbInfo *hbInfo) if (NULL == hbInfo->rsp.taskStatus) { QW_UNLOCK(QW_READ, &sch->tasksLock); QW_ELOG("taosArrayInit taskStatus failed, num:%d", taskNum); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } void *key = NULL; @@ -1343,14 +1343,14 @@ int32_t qWorkerInit(int8_t nodeType, int32_t nodeId, void **qWorkerMgmt, const S if (NULL == mgmt->schHash) { taosMemoryFreeClear(mgmt); qError("init %d scheduler hash failed", mgmt->cfg.maxSchedulerNum); - QW_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + QW_ERR_JRET(terrno); } mgmt->ctxHash = taosHashInit(mgmt->cfg.maxTaskNum, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_ENTRY_LOCK); if (NULL == mgmt->ctxHash) { qError("init %d task ctx hash failed", mgmt->cfg.maxTaskNum); - QW_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + QW_ERR_JRET(terrno); } mgmt->timer = taosTmrInit(0, 0, 0, "qworker"); diff --git a/source/libs/scalar/src/filter.c b/source/libs/scalar/src/filter.c index 752bb2c0f5..a9a765c0fa 100644 --- a/source/libs/scalar/src/filter.c +++ b/source/libs/scalar/src/filter.c @@ -970,7 +970,7 @@ int32_t filterDetachCnfGroup(SFilterGroup *gp1, SFilterGroup *gp2, SArray *group if (NULL == taosArrayPush(group, &gp)) { taosMemoryFreeClear(gp.unitIdxs); - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } return TSDB_CODE_SUCCESS; @@ -989,7 +989,7 @@ int32_t filterDetachCnfGroups(SArray *group, SArray *left, SArray *right) { SFilterGroup *gp = NULL; while ((gp = (SFilterGroup *)taosArrayPop(right)) != NULL) { if (NULL == taosArrayPush(group, gp)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } } @@ -1000,7 +1000,7 @@ int32_t filterDetachCnfGroups(SArray *group, SArray *left, SArray *right) { SFilterGroup *gp = NULL; while ((gp = (SFilterGroup *)taosArrayPop(left)) != NULL) { if (NULL == taosArrayPush(group, gp)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } } @@ -1177,7 +1177,7 @@ int32_t filterAddUnitImpl(SFilterInfo *info, uint8_t optr, SFilterFieldId *left, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, false); if (NULL == info->pctx.unitHash) { fltError("taosHashInit failed, size:%d", FILTER_DEFAULT_GROUP_SIZE * FILTER_DEFAULT_UNIT_SIZE); - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } } else { char v[14] = {0}; @@ -1196,7 +1196,7 @@ int32_t filterAddUnitImpl(SFilterInfo *info, uint8_t optr, SFilterFieldId *left, void *tmp = taosMemoryRealloc(info->units, info->unitSize * sizeof(SFilterUnit)); if (tmp == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } info->units = (SFilterUnit *)tmp; (void)memset(info->units + psize, 0, sizeof(*info->units) * FILTER_DEFAULT_UNIT_SIZE); @@ -1264,7 +1264,7 @@ int32_t filterAddUnitToGroup(SFilterGroup *group, uint32_t unitIdx) { void *tmp = taosMemoryRealloc(group->unitIdxs, group->unitSize * sizeof(*group->unitIdxs)); if (tmp == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } group->unitIdxs = tmp; } @@ -1351,7 +1351,7 @@ int32_t fltAddGroupUnitFromNode(SFilterInfo *info, SNode *tree, SArray *group) { } if (NULL == taosArrayPush(group, &fgroup)) { filterFreeGroup((void*)&fgroup); - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } @@ -1368,7 +1368,7 @@ int32_t fltAddGroupUnitFromNode(SFilterInfo *info, SNode *tree, SArray *group) { FLT_ERR_RET(filterAddUnitToGroup(&fgroup, uidx)); if (NULL == taosArrayPush(group, &fgroup)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } } @@ -1479,7 +1479,7 @@ int32_t filterAddGroupUnitFromCtx(SFilterInfo *dst, SFilterInfo *src, SFilterRan if (func(&ra->s, &ra->e) == 0) { void *data = taosMemoryMalloc(sizeof(int64_t)); if (data == NULL) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } SIMPLE_COPY_VALUES(data, &ra->s); FLT_ERR_RET(filterAddField(dst, NULL, &data, FLD_TYPE_VALUE, &right, tDataTypes[type].bytes, true, NULL)); @@ -1489,13 +1489,13 @@ int32_t filterAddGroupUnitFromCtx(SFilterInfo *dst, SFilterInfo *src, SFilterRan } else { void *data = taosMemoryMalloc(sizeof(int64_t)); if (data == NULL) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } SIMPLE_COPY_VALUES(data, &ra->s); FLT_ERR_RET(filterAddField(dst, NULL, &data, FLD_TYPE_VALUE, &right, tDataTypes[type].bytes, true, NULL)); void *data2 = taosMemoryMalloc(sizeof(int64_t)); if (data2 == NULL) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } SIMPLE_COPY_VALUES(data2, &ra->e); FLT_ERR_RET(filterAddField(dst, NULL, &data2, FLD_TYPE_VALUE, &right2, tDataTypes[type].bytes, true, NULL)); @@ -1512,7 +1512,7 @@ int32_t filterAddGroupUnitFromCtx(SFilterInfo *dst, SFilterInfo *src, SFilterRan if (!FILTER_GET_FLAG(ra->sflag, RANGE_FLG_NULL)) { void *data = taosMemoryMalloc(sizeof(int64_t)); if (data == NULL) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } SIMPLE_COPY_VALUES(data, &ra->s); FLT_ERR_RET(filterAddField(dst, NULL, &data, FLD_TYPE_VALUE, &right, tDataTypes[type].bytes, true, NULL)); @@ -1524,7 +1524,7 @@ int32_t filterAddGroupUnitFromCtx(SFilterInfo *dst, SFilterInfo *src, SFilterRan if (!FILTER_GET_FLAG(ra->eflag, RANGE_FLG_NULL)) { void *data = taosMemoryMalloc(sizeof(int64_t)); if (data == NULL) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } SIMPLE_COPY_VALUES(data, &ra->e); FLT_ERR_RET(filterAddField(dst, NULL, &data, FLD_TYPE_VALUE, &right, tDataTypes[type].bytes, true, NULL)); @@ -1551,7 +1551,7 @@ int32_t filterAddGroupUnitFromCtx(SFilterInfo *dst, SFilterInfo *src, SFilterRan FLT_ERR_RET(filterAddUnit(dst, OP_TYPE_IS_NULL, &left, NULL, &uidx)); FLT_ERR_RET(filterAddUnitToGroup(g, uidx)); if (NULL == taosArrayPush(res,g)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } } @@ -1566,7 +1566,7 @@ int32_t filterAddGroupUnitFromCtx(SFilterInfo *dst, SFilterInfo *src, SFilterRan FLT_ERR_RET(filterAddUnit(dst, OP_TYPE_IS_NOT_NULL, &left, NULL, &uidx)); FLT_ERR_RET(filterAddUnitToGroup(g, uidx)); if (NULL == taosArrayPush(res,g)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } } @@ -1593,7 +1593,7 @@ int32_t filterAddGroupUnitFromCtx(SFilterInfo *dst, SFilterInfo *src, SFilterRan if (func(&r->ra.s, &r->ra.e) == 0) { void *data = taosMemoryMalloc(sizeof(int64_t)); if (data == NULL) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } SIMPLE_COPY_VALUES(data, &r->ra.s); FLT_ERR_RET(filterAddField(dst, NULL, &data, FLD_TYPE_VALUE, &right, tDataTypes[type].bytes, true, NULL)); @@ -1602,13 +1602,13 @@ int32_t filterAddGroupUnitFromCtx(SFilterInfo *dst, SFilterInfo *src, SFilterRan } else { void *data = taosMemoryMalloc(sizeof(int64_t)); if (data == NULL) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } SIMPLE_COPY_VALUES(data, &r->ra.s); FLT_ERR_RET(filterAddField(dst, NULL, &data, FLD_TYPE_VALUE, &right, tDataTypes[type].bytes, true, NULL)); void *data2 = taosMemoryMalloc(sizeof(int64_t)); if (data2 == NULL) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } SIMPLE_COPY_VALUES(data2, &r->ra.e); FLT_ERR_RET(filterAddField(dst, NULL, &data2, FLD_TYPE_VALUE, &right2, tDataTypes[type].bytes, true, NULL)); @@ -1621,7 +1621,7 @@ int32_t filterAddGroupUnitFromCtx(SFilterInfo *dst, SFilterInfo *src, SFilterRan } if (NULL == taosArrayPush(res,g)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } r = r->next; @@ -1632,7 +1632,7 @@ int32_t filterAddGroupUnitFromCtx(SFilterInfo *dst, SFilterInfo *src, SFilterRan if (!FILTER_GET_FLAG(r->ra.sflag, RANGE_FLG_NULL)) { void *data = taosMemoryMalloc(sizeof(int64_t)); if (data == NULL) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } SIMPLE_COPY_VALUES(data, &r->ra.s); FLT_ERR_RET(filterAddField(dst, NULL, &data, FLD_TYPE_VALUE, &right, tDataTypes[type].bytes, true, NULL)); @@ -1644,7 +1644,7 @@ int32_t filterAddGroupUnitFromCtx(SFilterInfo *dst, SFilterInfo *src, SFilterRan if (!FILTER_GET_FLAG(r->ra.eflag, RANGE_FLG_NULL)) { void *data = taosMemoryMalloc(sizeof(int64_t)); if (data == NULL) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } SIMPLE_COPY_VALUES(data, &r->ra.e); FLT_ERR_RET(filterAddField(dst, NULL, &data, FLD_TYPE_VALUE, &right, tDataTypes[type].bytes, true, NULL)); @@ -1659,7 +1659,7 @@ int32_t filterAddGroupUnitFromCtx(SFilterInfo *dst, SFilterInfo *src, SFilterRan } if (NULL == taosArrayPush(res,g)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } r = r->next; @@ -2437,7 +2437,7 @@ int32_t filterMergeGroupUnits(SFilterInfo *info, SFilterGroupCtx **gRes, int32_t uint32_t gResIdx = 0; uint32_t *colIdx = taosMemoryMalloc(info->fields[FLD_TYPE_COLUMN].num * sizeof(uint32_t)); if (colIdx == NULL) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } for (uint32_t i = 0; i < info->groupNum; ++i) { SFilterGroup *g = info->groups + i; @@ -2684,7 +2684,7 @@ int32_t filterMergeTwoGroups(SFilterInfo *info, SFilterGroupCtx **gRes1, SFilter colCtx.colIdx = idx1; colCtx.ctx = ctx; if (NULL == taosArrayPush(colCtxs, &colCtx)) { - FLT_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_JRET(terrno); } break; } else { @@ -2703,7 +2703,7 @@ int32_t filterMergeTwoGroups(SFilterInfo *info, SFilterGroupCtx **gRes1, SFilter colCtx.ctx = ctx; ctx = NULL; if (NULL == taosArrayPush(colCtxs, &colCtx)) { - FLT_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_JRET(terrno); } } } else { @@ -2717,7 +2717,7 @@ int32_t filterMergeTwoGroups(SFilterInfo *info, SFilterGroupCtx **gRes1, SFilter colCtx.ctx = ctx; ctx = NULL; if (NULL == taosArrayPush(colCtxs, &colCtx)) { - FLT_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_JRET(terrno); } } @@ -2968,7 +2968,7 @@ int32_t filterRewrite(SFilterInfo *info, SFilterGroupCtx **gRes, int32_t gResNum if (ng.unitNum > 0) { if (NULL == taosArrayPush(group, &ng)) { - FLT_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_JRET(terrno); } ng = (SFilterGroup){0}; } @@ -3113,7 +3113,7 @@ int32_t filterGenerateComInfo(SFilterInfo *info) { info->blkUnitRes = taosMemoryMalloc(sizeof(*info->blkUnitRes) * info->unitNum); info->blkUnits = taosMemoryMalloc(sizeof(*info->blkUnits) * (info->unitNum + 1) * info->groupNum); if (NULL == info->cunits || NULL == info->blkUnitRes || NULL == info->blkUnits) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } for (uint32_t i = 0; i < info->unitNum; ++i) { @@ -3835,11 +3835,11 @@ int32_t fltInitFromNode(SNode *tree, SFilterInfo *info, uint32_t options) { info->unitRes = taosMemoryMalloc(info->unitNum * sizeof(*info->unitRes)); if (info->unitRes == NULL) { - FLT_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_JRET(terrno); } info->unitFlags = taosMemoryMalloc(info->unitNum * sizeof(*info->unitFlags)); if (info->unitFlags == NULL) { - FLT_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_JRET(terrno); } FLT_ERR_JRET(filterDumpInfoToString(info, "Final", 0)); return code; @@ -3987,12 +3987,12 @@ int32_t fltSclMergeSort(SArray *pts1, SArray *pts2, SArray *result) { bool less = fltSclLessPoint(pt1, pt2); if (less) { if (NULL == taosArrayPush(result, pt1)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } ++i; } else { if (NULL == taosArrayPush(result, pt2)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } ++j; } @@ -4004,7 +4004,7 @@ int32_t fltSclMergeSort(SArray *pts1, SArray *pts2, SArray *result) { FLT_ERR_RET(TSDB_CODE_OUT_OF_RANGE); } if (NULL == taosArrayPush(result, pt1)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } } } @@ -4015,7 +4015,7 @@ int32_t fltSclMergeSort(SArray *pts1, SArray *pts2, SArray *result) { FLT_ERR_RET(TSDB_CODE_OUT_OF_RANGE); } if (NULL == taosArrayPush(result, pt2)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } } } @@ -4042,13 +4042,13 @@ int32_t fltSclMerge(SArray *pts1, SArray *pts2, bool isUnion, SArray *merged) { ++count; if (count == countRequired) { if (NULL == taosArrayPush(merged, pt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } } } else { if (count == countRequired) { if (NULL == taosArrayPush(merged, pt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } } --count; @@ -4089,7 +4089,7 @@ int32_t fltSclGetOrCreateColumnRange(SColumnNode *colNode, SArray *colRangeList, FLT_ERR_RET(terrno); } if (NULL == taosArrayPush(colRangeList, &newColRange)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } *colRange = taosArrayGetLast(colRangeList); return TSDB_CODE_SUCCESS; @@ -4188,10 +4188,10 @@ int32_t fltSclBuildRangeFromBlockSma(SFltSclColumnRange *colRange, SColumnDataAg SFltSclPoint startPt = {.start = true, .excl = false, .val = datum}; SFltSclPoint endPt = {.start = false, .excl = false, .val = datum}; if (NULL == taosArrayPush(points, &startPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } if (NULL == taosArrayPush(points, &endPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } return TSDB_CODE_SUCCESS; } @@ -4200,10 +4200,10 @@ int32_t fltSclBuildRangeFromBlockSma(SFltSclColumnRange *colRange, SColumnDataAg SFltSclPoint startPt = {.start = true, .excl = false, .val = nullDatum}; SFltSclPoint endPt = {.start = false, .excl = false, .val = nullDatum}; if (NULL == taosArrayPush(points, &startPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } if (NULL == taosArrayPush(points, &endPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } } SFltSclDatum min = {0}; @@ -4213,10 +4213,10 @@ int32_t fltSclBuildRangeFromBlockSma(SFltSclColumnRange *colRange, SColumnDataAg FLT_ERR_RET(fltSclBuildDatumFromBlockSmaValue(&max, colRange->colNode->node.resType.type, pAgg->max)); SFltSclPoint maxPt = {.excl = false, .start = false, .val = max}; if (NULL == taosArrayPush(points, &minPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } if (NULL == taosArrayPush(points, &maxPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } return TSDB_CODE_SUCCESS; } @@ -4242,7 +4242,7 @@ int32_t filterRangeExecute(SFilterInfo *info, SColumnDataAgg *pDataStatis, int32 SColumnDataAgg *pAgg = &pDataStatis[j]; SArray *points = taosArrayInit(2, sizeof(SFltSclPoint)); if (NULL == points) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } FLT_ERR_RET(fltSclBuildRangeFromBlockSma(colRange, pAgg, numOfRows, points)); qDebug("column data agg: nulls %d, rows %d, max %" PRId64 " min %" PRId64, pAgg->numOfNull, numOfRows, @@ -4250,7 +4250,7 @@ int32_t filterRangeExecute(SFilterInfo *info, SColumnDataAgg *pDataStatis, int32 SArray *merged = taosArrayInit(8, sizeof(SFltSclPoint)); if (NULL == merged) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } FLT_ERR_RET(fltSclIntersect(points, colRange->points, merged)); bool isIntersect = taosArrayGetSize(merged) != 0; @@ -4570,7 +4570,7 @@ int32_t filterConverNcharColumns(SFilterInfo *info, int32_t rows, bool *gotNchar int32_t bytes = FILTER_GET_COL_FIELD_SIZE(fi); nfi.data = taosMemoryMalloc(rows * bytes); if (nfi.data == NULL) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } int32_t bufSize = bytes - VARSTR_HEADER_SIZE; for (int32_t j = 0; j < rows; ++j) { @@ -4629,7 +4629,7 @@ int32_t fltAddValueNodeToConverList(SFltTreeStat *stat, SValueNode *pNode) { } if (NULL == taosArrayPush(stat->nodeList, &pNode)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } return TSDB_CODE_SUCCESS; @@ -4881,10 +4881,10 @@ int32_t fltSclBuildRangePoints(SFltSclOperator *oper, SArray *points) { SFltSclDatum end = {.kind = FLT_SCL_DATUM_KIND_MAX, .type = oper->colNode->node.resType}; SFltSclPoint endPt = {.start = false, .excl = false, .val = end}; if (NULL == taosArrayPush(points, &startPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } if (NULL == taosArrayPush(points, &endPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } break; } @@ -4895,10 +4895,10 @@ int32_t fltSclBuildRangePoints(SFltSclOperator *oper, SArray *points) { SFltSclDatum end = {.kind = FLT_SCL_DATUM_KIND_MAX, .type = oper->colNode->node.resType}; SFltSclPoint endPt = {.start = false, .excl = false, .val = end}; if (NULL == taosArrayPush(points, &startPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } if (NULL == taosArrayPush(points, &endPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } break; } @@ -4909,10 +4909,10 @@ int32_t fltSclBuildRangePoints(SFltSclOperator *oper, SArray *points) { SFltSclDatum start = {.kind = FLT_SCL_DATUM_KIND_MIN, .type = oper->colNode->node.resType}; SFltSclPoint startPt = {.start = true, .excl = false, .val = start}; if (NULL == taosArrayPush(points, &startPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } if (NULL == taosArrayPush(points, &endPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } break; } @@ -4923,10 +4923,10 @@ int32_t fltSclBuildRangePoints(SFltSclOperator *oper, SArray *points) { SFltSclDatum start = {.kind = FLT_SCL_DATUM_KIND_MIN, .type = oper->colNode->node.resType}; SFltSclPoint startPt = {.start = true, .excl = false, .val = start}; if (NULL == taosArrayPush(points, &startPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } if (NULL == taosArrayPush(points, &endPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } break; } @@ -4936,10 +4936,10 @@ int32_t fltSclBuildRangePoints(SFltSclOperator *oper, SArray *points) { SFltSclPoint startPt = {.start = true, .excl = false, .val = valDatum}; SFltSclPoint endPt = {.start = false, .excl = false, .val = valDatum}; if (NULL == taosArrayPush(points, &startPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } if (NULL == taosArrayPush(points, &endPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } break; } @@ -4951,10 +4951,10 @@ int32_t fltSclBuildRangePoints(SFltSclOperator *oper, SArray *points) { SFltSclPoint startPt = {.start = true, .excl = false, .val = start}; SFltSclPoint endPt = {.start = false, .excl = true, .val = valDatum}; if (NULL == taosArrayPush(points, &startPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } if (NULL == taosArrayPush(points, &endPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } } { @@ -4962,10 +4962,10 @@ int32_t fltSclBuildRangePoints(SFltSclOperator *oper, SArray *points) { SFltSclDatum end = {.kind = FLT_SCL_DATUM_KIND_MAX, .type = oper->colNode->node.resType}; SFltSclPoint endPt = {.start = false, .excl = false, .val = end}; if (NULL == taosArrayPush(points, &startPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } if (NULL == taosArrayPush(points, &endPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } } break; @@ -4975,10 +4975,10 @@ int32_t fltSclBuildRangePoints(SFltSclOperator *oper, SArray *points) { SFltSclPoint startPt = {.start = true, .excl = false, .val = nullDatum}; SFltSclPoint endPt = {.start = false, .excl = false, .val = nullDatum}; if (NULL == taosArrayPush(points, &startPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } if (NULL == taosArrayPush(points, &endPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } break; } @@ -4988,10 +4988,10 @@ int32_t fltSclBuildRangePoints(SFltSclOperator *oper, SArray *points) { SFltSclDatum maxDatum = {.kind = FLT_SCL_DATUM_KIND_MAX, .type = oper->colNode->node.resType}; SFltSclPoint endPt = {.start = false, .excl = false, .val = maxDatum}; if (NULL == taosArrayPush(points, &startPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } if (NULL == taosArrayPush(points, &endPt)) { - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } break; } @@ -5082,7 +5082,7 @@ static int32_t fltSclCollectOperatorFromNode(SNode *pNode, SArray *sclOpList) { if (NULL == taosArrayPush(sclOpList, &sclOp)) { nodesDestroyNode(pLeft); nodesDestroyNode(pRight); - FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + FLT_ERR_RET(terrno); } } diff --git a/source/libs/scalar/src/scalar.c b/source/libs/scalar/src/scalar.c index 3b2450906a..4f08c93c1e 100644 --- a/source/libs/scalar/src/scalar.c +++ b/source/libs/scalar/src/scalar.c @@ -240,7 +240,7 @@ int32_t sclCopyValueNodeValue(SValueNode *pNode, void **res) { *res = taosMemoryMalloc(pNode->node.resType.bytes); if (NULL == (*res)) { sclError("malloc %d failed", pNode->node.resType.bytes); - SCL_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCL_ERR_RET(terrno); } (void)memcpy(*res, nodesGetValueFromNode(pNode), pNode->node.resType.bytes); diff --git a/source/libs/scalar/src/sclfunc.c b/source/libs/scalar/src/sclfunc.c index 965e029c8f..1129b9c28b 100644 --- a/source/libs/scalar/src/sclfunc.c +++ b/source/libs/scalar/src/sclfunc.c @@ -1178,7 +1178,7 @@ int32_t substrFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu char *outputBuf = taosMemoryMalloc(outputLen); if (outputBuf == NULL) { qError("substr function memory allocation failure. size: %d", outputLen); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t numOfRows = 0; @@ -1271,7 +1271,7 @@ int32_t md5Function(SScalarParam* pInput, int32_t inputNum, SScalarParam* pOutpu char* pOutputBuf = taosMemoryMalloc(bufLen); if (!pOutputBuf) { qError("md5 function alloc memory failed"); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } for (int32_t i = 0; i < pInput->numOfRows; ++i) { if (colDataIsNull_s(pInputData, i)) { @@ -1284,7 +1284,7 @@ int32_t md5Function(SScalarParam* pInput, int32_t inputNum, SScalarParam* pOutpu pOutputBuf = taosMemoryRealloc(pOutputBuf, bufLen); if (!pOutputBuf) { qError("md5 function alloc memory failed"); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } char *output = pOutputBuf; @@ -2306,7 +2306,7 @@ int32_t toJsonFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu for (int32_t i = 0; i < pInput[0].numOfRows; ++i) { SArray *pTagVals = taosArrayInit(8, sizeof(STagVal)); if (NULL == pTagVals) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } STag *pTag = NULL; @@ -2356,7 +2356,7 @@ int32_t toTimestampFunction(SScalarParam* pInput, int32_t inputNum, SScalarParam SArray *formats = NULL; if (tsStr == NULL || format == NULL) { - SCL_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + SCL_ERR_JRET(terrno); } for (int32_t i = 0; i < pInput[0].numOfRows; ++i) { if (colDataIsNull_s(pInput[1].columnData, i) || colDataIsNull_s(pInput[0].columnData, i)) { diff --git a/source/libs/scalar/src/sclvector.c b/source/libs/scalar/src/sclvector.c index 2bfad71ddb..230454483d 100644 --- a/source/libs/scalar/src/sclvector.c +++ b/source/libs/scalar/src/sclvector.c @@ -101,7 +101,7 @@ int32_t convertNcharToDouble(const void *inData, void *outData) { int32_t code = TSDB_CODE_SUCCESS; char *tmp = taosMemoryMalloc(varDataTLen(inData)); if (NULL == tmp) { - SCL_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCL_ERR_RET(terrno); } int len = taosUcs4ToMbs((TdUcs4 *)varDataVal(inData), varDataLen(inData), tmp); if (len < 0) { @@ -540,7 +540,7 @@ int32_t vectorConvertFromVarData(SSclVectorConvCtx *pCtx, int32_t *overflow) { tmp = taosMemoryMalloc(bufSize); if (tmp == NULL) { sclError("out of memory in vectorConvertFromVarData"); - SCL_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + SCL_ERR_JRET(terrno); } } diff --git a/source/libs/scheduler/src/schFlowCtrl.c b/source/libs/scheduler/src/schFlowCtrl.c index 20e1600737..d9a0b88e40 100644 --- a/source/libs/scheduler/src/schFlowCtrl.c +++ b/source/libs/scheduler/src/schFlowCtrl.c @@ -67,7 +67,7 @@ int32_t schChkJobNeedFlowCtrl(SSchJob *pJob, SSchLevel *pLevel) { taosHashInit(pJob->taskNum, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_ENTRY_LOCK); if (NULL == pJob->flowCtrl) { SCH_JOB_ELOG("taosHashInit %d flowCtrl failed", pJob->taskNum); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } SCH_SET_JOB_NEED_FLOW_CTRL(pJob); @@ -160,13 +160,13 @@ int32_t schCheckIncTaskFlowQuota(SSchJob *pJob, SSchTask *pTask, bool *enough) { ctrl->taskList = taosArrayInit(pLevel->taskNum, POINTER_BYTES); if (NULL == ctrl->taskList) { SCH_TASK_ELOG("taosArrayInit taskList failed, size:%d", (int32_t)pLevel->taskNum); - SCH_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_JRET(terrno); } } if (NULL == taosArrayPush(ctrl->taskList, &pTask)) { SCH_TASK_ELOG("taosArrayPush to taskList failed, size:%d", (int32_t)taosArrayGetSize(ctrl->taskList)); - SCH_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_JRET(terrno); } *enough = false; diff --git a/source/libs/scheduler/src/schJob.c b/source/libs/scheduler/src/schJob.c index 80832ed528..f475c974cc 100644 --- a/source/libs/scheduler/src/schJob.c +++ b/source/libs/scheduler/src/schJob.c @@ -192,7 +192,7 @@ int32_t schBuildTaskRalation(SSchJob *pJob, SHashObj *planToTask) { pTask->children = taosArrayInit(childNum, POINTER_BYTES); if (NULL == pTask->children) { SCH_TASK_ELOG("taosArrayInit %d children failed", childNum); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } } @@ -211,7 +211,7 @@ int32_t schBuildTaskRalation(SSchJob *pJob, SHashObj *planToTask) { if (NULL == taosArrayPush(pTask->children, childTask)) { SCH_TASK_ELOG("taosArrayPush childTask failed, level:%d, taskIdx:%d, childIdx:%d", i, m, n); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } SCH_TASK_DLOG("children info, the %d child TID 0x%" PRIx64, n, (*childTask)->taskId); @@ -226,7 +226,7 @@ int32_t schBuildTaskRalation(SSchJob *pJob, SHashObj *planToTask) { pTask->parents = taosArrayInit(parentNum, POINTER_BYTES); if (NULL == pTask->parents) { SCH_TASK_ELOG("taosArrayInit %d parents failed", parentNum); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } } else { if (0 != pLevel->level) { @@ -250,7 +250,7 @@ int32_t schBuildTaskRalation(SSchJob *pJob, SHashObj *planToTask) { if (NULL == taosArrayPush(pTask->parents, parentTask)) { SCH_TASK_ELOG("taosArrayPush parentTask failed, level:%d, taskIdx:%d, childIdx:%d", i, m, n); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } SCH_TASK_DLOG("parents info, the %d parent TID 0x%" PRIx64, n, (*parentTask)->taskId); @@ -309,7 +309,7 @@ int32_t schValidateAndBuildJob(SQueryPlan *pDag, SSchJob *pJob) { pJob->dataSrcTasks = taosArrayInit(pDag->numOfSubplans, POINTER_BYTES); if (NULL == pJob->dataSrcTasks) { - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } int32_t levelNum = (int32_t)LIST_LENGTH(pDag->pSubplans); @@ -324,13 +324,13 @@ int32_t schValidateAndBuildJob(SQueryPlan *pDag, SSchJob *pJob) { HASH_NO_LOCK); if (NULL == planToTask) { SCH_JOB_ELOG("taosHashInit %d failed", SCHEDULE_DEFAULT_MAX_TASK_NUM); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } pJob->levels = taosArrayInit(levelNum, sizeof(SSchLevel)); if (NULL == pJob->levels) { SCH_JOB_ELOG("taosArrayInit %d failed", levelNum); - SCH_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_JRET(terrno); } pJob->levelNum = levelNum; @@ -346,7 +346,7 @@ int32_t schValidateAndBuildJob(SQueryPlan *pDag, SSchJob *pJob) { for (int32_t i = 0; i < levelNum; ++i) { if (NULL == taosArrayPush(pJob->levels, &level)) { SCH_JOB_ELOG("taosArrayPush level failed, level:%d", i); - SCH_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_JRET(terrno); } pLevel = taosArrayGet(pJob->levels, i); @@ -374,7 +374,7 @@ int32_t schValidateAndBuildJob(SQueryPlan *pDag, SSchJob *pJob) { pLevel->subTasks = taosArrayInit(taskNum, sizeof(SSchTask)); if (NULL == pLevel->subTasks) { SCH_JOB_ELOG("taosArrayInit %d failed", taskNum); - SCH_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_JRET(terrno); } for (int32_t n = 0; n < taskNum; ++n) { @@ -390,7 +390,7 @@ int32_t schValidateAndBuildJob(SQueryPlan *pDag, SSchJob *pJob) { SSchTask *pTask = taosArrayPush(pLevel->subTasks, &task); if (NULL == pTask) { SCH_TASK_ELOG("taosArrayPush task to level failed, level:%d, taskIdx:%d", pLevel->level, n); - SCH_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_JRET(terrno); } SCH_ERR_JRET(schInitTask(pJob, pTask, plan, pLevel)); @@ -662,7 +662,7 @@ int32_t schSaveJobExecRes(SSchJob *pJob, SQueryTableRsp *rsp) { pJob->execRes.res = taosArrayInit(pJob->taskNum, sizeof(STbVerInfo)); if (NULL == pJob->execRes.res) { SCH_UNLOCK(SCH_WRITE, &pJob->resLock); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } } @@ -832,7 +832,7 @@ int32_t schInitJob(int64_t *pJobId, SSchedulerReq *pReq) { pJob->sql = taosStrdup(pReq->sql); if (NULL == pJob->sql) { qError("qid:0x%" PRIx64 " strdup sql %s failed", pReq->pDag->queryId, pReq->sql); - SCH_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_JRET(terrno); } } pJob->pDag = pReq->pDag; @@ -865,7 +865,7 @@ int32_t schInitJob(int64_t *pJobId, SSchedulerReq *pReq) { HASH_ENTRY_LOCK); if (NULL == pJob->taskList) { SCH_JOB_ELOG("taosHashInit %d taskList failed", pReq->pDag->numOfSubplans); - SCH_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_JRET(terrno); } SCH_ERR_JRET(schValidateAndBuildJob(pReq->pDag, pJob)); @@ -878,7 +878,7 @@ int32_t schInitJob(int64_t *pJobId, SSchedulerReq *pReq) { HASH_ENTRY_LOCK); if (NULL == pJob->execTasks) { SCH_JOB_ELOG("taosHashInit %d execTasks failed", pReq->pDag->numOfSubplans); - SCH_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_JRET(terrno); } if (tsem_init(&pJob->rspSem, 0, 0)) { diff --git a/source/libs/scheduler/src/schRemote.c b/source/libs/scheduler/src/schRemote.c index 7ff3d1386c..fe601c6b86 100644 --- a/source/libs/scheduler/src/schRemote.c +++ b/source/libs/scheduler/src/schRemote.c @@ -750,7 +750,7 @@ int32_t schCloneHbRpcCtx(SRpcCtx *pSrc, SRpcCtx *pDst) { pDst->args = taosHashInit(1, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), false, HASH_ENTRY_LOCK); if (NULL == pDst->args) { qError("taosHashInit %d RpcCtx failed", 1); - SCH_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_JRET(terrno); } SRpcCtxVal dst = {0}; @@ -794,7 +794,7 @@ int32_t schMakeHbRpcCtx(SSchJob *pJob, SSchTask *pTask, SRpcCtx *pCtx) { pCtx->args = taosHashInit(1, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), false, HASH_ENTRY_LOCK); if (NULL == pCtx->args) { SCH_TASK_ELOG("taosHashInit %d RpcCtx failed", 1); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } pMsgSendInfo = taosMemoryCalloc(1, sizeof(SMsgSendInfo)); @@ -868,7 +868,7 @@ int32_t schMakeQueryRpcCtx(SSchJob *pJob, SSchTask *pTask, SRpcCtx *pCtx) { pCtx->args = taosHashInit(1, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), false, HASH_ENTRY_LOCK); if (NULL == pCtx->args) { SCH_TASK_ELOG("taosHashInit %d RpcCtx failed", 1); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } SSchTrans trans = {.pTrans = pJob->conn.pTrans, .pHandle = SCH_GET_TASK_HANDLE(pTask)}; @@ -903,7 +903,7 @@ int32_t schCloneCallbackParam(SSchCallbackParamHeader *pSrc, SSchCallbackParamHe SSchHbCallbackParam *dst = taosMemoryMalloc(sizeof(SSchHbCallbackParam)); if (NULL == dst) { qError("malloc SSchHbCallbackParam failed"); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } TAOS_MEMCPY(dst, pSrc, sizeof(*dst)); @@ -915,7 +915,7 @@ int32_t schCloneCallbackParam(SSchCallbackParamHeader *pSrc, SSchCallbackParamHe SSchTaskCallbackParam *dst = taosMemoryMalloc(sizeof(SSchTaskCallbackParam)); if (NULL == dst) { qError("malloc SSchTaskCallbackParam failed"); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } TAOS_MEMCPY(dst, pSrc, sizeof(*dst)); diff --git a/source/libs/scheduler/src/schTask.c b/source/libs/scheduler/src/schTask.c index a72ec23f60..a0275d9c21 100644 --- a/source/libs/scheduler/src/schTask.c +++ b/source/libs/scheduler/src/schTask.c @@ -74,7 +74,7 @@ int32_t schInitTask(SSchJob *pJob, SSchTask *pTask, SSubplan *pPlan, SSchLevel * taosHashInit(pTask->maxExecTimes, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), true, HASH_NO_LOCK); pTask->profile.execTime = taosArrayInit(pTask->maxExecTimes, sizeof(int64_t)); if (NULL == pTask->execNodes || NULL == pTask->profile.execTime) { - SCH_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_JRET(terrno); } SCH_SET_TASK_STATUS(pTask, JOB_TASK_STATUS_INIT); @@ -786,7 +786,7 @@ int32_t schSetAddrsFromNodeList(SSchJob *pJob, SSchTask *pTask) { if (NULL == taosArrayPush(pTask->candidateAddrs, naddr)) { SCH_TASK_ELOG("taosArrayPush execNode to candidate addrs failed, addNum:%d, errno:%d", addNum, errno); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } SCH_TASK_TLOG("set %dth candidate addr, id %d, inUse:%d/%d, fqdn:%s, port:%d", i, naddr->nodeId, @@ -813,13 +813,13 @@ int32_t schSetTaskCandidateAddrs(SSchJob *pJob, SSchTask *pTask) { pTask->candidateAddrs = taosArrayInit(SCHEDULE_DEFAULT_MAX_NODE_NUM, sizeof(SQueryNodeAddr)); if (NULL == pTask->candidateAddrs) { SCH_TASK_ELOG("taosArrayInit %d condidate addrs failed", SCHEDULE_DEFAULT_MAX_NODE_NUM); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } if (pTask->plan->execNode.epSet.numOfEps > 0) { if (NULL == taosArrayPush(pTask->candidateAddrs, &pTask->plan->execNode)) { SCH_TASK_ELOG("taosArrayPush execNode to candidate addrs failed, errno:%d", errno); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } SCH_TASK_DLOG("use execNode in plan as candidate addr, numOfEps:%d", pTask->plan->execNode.epSet.numOfEps); @@ -1304,7 +1304,7 @@ int32_t schDelayLaunchTask(SSchJob *pJob, SSchTask *pTask) { SSchTimerParam *param = taosMemoryMalloc(sizeof(SSchTimerParam)); if (NULL == param) { SCH_TASK_ELOG("taosMemoryMalloc %d failed", (int)sizeof(SSchTimerParam)); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } param->rId = pJob->refId; diff --git a/source/libs/scheduler/src/scheduler.c b/source/libs/scheduler/src/scheduler.c index 7bd40500ec..0c74e99a29 100644 --- a/source/libs/scheduler/src/scheduler.c +++ b/source/libs/scheduler/src/scheduler.c @@ -47,7 +47,7 @@ int32_t schedulerInit() { schMgmt.hbConnections = taosHashInit(100, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_ENTRY_LOCK); if (NULL == schMgmt.hbConnections) { qError("taosHashInit hb connections failed"); - SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + SCH_ERR_RET(terrno); } schMgmt.timer = taosTmrInit(0, 0, 0, "scheduler"); diff --git a/source/libs/stream/src/streamBackendRocksdb.c b/source/libs/stream/src/streamBackendRocksdb.c index 57f75743ac..69ccea8e29 100644 --- a/source/libs/stream/src/streamBackendRocksdb.c +++ b/source/libs/stream/src/streamBackendRocksdb.c @@ -412,7 +412,7 @@ int32_t remoteChkpGetDelFile(char* path, SArray* toDel) { if (taosArrayPush(toDel, &p) == NULL) { taosMemoryFree(pMeta); taosMemoryFree(p); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -1102,17 +1102,17 @@ int32_t chkpMayDelObsolete(void* arg, int64_t chkpId, char* path) { (void)taosThreadRwlockWrlock(&pBackend->chkpDirLock); if (taosArrayPush(pBackend->chkpSaved, &chkpId) == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, NULL, _exception); + TAOS_CHECK_GOTO(terrno, NULL, _exception); } chkpDel = taosArrayInit(8, sizeof(int64_t)); if (chkpDel == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, NULL, _exception); + TAOS_CHECK_GOTO(terrno, NULL, _exception); } chkpDup = taosArrayInit(8, sizeof(int64_t)); if (chkpDup == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, NULL, _exception); + TAOS_CHECK_GOTO(terrno, NULL, _exception); } int64_t firsId = 0; @@ -1123,11 +1123,11 @@ int32_t chkpMayDelObsolete(void* arg, int64_t chkpId, char* path) { int64_t id = *(int64_t*)taosArrayGet(pBackend->chkpSaved, i); if (id >= firsId) { if (taosArrayPush(chkpDup, &id) == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, NULL, _exception); + TAOS_CHECK_GOTO(terrno, NULL, _exception); } } else { if (taosArrayPush(chkpDel, &id) == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, NULL, _exception); + TAOS_CHECK_GOTO(terrno, NULL, _exception); } } } @@ -1138,13 +1138,13 @@ int32_t chkpMayDelObsolete(void* arg, int64_t chkpId, char* path) { for (int i = 0; i < dsz; i++) { int64_t id = *(int64_t*)taosArrayGet(pBackend->chkpSaved, i); if (taosArrayPush(chkpDel, &id) == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, NULL, _exception); + TAOS_CHECK_GOTO(terrno, NULL, _exception); } } for (int i = dsz < 0 ? 0 : dsz; i < sz; i++) { int64_t id = *(int64_t*)taosArrayGet(pBackend->chkpSaved, i); if (taosArrayPush(chkpDup, &id) == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, NULL, _exception); + TAOS_CHECK_GOTO(terrno, NULL, _exception); } } } @@ -1305,7 +1305,7 @@ int32_t taskDbLoadChkpInfo(STaskDbWrapper* pBackend) { int ret = sscanf(taosGetDirEntryName(de), "checkpoint%" PRId64 "", &checkpointId); if (ret == 1) { if (taosArrayPush(pBackend->chkpSaved, &checkpointId) == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, NULL, _exception); + TAOS_CHECK_GOTO(terrno, NULL, _exception); } } } else { @@ -1330,7 +1330,7 @@ int32_t chkpGetAllDbCfHandle2(STaskDbWrapper* pBackend, rocksdb_column_family_ha if (pBackend->pCf[i]) { rocksdb_column_family_handle_t* p = pBackend->pCf[i]; if (taosArrayPush(pHandle, &p) == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _exception; } } @@ -1485,7 +1485,7 @@ int32_t taskDbBuildSnap(void* arg, SArray* pSnap) { // remove chkpid from chkp-in-use set taskDbUnRefChkp(pTaskDb, pTaskDb->chkpId); taskDbRemoveRef(pTaskDb); - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } if (taosArrayPush(pSnap, &snap) == NULL) { @@ -3439,7 +3439,6 @@ int32_t streamStateGetFirst_rocksdb(SStreamState* pState, SWinKey* key) { } int32_t streamStateGetGroupKVByCur_rocksdb(SStreamStateCur* pCur, SWinKey* pKey, const void** pVal, int32_t* pVLen) { - stDebug("streamStateGetGroupKVByCur_rocksdb"); if (!pCur) { return -1; } @@ -3885,7 +3884,6 @@ SStreamStateCur* streamStateSessionSeekKeyPrev_rocksdb(SStreamState* pState, con } int32_t streamStateSessionGetKVByCur_rocksdb(SStreamStateCur* pCur, SSessionKey* pKey, void** pVal, int32_t* pVLen) { - stDebug("streamStateSessionGetKVByCur_rocksdb"); if (!pCur) { return -1; } @@ -3985,7 +3983,6 @@ SStreamStateCur* streamStateFillGetCur_rocksdb(SStreamState* pState, const SWinK return NULL; } int32_t streamStateFillGetKVByCur_rocksdb(SStreamStateCur* pCur, SWinKey* pKey, const void** pVal, int32_t* pVLen) { - stDebug("streamStateFillGetKVByCur_rocksdb"); if (!pCur) { return -1; } @@ -4348,7 +4345,7 @@ int32_t streamDefaultIterGet_rocksdb(SStreamState* pState, const void* start, co int64_t checkPoint = 0; if (sscanf(key + strlen(key), ":%" PRId64 "", &checkPoint) == 1) { if (taosArrayPush(result, &checkPoint) == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } } @@ -4568,7 +4565,7 @@ int32_t compareHashTableImpl(SHashObj* p1, SHashObj* p2, SArray* diff) { (void)strncpy(fname, name, len); if (taosArrayPush(diff, &fname) == NULL) { taosMemoryFree(fname); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } pIter = taosHashIterate(p2, pIter); @@ -4687,7 +4684,7 @@ int32_t dbChkpGetDelta(SDbChkp* p, int64_t chkpId, SArray* list) { p->pCurrent = taosStrdup(name); if (p->pCurrent == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } continue; @@ -4697,7 +4694,7 @@ int32_t dbChkpGetDelta(SDbChkp* p, int64_t chkpId, SArray* list) { taosMemoryFreeClear(p->pManifest); p->pManifest = taosStrdup(name); if (p->pManifest == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } continue; @@ -4731,7 +4728,7 @@ int32_t dbChkpGetDelta(SDbChkp* p, int64_t chkpId, SArray* list) { if (taosArrayPush(p->pAdd, &fname) == NULL) { taosMemoryFree(fname); (void)taosThreadRwlockUnlock(&p->rwLock); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } pIter = taosHashIterate(p->pSstTbl[1 - p->idx], pIter); @@ -4783,7 +4780,7 @@ int32_t dbChkpCreate(char* path, int64_t initChkpId, SDbChkp** ppChkp) { p->preCkptId = -1; p->pSST = taosArrayInit(64, sizeof(void*)); if (p->pSST == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; dbChkpDestroy(p); return code; } @@ -4799,25 +4796,25 @@ int32_t dbChkpCreate(char* path, int64_t initChkpId, SDbChkp** ppChkp) { p->idx = 0; p->pSstTbl[0] = taosHashInit(64, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_ENTRY_LOCK); if (p->pSstTbl[0] == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _EXIT; } p->pSstTbl[1] = taosHashInit(64, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_ENTRY_LOCK); if (p->pSstTbl[1] == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _EXIT; } p->pAdd = taosArrayInit(64, sizeof(void*)); if (p->pAdd == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _EXIT; } p->pDel = taosArrayInit(64, sizeof(void*)); if (p->pDel == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _EXIT; } @@ -4933,12 +4930,12 @@ int32_t dbChkpDumpTo(SDbChkp* p, char* dname, SArray* list) { char* filename = taosArrayGetP(p->pDel, i); char* p = taosStrdup(filename); if (p == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _ERROR; } if (taosArrayPush(list, &p) == NULL) { taosMemoryFree(p); - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _ERROR; } } @@ -5039,14 +5036,14 @@ int32_t bkdMgtCreate(char* path, SBkdMgt** mgt) { p->pDbChkpTbl = taosHashInit(64, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_ENTRY_LOCK); if (p->pDbChkpTbl == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; bkdMgtDestroy(p); return code; } p->path = taosStrdup(path); if (p->path == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; bkdMgtDestroy(p); return code; } diff --git a/source/libs/stream/src/streamCheckpoint.c b/source/libs/stream/src/streamCheckpoint.c index 769116264d..47eec2119a 100644 --- a/source/libs/stream/src/streamCheckpoint.c +++ b/source/libs/stream/src/streamCheckpoint.c @@ -900,9 +900,6 @@ static int32_t doChkptStatusCheck(SStreamTask* pTask) { int32_t ref = streamCleanBeforeQuitTmr(pTmrInfo, pTask); stDebug("s-task:%s vgId:%d all checkpoint-trigger recv, quit from monitor checkpoint-trigger, ref:%d", id, vgId, ref); - -// streamMutexUnlock(&pTask->lock); -// streamMetaReleaseTask(pTask->pMeta, pTask); return -1; } @@ -911,9 +908,6 @@ static int32_t doChkptStatusCheck(SStreamTask* pTask) { stWarn("s-task:%s vgId:%d checkpoint-trigger retrieve by previous checkpoint procedure, checkpointId:%" PRId64 ", quit, ref:%d", id, vgId, pTmrInfo->launchChkptId, ref); - -// streamMutexUnlock(&pActiveInfo->lock); -// streamMetaReleaseTask(pTask->pMeta, pTask); return -1; } @@ -922,9 +916,6 @@ static int32_t doChkptStatusCheck(SStreamTask* pTask) { int32_t ref = streamCleanBeforeQuitTmr(pTmrInfo, pTask); stWarn("s-task:%s vgId:%d active checkpoint may be cleared, quit from retrieve checkpoint-trigger send tmr, ref:%d", id, vgId, ref); - -// streamMutexUnlock(&pActiveInfo->lock); -// streamMetaReleaseTask(pTask->pMeta, pTask); return -1; } @@ -1020,7 +1011,7 @@ void checkpointTriggerMonitorFn(void* param, void* tmrId) { int32_t code = doChkptStatusCheck(pTask); if (code) { - streamMutexUnlock(&pTask->lock); + streamMutexUnlock(&pActiveInfo->lock); streamMetaReleaseTask(pTask->pMeta, pTask); return; } diff --git a/source/libs/stream/src/streamDispatch.c b/source/libs/stream/src/streamDispatch.c index 0f0015c7d9..111ce37b41 100644 --- a/source/libs/stream/src/streamDispatch.c +++ b/source/libs/stream/src/streamDispatch.c @@ -671,7 +671,10 @@ int32_t streamSearchAndAddBlock(SStreamTask* pTask, SStreamDispatchReq* pReqs, S } else { int32_t code = buildCtbNameByGroupIdImpl(pTask->outputInfo.shuffleDispatcher.stbFullName, groupId, pDataBlock->info.parTbName); - stError("s-task:%s failed to build child table name, code:%s", pTask->id.idStr, tstrerror(code)); + if (code) { + stError("s-task:%s failed to build child table name for group:%" PRId64 ", code:%s", pTask->id.idStr, + groupId, tstrerror(code)); + } } snprintf(ctbName, TSDB_TABLE_NAME_LEN, "%s.%s", pTask->outputInfo.shuffleDispatcher.dbInfo.db, @@ -865,7 +868,7 @@ int32_t initCheckpointReadyMsg(SStreamTask* pTask, int32_t upstreamNodeId, int32 buf = rpcMallocCont(sizeof(SMsgHead) + tlen); if (buf == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } ((SMsgHead*)buf)->vgId = htonl(req.upstreamNodeId); @@ -1280,7 +1283,7 @@ int32_t streamTaskBuildCheckpointSourceRsp(SStreamCheckpointSourceReq* pReq, SRp void* pBuf = rpcMallocCont(sizeof(SMsgHead) + len); if (pBuf == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } ((SMsgHead*)pBuf)->vgId = htonl(pReq->mnodeId); @@ -1668,7 +1671,7 @@ int32_t streamProcessDispatchRsp(SStreamTask* pTask, SStreamDispatchRsp* pRsp, i static int32_t buildDispatchRsp(const SStreamTask* pTask, const SStreamDispatchReq* pReq, int32_t status, void** pBuf) { *pBuf = rpcMallocCont(sizeof(SMsgHead) + sizeof(SStreamDispatchRsp)); if (*pBuf == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } ((SMsgHead*)(*pBuf))->vgId = htonl(pReq->upstreamNodeId); diff --git a/source/libs/stream/src/streamExtraInfo.c b/source/libs/stream/src/streamExtraInfo.c new file mode 100644 index 0000000000..168571363f --- /dev/null +++ b/source/libs/stream/src/streamExtraInfo.c @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#include "os.h" + +#define UP_TASKS_NOT_SEND_CHKPT_TRIGGER 1 +#define DOWN_TASKS_NOT_READY 2 +#define DOWN_TASKS_BACKPRESSURE 3 +#define DOWN_TASKS_INPUTQ_CLOSED 4 +#define TASK_OUTPUTQ_FULL 5 +#define TASK_SINK_QUOTA_REACHED 6 + +typedef struct SStreamTaskExtraInfo { + int32_t infoId; + char* pMsg; +} SStreamTaskExtraInfo; + +SStreamTaskExtraInfo extraInfoList[8] = { + {0}, + {.infoId = UP_TASKS_NOT_SEND_CHKPT_TRIGGER, .pMsg = "%d(us) not send checkpoint-trigger"}, + {.infoId = DOWN_TASKS_NOT_READY, .pMsg = "%d(ds) tasks not ready"}, + {.infoId = DOWN_TASKS_BACKPRESSURE, .pMsg = "0x%x(ds) backpressure"}, + {.infoId = DOWN_TASKS_INPUTQ_CLOSED, .pMsg = "0x%x(ds) inputQ closed"}, + {.infoId = TASK_OUTPUTQ_FULL, .pMsg = "outputQ is full"}, + {.infoId = TASK_SINK_QUOTA_REACHED, .pMsg = "sink quota reached"}, +}; + diff --git a/source/libs/stream/src/streamHb.c b/source/libs/stream/src/streamHb.c index 72d2e89936..dde3595eb3 100644 --- a/source/libs/stream/src/streamHb.c +++ b/source/libs/stream/src/streamHb.c @@ -153,7 +153,6 @@ int32_t streamMetaSendHbHelper(SStreamMeta* pMeta) { pMsg->pUpdateNodes = taosArrayInit(numOfTasks, sizeof(int32_t)); if (pMsg->pTaskStatus == NULL || pMsg->pUpdateNodes == NULL) { - terrno = TSDB_CODE_OUT_OF_MEMORY; return terrno; } diff --git a/source/libs/stream/src/streamMeta.c b/source/libs/stream/src/streamMeta.c index cf519c09a5..4c51026640 100644 --- a/source/libs/stream/src/streamMeta.c +++ b/source/libs/stream/src/streamMeta.c @@ -89,7 +89,7 @@ int32_t metaRefMgtInit() { } if (gMetaRefMgt.pTable == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } else { return code; } @@ -126,7 +126,7 @@ int32_t metaRefMgtAdd(int64_t vgId, int64_t* rid) { p = taosArrayPush(pList, &rid); if (p == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } code = taosHashPut(gMetaRefMgt.pTable, &vgId, sizeof(vgId), &pList, sizeof(void*)); @@ -138,7 +138,7 @@ int32_t metaRefMgtAdd(int64_t vgId, int64_t* rid) { SArray* list = *(SArray**)p; void* px = taosArrayPush(list, &rid); if (px == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; } } @@ -718,7 +718,7 @@ int32_t streamMetaRegisterTask(SStreamMeta* pMeta, int64_t ver, SStreamTask* pTa p = taosArrayPush(pMeta->pTaskList, &pTask->id); if (p == NULL) { stError("s-task:0x%" PRIx64 " failed to register task into meta-list, code: out of memory", id.taskId); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } code = taosHashPut(pMeta->pTasksMap, &id, sizeof(id), &pTask, POINTER_BYTES); diff --git a/source/libs/stream/src/streamQueue.c b/source/libs/stream/src/streamQueue.c index 6c3685bb0f..6af6ebd044 100644 --- a/source/libs/stream/src/streamQueue.c +++ b/source/libs/stream/src/streamQueue.c @@ -384,13 +384,13 @@ int32_t streamTaskPutTranstateIntoInputQ(SStreamTask* pTask) { pTranstate->blocks = taosArrayInit(4, sizeof(SSDataBlock)); // pBlock; if (pTranstate->blocks == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _err; } void* p = taosArrayPush(pTranstate->blocks, pBlock); if (p == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _err; } diff --git a/source/libs/stream/src/streamSessionState.c b/source/libs/stream/src/streamSessionState.c index a192f03947..23598cf717 100644 --- a/source/libs/stream/src/streamSessionState.c +++ b/source/libs/stream/src/streamSessionState.c @@ -101,7 +101,7 @@ static int32_t addNewSessionWindow(SStreamFileState* pFileState, SArray* pWinInf memcpy(pNewPos->pKey, pKey, sizeof(SSessionKey)); void* tmp = taosArrayPush(pWinInfos, &pNewPos); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } (*ppPos) = pNewPos; @@ -126,7 +126,7 @@ static int32_t insertNewSessionWindow(SStreamFileState* pFileState, SArray* pWin memcpy(pNewPos->pKey, pKey, sizeof(SSessionKey)); void* tmp = taosArrayInsert(pWinInfos, index, &pNewPos); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } @@ -180,7 +180,7 @@ int32_t getSessionWinResultBuff(SStreamFileState* pFileState, SSessionKey* pKey, } else { pWinStates = taosArrayInit(16, POINTER_BYTES); if (!pWinStates) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } code = tSimpleHashPut(pSessionBuff, &pKey->groupId, sizeof(uint64_t), &pWinStates, POINTER_BYTES); @@ -301,7 +301,7 @@ int32_t putSessionWinResultBuff(SStreamFileState* pFileState, SRowBuffPos* pPos) } else { pWinStates = taosArrayInit(16, POINTER_BYTES); if (!pWinStates) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } @@ -313,7 +313,7 @@ int32_t putSessionWinResultBuff(SStreamFileState* pFileState, SRowBuffPos* pPos) if (size == 0) { void* tmp = taosArrayPush(pWinStates, &pPos); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } goto _end; @@ -324,13 +324,13 @@ int32_t putSessionWinResultBuff(SStreamFileState* pFileState, SRowBuffPos* pPos) if (index >= 0) { void* tmp = taosArrayInsert(pWinStates, index, &pPos); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } else { void* tmp = taosArrayInsert(pWinStates, 0, &pPos); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } @@ -421,7 +421,7 @@ int32_t allocSessioncWinBuffByNextPosition(SStreamFileState* pFileState, SStream if (!ppBuff) { pWinStates = taosArrayInit(16, POINTER_BYTES); if (!pWinStates) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } @@ -804,7 +804,7 @@ int32_t getStateWinResultBuff(SStreamFileState* pFileState, SSessionKey* key, ch } else { pWinStates = taosArrayInit(16, POINTER_BYTES); if (!pWinStates) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } @@ -944,7 +944,7 @@ int32_t getCountWinResultBuff(SStreamFileState* pFileState, SSessionKey* pKey, C } else { pWinStates = taosArrayInit(16, POINTER_BYTES); if (!pWinStates) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } diff --git a/source/libs/stream/src/streamSnapshot.c b/source/libs/stream/src/streamSnapshot.c index 2742798a04..ae8a71d988 100644 --- a/source/libs/stream/src/streamSnapshot.c +++ b/source/libs/stream/src/streamSnapshot.c @@ -204,7 +204,7 @@ int32_t snapFileGenMeta(SBackendSnapFile2* pSnapFile) { p = taosArrayPush(pSnapFile->pFileList, &item); if (p == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } // mainfest @@ -217,7 +217,7 @@ int32_t snapFileGenMeta(SBackendSnapFile2* pSnapFile) { p = taosArrayPush(pSnapFile->pFileList, &item); if (p == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } // options @@ -230,7 +230,7 @@ int32_t snapFileGenMeta(SBackendSnapFile2* pSnapFile) { p = taosArrayPush(pSnapFile->pFileList, &item); if (p == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } // sst @@ -245,7 +245,7 @@ int32_t snapFileGenMeta(SBackendSnapFile2* pSnapFile) { p = taosArrayPush(pSnapFile->pFileList, &item); if (p == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -255,7 +255,7 @@ int32_t snapFileGenMeta(SBackendSnapFile2* pSnapFile) { if (streamGetFileSize(pSnapFile->path, item.name, &item.size) == 0) { p = taosArrayPush(pSnapFile->pFileList, &item); if (p == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -265,7 +265,7 @@ int32_t snapFileGenMeta(SBackendSnapFile2* pSnapFile) { if (streamGetFileSize(pSnapFile->path, item.name, &item.size) == 0) { p = taosArrayPush(pSnapFile->pFileList, &item); if (p == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } @@ -287,7 +287,7 @@ int32_t snapFileReadMeta(SBackendSnapFile2* pSnapFile) { if (strlen(name) >= strlen(ROCKSDB_CURRENT) && 0 == strncmp(name, ROCKSDB_CURRENT, strlen(ROCKSDB_CURRENT))) { pSnapFile->pCurrent = taosStrdup(name); if (pSnapFile->pCurrent == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } continue; @@ -295,7 +295,7 @@ int32_t snapFileReadMeta(SBackendSnapFile2* pSnapFile) { if (strlen(name) >= strlen(ROCKSDB_MAINFEST) && 0 == strncmp(name, ROCKSDB_MAINFEST, strlen(ROCKSDB_MAINFEST))) { pSnapFile->pMainfest = taosStrdup(name); if (pSnapFile->pMainfest == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } continue; @@ -303,7 +303,7 @@ int32_t snapFileReadMeta(SBackendSnapFile2* pSnapFile) { if (strlen(name) >= strlen(ROCKSDB_OPTIONS) && 0 == strncmp(name, ROCKSDB_OPTIONS, strlen(ROCKSDB_OPTIONS))) { pSnapFile->pOptions = taosStrdup(name); if (pSnapFile->pOptions == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } continue; @@ -312,7 +312,7 @@ int32_t snapFileReadMeta(SBackendSnapFile2* pSnapFile) { 0 == strncmp(name, ROCKSDB_CHECKPOINT_META, strlen(ROCKSDB_CHECKPOINT_META))) { pSnapFile->pCheckpointMeta = taosStrdup(name); if (pSnapFile->pCheckpointMeta == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } continue; @@ -321,7 +321,7 @@ int32_t snapFileReadMeta(SBackendSnapFile2* pSnapFile) { 0 == strncmp(name, ROCKSDB_CHECKPOINT_SELF_CHECK, strlen(ROCKSDB_CHECKPOINT_SELF_CHECK))) { pSnapFile->pCheckpointSelfcheck = taosStrdup(name); if (pSnapFile->pCheckpointSelfcheck == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } continue; @@ -330,13 +330,13 @@ int32_t snapFileReadMeta(SBackendSnapFile2* pSnapFile) { 0 == strncmp(name + strlen(name) - strlen(ROCKSDB_SST), ROCKSDB_SST, strlen(ROCKSDB_SST))) { char* sst = taosStrdup(name); if (sst == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } void* p = taosArrayPush(pSnapFile->pSst, &sst); if (p == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; break; } } @@ -370,7 +370,7 @@ int32_t streamBackendSnapInitFile(char* metaPath, SStreamTaskSnap* pSnap, SBacke pSnapFile->pSst = taosArrayInit(16, sizeof(void*)); pSnapFile->pFileList = taosArrayInit(64, sizeof(SBackendFileItem)); if (pSnapFile->pSst == NULL || pSnapFile->pFileList == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _ERROR; } @@ -426,7 +426,7 @@ int32_t streamSnapHandleInit(SStreamSnapHandle* pHandle, char* path, void* pMeta SArray* pSnapInfoSet = taosArrayInit(4, sizeof(SStreamTaskSnap)); if (pSnapInfoSet == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } code = streamCreateTaskDbSnapInfo(pMeta, path, pSnapInfoSet); @@ -437,7 +437,7 @@ int32_t streamSnapHandleInit(SStreamSnapHandle* pHandle, char* path, void* pMeta pDbSnapSet = taosArrayInit(8, sizeof(SBackendSnapFile2)); if (pDbSnapSet == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _err; } @@ -452,7 +452,7 @@ int32_t streamSnapHandleInit(SStreamSnapHandle* pHandle, char* path, void* pMeta void* p = taosArrayPush(pDbSnapSet, &snapFile); if (p == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _err; } } @@ -651,7 +651,7 @@ int32_t streamSnapWriterOpen(void* pMeta, int64_t sver, int64_t ever, char* path pHandle->metaPath = taosStrdup(path); if (pHandle->metaPath == NULL) { taosMemoryFree(pWriter); - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; return code; } @@ -673,7 +673,7 @@ int32_t streamSnapWriterOpen(void* pMeta, int64_t sver, int64_t ever, char* path stError("failed close snaphost writer"); } - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; return code; } @@ -726,12 +726,12 @@ int32_t streamSnapWriteImpl(SStreamSnapWriter* pWriter, uint8_t* pData, uint32_t item.name = taosStrdup(pHdr->name); item.type = pHdr->type; if (item.name == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } void* p = taosArrayPush(pSnapFile->pFileList, &item); if (p == NULL) { // can NOT goto _err here. - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SBackendFileItem* pItem2 = taosArrayGet(pSnapFile->pFileList, pSnapFile->currFileIdx); @@ -810,7 +810,7 @@ int32_t streamSnapWrite(SStreamSnapWriter* pWriter, uint8_t* pData, uint32_t nDa void* p = taosArrayPush(pDbSnapFile->pFileList, &item); if (p == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pDbSnapFile->inited = 1; @@ -822,7 +822,7 @@ int32_t streamSnapWrite(SStreamSnapWriter* pWriter, uint8_t* pData, uint32_t nDa SBackendSnapFile2 snapFile = {0}; void* p = taosArrayPush(pHandle->pDbSnapSet, &snapFile); if (p == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pHandle->currIdx += 1; diff --git a/source/libs/stream/src/streamStartHistory.c b/source/libs/stream/src/streamStartHistory.c index 1290aef6a3..b376dbd16b 100644 --- a/source/libs/stream/src/streamStartHistory.c +++ b/source/libs/stream/src/streamStartHistory.c @@ -70,7 +70,7 @@ int32_t streamStartScanHistoryAsync(SStreamTask* pTask, int8_t igUntreated) { int32_t len = sizeof(SStreamScanHistoryReq); void* serializedReq = rpcMallocCont(len); if (serializedReq == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } memcpy(serializedReq, &req, len); diff --git a/source/libs/stream/src/streamState.c b/source/libs/stream/src/streamState.c index e1edebc861..eb7254acba 100644 --- a/source/libs/stream/src/streamState.c +++ b/source/libs/stream/src/streamState.c @@ -106,14 +106,14 @@ SStreamState* streamStateOpen(const char* path, void* pTask, int64_t streamId, i stDebug("open stream state %p, %s", pState, path); if (pState == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } pState->pTdbState = taosMemoryCalloc(1, sizeof(STdbState)); if (pState->pTdbState == NULL) { streamStateDestroy(pState, true); - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } diff --git a/source/libs/stream/src/streamTask.c b/source/libs/stream/src/streamTask.c index 3319c7c74f..536ff3e075 100644 --- a/source/libs/stream/src/streamTask.c +++ b/source/libs/stream/src/streamTask.c @@ -32,7 +32,7 @@ static int32_t addToTaskset(SArray* pArray, SStreamTask* pTask) { int32_t childId = taosArrayGetSize(pArray); pTask->info.selfChildId = childId; void* p = taosArrayPush(pArray, &pTask); - return (p == NULL) ? TSDB_CODE_OUT_OF_MEMORY : TSDB_CODE_SUCCESS; + return (p == NULL) ? terrno : TSDB_CODE_SUCCESS; } static int32_t doUpdateTaskEpset(SStreamTask* pTask, int32_t nodeId, SEpSet* pEpSet, bool* pUpdated) { @@ -409,7 +409,7 @@ int32_t streamTaskSetBackendPath(SStreamTask* pTask) { int32_t len = strlen(pTask->pMeta->path); pTask->backendPath = (char*)taosMemoryMalloc(len + nBytes + 2); if (pTask->backendPath == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (void)sprintf(pTask->backendPath, "%s%s%s", pTask->pMeta->path, TD_DIRSEP, id); @@ -555,7 +555,7 @@ int32_t streamTaskSetUpstreamInfo(SStreamTask* pTask, const SStreamTask* pUpstre } void* p = taosArrayPush(pTask->upstreamInfo.pList, &pEpInfo); - return (p == NULL) ? TSDB_CODE_OUT_OF_MEMORY : TSDB_CODE_SUCCESS; + return (p == NULL) ? terrno : TSDB_CODE_SUCCESS; } int32_t streamTaskUpdateUpstreamInfo(SStreamTask* pTask, int32_t nodeId, const SEpSet* pEpSet, bool* pUpdated) { @@ -1131,7 +1131,7 @@ int32_t createStreamTaskIdStr(int64_t streamId, int32_t taskId, const char** pId *pId = taosStrdup(buf); if (*pId == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } else { return TSDB_CODE_SUCCESS; } diff --git a/source/libs/stream/src/streamTaskSm.c b/source/libs/stream/src/streamTaskSm.c index 3709c4dfbd..3501d30be4 100644 --- a/source/libs/stream/src/streamTaskSm.c +++ b/source/libs/stream/src/streamTaskSm.c @@ -88,7 +88,7 @@ static int32_t attachWaitedEvent(SStreamTask* pTask, SFutureHandleEventInfo* pEv if (px == NULL) { stError("s-task:%s failed to add into waiting list, total waiting events:%d, code: out of memory", pTask->id.idStr, (int32_t)taosArrayGetSize(pList)); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } else { stDebug("s-task:%s add into waiting list, total waiting events:%d", pTask->id.idStr, (int32_t)taosArrayGetSize(pList)); @@ -298,7 +298,7 @@ int32_t streamCreateStateMachine(SStreamTask* pTask) { taosMemoryFree(pSM); stError("s-task:%s failed to create task stateMachine, size:%d, code:%s", id, (int32_t)sizeof(SStreamTaskSM), tstrerror(terrno)); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } // set the initial state for the state-machine of stream task diff --git a/source/libs/stream/src/streamUpdate.c b/source/libs/stream/src/streamUpdate.c index d5adbcee77..60f2294c20 100644 --- a/source/libs/stream/src/streamUpdate.c +++ b/source/libs/stream/src/streamUpdate.c @@ -80,7 +80,7 @@ int32_t windowSBfAdd(SUpdateInfo* pInfo, uint64_t count) { QUERY_CHECK_CODE(code, lino, _error); void* res = taosArrayPush(pInfo->pTsSBFs, &tsSBF); if (!res) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _error); } } @@ -168,7 +168,7 @@ int32_t updateInfoInit(int64_t interval, int32_t precision, int64_t watermark, b pInfo->pTsSBFs = taosArrayInit(bfSize, sizeof(void*)); if (pInfo->pTsSBFs == NULL) { updateInfoDestroy(pInfo); - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } code = windowSBfAdd(pInfo, bfSize); @@ -177,7 +177,7 @@ int32_t updateInfoInit(int64_t interval, int32_t precision, int64_t watermark, b pInfo->pTsBuckets = taosArrayInit(DEFAULT_BUCKET_SIZE, sizeof(TSKEY)); if (pInfo->pTsBuckets == NULL) { updateInfoDestroy(pInfo); - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } @@ -185,7 +185,7 @@ int32_t updateInfoInit(int64_t interval, int32_t precision, int64_t watermark, b for (uint64_t i = 0; i < DEFAULT_BUCKET_SIZE; ++i) { void* tmp = taosArrayPush(pInfo->pTsBuckets, &dumy); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } @@ -195,7 +195,7 @@ int32_t updateInfoInit(int64_t interval, int32_t precision, int64_t watermark, b _hash_fn_t hashFn = taosGetDefaultHashFunction(TSDB_DATA_TYPE_UBIGINT); pInfo->pMap = taosHashInit(DEFAULT_MAP_CAPACITY, hashFn, true, HASH_NO_LOCK); if (!pInfo->pMap) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } pInfo->maxDataVersion = 0; @@ -255,7 +255,7 @@ static int32_t getSBf(SUpdateInfo* pInfo, TSKEY ts, SScalableBf** ppSBf) { void* tmp = taosArrayPush(pInfo->pTsSBFs, &res); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } } @@ -575,7 +575,7 @@ int32_t updateInfoDeserialize(void* buf, int32_t bufLen, SUpdateInfo* pInfo) { if (tDecodeI64(&decoder, &ts) < 0) return -1; void* tmp = taosArrayPush(pInfo->pTsBuckets, &ts); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _error); } } @@ -594,7 +594,7 @@ int32_t updateInfoDeserialize(void* buf, int32_t bufLen, SUpdateInfo* pInfo) { void* tmp = taosArrayPush(pInfo->pTsSBFs, &pSBf); if (!tmp) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _error); } } diff --git a/source/libs/stream/src/tstreamFileState.c b/source/libs/stream/src/tstreamFileState.c index 5626aa29da..9f8523b040 100644 --- a/source/libs/stream/src/tstreamFileState.c +++ b/source/libs/stream/src/tstreamFileState.c @@ -476,13 +476,13 @@ SRowBuffPos* getNewRowPos(SStreamFileState* pFileState) { int32_t lino = 0; SRowBuffPos* pPos = taosMemoryCalloc(1, sizeof(SRowBuffPos)); if (!pPos) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _error); } pPos->pKey = taosMemoryCalloc(1, pFileState->keyLen); if (!pPos->pKey) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _error); } @@ -699,7 +699,7 @@ void flushSnapshot(SStreamFileState* pFileState, SStreamSnapshot* pSnapshot, boo int32_t len = pFileState->rowSize + sizeof(uint64_t) + sizeof(int32_t) + 64; char* buf = taosMemoryCalloc(1, len); if (!buf) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; QUERY_CHECK_CODE(code, lino, _end); } diff --git a/source/libs/sync/src/syncAppendEntries.c b/source/libs/sync/src/syncAppendEntries.c index a6bd01a092..e3f94c1c9a 100644 --- a/source/libs/sync/src/syncAppendEntries.c +++ b/source/libs/sync/src/syncAppendEntries.c @@ -180,7 +180,7 @@ _SEND_RESPONSE: } // ack, i.e. send response - (void)syncNodeSendMsgById(&pReply->destId, ths, &rpcRsp); + TAOS_CHECK_RETURN(syncNodeSendMsgById(&pReply->destId, ths, &rpcRsp)); // commit index, i.e. leader notice me if (ths->fsmState != SYNC_FSM_STATE_INCOMPLETE && syncLogBufferCommit(ths->pLogBuf, ths, ths->commitIndex) < 0) { diff --git a/source/libs/sync/src/syncEnv.c b/source/libs/sync/src/syncEnv.c index 1ebf47403a..dab9107332 100644 --- a/source/libs/sync/src/syncEnv.c +++ b/source/libs/sync/src/syncEnv.c @@ -87,7 +87,10 @@ int64_t syncNodeAdd(SSyncNode *pNode) { void syncNodeRemove(int64_t rid) { sDebug("sync node refId:%" PRId64 " is removed from rsetId:%d", rid, gNodeRefId); if (rid > 0) { - (void)taosRemoveRef(gNodeRefId, rid); + int32_t code = 0; + if ((code = taosRemoveRef(gNodeRefId, rid)) != 0) + sError("failed to remove sync node from refId:%" PRId64 ", rsetId:%d, since %s", rid, gNodeRefId, + tstrerror(code)); } } @@ -103,7 +106,10 @@ SSyncNode *syncNodeAcquire(int64_t rid) { void syncNodeRelease(SSyncNode *pNode) { if (pNode) { - (void)taosReleaseRef(gNodeRefId, pNode->rid); + int32_t code = 0; + if ((code = taosReleaseRef(gNodeRefId, pNode->rid)) != 0) + sError("failed to release sync node from refId:%" PRId64 ", rsetId:%d, since %s", pNode->rid, gNodeRefId, + tstrerror(code)); } } @@ -118,7 +124,9 @@ int64_t syncHbTimerDataAdd(SSyncHbTimerData *pData) { void syncHbTimerDataRemove(int64_t rid) { if (rid > 0) { - (void)taosRemoveRef(gHbDataRefId, rid); + int32_t code = 0; + if ((code = taosRemoveRef(gHbDataRefId, rid)) != 0) + sError("failed to remove hbdata from refId:%" PRId64 ", rsetId:%d, since %s", rid, gHbDataRefId, tstrerror(code)); } } @@ -134,6 +142,10 @@ SSyncHbTimerData *syncHbTimerDataAcquire(int64_t rid) { void syncHbTimerDataRelease(SSyncHbTimerData *pData) { if (pData) { - (void)taosReleaseRef(gHbDataRefId, pData->rid); + int32_t code = 0; + if ((code = taosReleaseRef(gHbDataRefId, pData->rid)) != 0) { + sError("failed to release hbdata from refId:%" PRId64 ", rsetId:%d, since %s", pData->rid, gHbDataRefId, + tstrerror(code)); + } } } diff --git a/source/libs/sync/src/syncMain.c b/source/libs/sync/src/syncMain.c index 41b403c559..01e0628138 100644 --- a/source/libs/sync/src/syncMain.c +++ b/source/libs/sync/src/syncMain.c @@ -367,7 +367,7 @@ int32_t syncBecomeAssignedLeader(SSyncNode* ths, SRpcMsg* pRpcMsg) { } pHead = rpcMallocCont(contLen); if (!pHead) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; sError("vgId:%d, failed to malloc memory for SVArbSetAssignedLeaderRsp", ths->vgId); goto _OVER; } @@ -403,7 +403,7 @@ int32_t syncSendTimeoutRsp(int64_t rid, int64_t seq) { TAOS_RETURN(code); } - SRpcMsg rpcMsg = {0}; + SRpcMsg rpcMsg = {0, .info.notFreeAhandle = 1}; int32_t ret = syncRespMgrGetAndDel(pNode->pSyncRespMgr, seq, &rpcMsg.info); rpcMsg.code = TSDB_CODE_SYN_TIMEOUT; @@ -3057,7 +3057,7 @@ int32_t syncNodeRebuildAndCopyIfExist(SSyncNode* ths, int32_t oldtotalReplicaNum SSyncLogReplMgr* oldLogReplMgrs = NULL; int64_t length = sizeof(SSyncLogReplMgr) * (TSDB_MAX_REPLICA + TSDB_MAX_LEARNER_REPLICA); oldLogReplMgrs = taosMemoryMalloc(length); - if (NULL == oldLogReplMgrs) return TSDB_CODE_OUT_OF_MEMORY; + if (NULL == oldLogReplMgrs) return terrno; memset(oldLogReplMgrs, 0, length); for (int i = 0; i < oldtotalReplicaNum; i++) { @@ -3741,11 +3741,9 @@ int32_t syncNodeOnClientRequest(SSyncNode* ths, SRpcMsg* pMsg, SyncIndex* pRetIn if (code > 0) { SRpcMsg rsp = {.code = pMsg->code, .info = pMsg->info}; - if ((code = syncRespMgrGetAndDel(ths->pSyncRespMgr, pEntry->seqNum, &rsp.info)) != 0) { - syncEntryDestroy(pEntry); - pEntry = NULL; - TAOS_RETURN(code); - } + int32_t num = syncRespMgrGetAndDel(ths->pSyncRespMgr, pEntry->seqNum, &rsp.info); + sDebug("vgId:%d, get response stub for config change, seqNum:%" PRIu64 ", num:%d", ths->vgId, pEntry->seqNum, + num); if (rsp.info.handle != NULL) { tmsgSendRsp(&rsp); } diff --git a/source/libs/sync/src/syncMessage.c b/source/libs/sync/src/syncMessage.c index 1c67c12a98..e4caf69845 100644 --- a/source/libs/sync/src/syncMessage.c +++ b/source/libs/sync/src/syncMessage.c @@ -25,7 +25,7 @@ int32_t syncBuildTimeout(SRpcMsg* pMsg, ESyncTimeoutType timeoutType, uint64_t l pMsg->msgType = (timeoutType == SYNC_TIMEOUT_ELECTION) ? TDMT_SYNC_TIMEOUT_ELECTION : TDMT_SYNC_TIMEOUT; pMsg->contLen = bytes; if (pMsg->pCont == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SyncTimeout* pTimeout = pMsg->pCont; @@ -45,7 +45,7 @@ int32_t syncBuildClientRequest(SRpcMsg* pMsg, const SRpcMsg* pOriginal, uint64_t pMsg->pCont = rpcMallocCont(bytes); if (pMsg->pCont == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pMsg->msgType = TDMT_SYNC_CLIENT_REQUEST; pMsg->contLen = bytes; @@ -69,7 +69,7 @@ int32_t syncBuildClientRequestFromNoopEntry(SRpcMsg* pMsg, const SSyncRaftEntry* pMsg->msgType = TDMT_SYNC_CLIENT_REQUEST; pMsg->contLen = bytes; if (pMsg->pCont == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SyncClientRequest* pClientRequest = pMsg->pCont; @@ -89,7 +89,7 @@ int32_t syncBuildRequestVote(SRpcMsg* pMsg, int32_t vgId) { pMsg->msgType = TDMT_SYNC_REQUEST_VOTE; pMsg->contLen = bytes; if (pMsg->pCont == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SyncRequestVote* pRequestVote = pMsg->pCont; @@ -105,7 +105,7 @@ int32_t syncBuildRequestVoteReply(SRpcMsg* pMsg, int32_t vgId) { pMsg->msgType = TDMT_SYNC_REQUEST_VOTE_REPLY; pMsg->contLen = bytes; if (pMsg->pCont == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SyncRequestVoteReply* pRequestVoteReply = pMsg->pCont; @@ -121,7 +121,7 @@ int32_t syncBuildAppendEntries(SRpcMsg* pMsg, int32_t dataLen, int32_t vgId) { pMsg->msgType = TDMT_SYNC_APPEND_ENTRIES; pMsg->contLen = bytes; if (pMsg->pCont == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SyncAppendEntries* pAppendEntries = pMsg->pCont; @@ -138,7 +138,7 @@ int32_t syncBuildAppendEntriesReply(SRpcMsg* pMsg, int32_t vgId) { pMsg->msgType = TDMT_SYNC_APPEND_ENTRIES_REPLY; pMsg->contLen = bytes; if (pMsg->pCont == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SyncAppendEntriesReply* pAppendEntriesReply = pMsg->pCont; @@ -155,7 +155,7 @@ int32_t syncBuildAppendEntriesFromRaftEntry(SSyncNode* pNode, SSyncRaftEntry* pE pRpcMsg->contLen = bytes; pRpcMsg->pCont = rpcMallocCont(pRpcMsg->contLen); if (pRpcMsg->pCont == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SyncAppendEntries* pMsg = pRpcMsg->pCont; @@ -181,7 +181,7 @@ int32_t syncBuildHeartbeat(SRpcMsg* pMsg, int32_t vgId) { pMsg->msgType = TDMT_SYNC_HEARTBEAT; pMsg->contLen = bytes; if (pMsg->pCont == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SyncHeartbeat* pHeartbeat = pMsg->pCont; @@ -197,7 +197,7 @@ int32_t syncBuildHeartbeatReply(SRpcMsg* pMsg, int32_t vgId) { pMsg->msgType = TDMT_SYNC_HEARTBEAT_REPLY; pMsg->contLen = bytes; if (pMsg->pCont == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SyncHeartbeatReply* pHeartbeatReply = pMsg->pCont; @@ -213,7 +213,7 @@ int32_t syncBuildSnapshotSend(SRpcMsg* pMsg, int32_t dataLen, int32_t vgId) { pMsg->msgType = TDMT_SYNC_SNAPSHOT_SEND; pMsg->contLen = bytes; if (pMsg->pCont == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SyncSnapshotSend* pSnapshotSend = pMsg->pCont; @@ -230,7 +230,7 @@ int32_t syncBuildSnapshotSendRsp(SRpcMsg* pMsg, int32_t dataLen, int32_t vgId) { pMsg->msgType = TDMT_SYNC_SNAPSHOT_RSP; pMsg->contLen = bytes; if (pMsg->pCont == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SyncSnapshotRsp* pPreSnapshotRsp = pMsg->pCont; @@ -246,7 +246,7 @@ int32_t syncBuildLeaderTransfer(SRpcMsg* pMsg, int32_t vgId) { pMsg->msgType = TDMT_SYNC_LEADER_TRANSFER; pMsg->contLen = bytes; if (pMsg->pCont == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SyncLeaderTransfer* pLeaderTransfer = pMsg->pCont; @@ -262,7 +262,7 @@ int32_t syncBuildLocalCmd(SRpcMsg* pMsg, int32_t vgId) { pMsg->msgType = TDMT_SYNC_LOCAL_CMD; pMsg->contLen = bytes; if (pMsg->pCont == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } SyncLocalCmd* pLocalCmd = pMsg->pCont; diff --git a/source/libs/sync/src/syncPipeline.c b/source/libs/sync/src/syncPipeline.c index d042bf8ade..de83c51211 100644 --- a/source/libs/sync/src/syncPipeline.c +++ b/source/libs/sync/src/syncPipeline.c @@ -450,14 +450,14 @@ int32_t syncLogBufferAccept(SSyncLogBuffer* pBuf, SSyncNode* pNode, SSyncRaftEnt goto _out; } if (pEntry->term != pExist->term) { - (void)syncLogBufferRollback(pBuf, pNode, index); + TAOS_CHECK_GOTO(syncLogBufferRollback(pBuf, pNode, index), NULL, _out); } else { sTrace("vgId:%d, duplicate log entry received. index:%" PRId64 ", term:%" PRId64 ". log buffer: [%" PRId64 " %" PRId64 " %" PRId64 ", %" PRId64 ")", pNode->vgId, pEntry->index, pEntry->term, pBuf->startIndex, pBuf->commitIndex, pBuf->matchIndex, pBuf->endIndex); SyncTerm existPrevTerm = -1; - (void)syncLogReplGetPrevLogTerm(NULL, pNode, index, &existPrevTerm); + TAOS_CHECK_GOTO(syncLogReplGetPrevLogTerm(NULL, pNode, index, &existPrevTerm), NULL, _out); if (!(pEntry->term == pExist->term && (pEntry->index > pBuf->matchIndex || prevTerm == existPrevTerm))) { sError("vgId:%d, failed to accept, pEntry->term:%" PRId64 ", pExist->indexpExist->term:%" PRId64 ", pEntry->index:%" PRId64 ", pBuf->matchIndex:%" PRId64 ", prevTerm:%" PRId64 @@ -650,7 +650,10 @@ int64_t syncLogBufferProceed(SSyncLogBuffer* pBuf, SSyncNode* pNode, SyncTerm* p } // replicate on demand - (void)syncNodeReplicateWithoutLock(pNode); + if ((code = syncNodeReplicateWithoutLock(pNode)) != 0) { + sError("vgId:%d, failed to replicate since %s. index:%" PRId64, pNode->vgId, tstrerror(code), pEntry->index); + goto _out; + } if (pEntry->index != pBuf->matchIndex) { sError("vgId:%d, failed to proceed, pEntry->index:%" PRId64 ", pBuf->matchIndex:%" PRId64, pNode->vgId, @@ -721,7 +724,8 @@ int32_t syncFsmExecute(SSyncNode* pNode, SSyncFSM* pFsm, ESyncState role, SyncTe cbMeta.currentTerm = term; cbMeta.flag = -1; - (void)syncRespMgrGetAndDel(pNode->pSyncRespMgr, cbMeta.seqNum, &rpcMsg.info); + int32_t num = syncRespMgrGetAndDel(pNode->pSyncRespMgr, cbMeta.seqNum, &rpcMsg.info); + sDebug("vgId:%d, get response info, seqNum:%" PRId64 ", num:%d", pNode->vgId, cbMeta.seqNum, num); code = pFsm->FpCommitCb(pFsm, &rpcMsg, &cbMeta); retry = (code != 0) && (terrno == TSDB_CODE_OUT_OF_RPC_MEMORY_QUEUE); if (retry) { @@ -1033,7 +1037,7 @@ int32_t syncLogReplRecover(SSyncLogReplMgr* pMgr, SSyncNode* pNode, SyncAppendEn } } else { if (pMsg->lastSendIndex < pMgr->startIndex || pMsg->lastSendIndex >= pMgr->endIndex) { - (void)syncLogReplRetryOnNeed(pMgr, pNode); + TAOS_CHECK_RETURN(syncLogReplRetryOnNeed(pMgr, pNode)); return 0; } @@ -1108,7 +1112,7 @@ int32_t syncLogReplRecover(SSyncLogReplMgr* pMgr, SSyncNode* pNode, SyncAppendEn } // attempt to replicate the raft log at index - (void)syncLogReplReset(pMgr); + syncLogReplReset(pMgr); return syncLogReplProbe(pMgr, pNode, index); } @@ -1136,9 +1140,9 @@ int32_t syncLogReplProcessReply(SSyncLogReplMgr* pMgr, SSyncNode* pNode, SyncApp } if (pMgr->restored) { - (void)syncLogReplContinue(pMgr, pNode, pMsg); + TAOS_CHECK_RETURN(syncLogReplContinue(pMgr, pNode, pMsg)); } else { - (void)syncLogReplRecover(pMgr, pNode, pMsg); + TAOS_CHECK_RETURN(syncLogReplRecover(pMgr, pNode, pMsg)); } (void)taosThreadMutexUnlock(&pBuf->mutex); return 0; @@ -1146,9 +1150,9 @@ int32_t syncLogReplProcessReply(SSyncLogReplMgr* pMgr, SSyncNode* pNode, SyncApp int32_t syncLogReplStart(SSyncLogReplMgr* pMgr, SSyncNode* pNode) { if (pMgr->restored) { - (void)syncLogReplAttempt(pMgr, pNode); + TAOS_CHECK_RETURN(syncLogReplAttempt(pMgr, pNode)); } else { - (void)syncLogReplProbe(pMgr, pNode, pNode->pLogBuf->matchIndex); + TAOS_CHECK_RETURN(syncLogReplProbe(pMgr, pNode, pNode->pLogBuf->matchIndex)); } return 0; } @@ -1164,7 +1168,7 @@ int32_t syncLogReplProbe(SSyncLogReplMgr* pMgr, SSyncNode* pNode, SyncIndex inde nowMs < pMgr->states[pMgr->startIndex % pMgr->size].timeMs + retryMaxWaitMs) { return 0; } - (void)syncLogReplReset(pMgr); + syncLogReplReset(pMgr); SRaftId* pDestId = &pNode->replicasId[pMgr->peerId]; bool barrier = false; @@ -1237,7 +1241,7 @@ int32_t syncLogReplAttempt(SSyncLogReplMgr* pMgr, SSyncNode* pNode) { } } - (void)syncLogReplRetryOnNeed(pMgr, pNode); + TAOS_CHECK_RETURN(syncLogReplRetryOnNeed(pMgr, pNode)); SSyncLogBuffer* pBuf = pNode->pLogBuf; sTrace("vgId:%d, replicated %d msgs to peer:%" PRIx64 ". indexes:%" PRId64 "..., terms: ...%" PRId64 @@ -1291,7 +1295,7 @@ void syncLogReplDestroy(SSyncLogReplMgr* pMgr) { if (pMgr == NULL) { return; } - (void)taosMemoryFree(pMgr); + taosMemoryFree(pMgr); return; } @@ -1300,7 +1304,7 @@ int32_t syncNodeLogReplInit(SSyncNode* pNode) { if (pNode->logReplMgrs[i] != NULL) return TSDB_CODE_SYN_INTERNAL_ERROR; pNode->logReplMgrs[i] = syncLogReplCreate(); if (pNode->logReplMgrs[i] == NULL) { - TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY); + TAOS_RETURN(terrno); } pNode->logReplMgrs[i]->peerId = i; } @@ -1374,7 +1378,7 @@ void syncLogBufferDestroy(SSyncLogBuffer* pBuf) { syncLogBufferClear(pBuf); (void)taosThreadMutexDestroy(&pBuf->mutex); (void)taosThreadMutexAttrDestroy(&pBuf->attr); - (void)taosMemoryFree(pBuf); + taosMemoryFree(pBuf); return; } @@ -1395,7 +1399,7 @@ int32_t syncLogBufferRollback(SSyncLogBuffer* pBuf, SSyncNode* pNode, SyncIndex while (index >= toIndex) { SSyncRaftEntry* pEntry = pBuf->entries[index % pBuf->size].pItem; if (pEntry != NULL) { - (void)syncEntryDestroy(pEntry); + syncEntryDestroy(pEntry); pEntry = NULL; (void)memset(&pBuf->entries[index % pBuf->size], 0, sizeof(pBuf->entries[0])); } @@ -1435,7 +1439,7 @@ int32_t syncLogBufferReset(SSyncLogBuffer* pBuf, SSyncNode* pNode) { if (lastVer != pBuf->matchIndex) return TSDB_CODE_SYN_INTERNAL_ERROR; SyncIndex index = pBuf->endIndex - 1; - (void)syncLogBufferRollback(pBuf, pNode, pBuf->matchIndex + 1); + TAOS_CHECK_RETURN(syncLogBufferRollback(pBuf, pNode, pBuf->matchIndex + 1)); sInfo("vgId:%d, reset sync log buffer. buffer: [%" PRId64 " %" PRId64 " %" PRId64 ", %" PRId64 ")", pNode->vgId, pBuf->startIndex, pBuf->commitIndex, pBuf->matchIndex, pBuf->endIndex); @@ -1483,6 +1487,7 @@ int32_t syncLogReplSendTo(SSyncLogReplMgr* pMgr, SSyncNode* pNode, SyncIndex ind SyncTerm prevLogTerm = -1; SSyncLogBuffer* pBuf = pNode->pLogBuf; int32_t code = 0; + int32_t lino = 0; code = syncLogBufferGetOneEntry(pBuf, pNode, index, &inBuf, &pEntry); if (pEntry == NULL) { @@ -1492,7 +1497,7 @@ int32_t syncLogReplSendTo(SSyncLogReplMgr* pMgr, SSyncNode* pNode, SyncIndex ind if (pMgr) { sInfo("vgId:%d, reset sync log repl of peer:%" PRIx64 " since %s. index:%" PRId64, pNode->vgId, pDestId->addr, tstrerror(code), index); - (void)syncLogReplReset(pMgr); + syncLogReplReset(pMgr); } } goto _err; @@ -1512,7 +1517,7 @@ int32_t syncLogReplSendTo(SSyncLogReplMgr* pMgr, SSyncNode* pNode, SyncIndex ind goto _err; } - (void)syncNodeSendAppendEntries(pNode, pDestId, &msgOut); + TAOS_CHECK_GOTO(syncNodeSendAppendEntries(pNode, pDestId, &msgOut), &lino, _err); sTrace("vgId:%d, replicate one msg index:%" PRId64 " term:%" PRId64 " prevterm:%" PRId64 " to dest: 0x%016" PRIx64, pNode->vgId, pEntry->index, pEntry->term, prevLogTerm, pDestId->addr); diff --git a/source/libs/sync/src/syncRaftCfg.c b/source/libs/sync/src/syncRaftCfg.c index 338a56b17f..5d938afa67 100644 --- a/source/libs/sync/src/syncRaftCfg.c +++ b/source/libs/sync/src/syncRaftCfg.c @@ -49,7 +49,7 @@ static int32_t syncEncodeSyncCfg(const void *pObj, SJson *pJson) { SJson *nodeInfo = tjsonCreateArray(); if (nodeInfo == NULL) { - TAOS_CHECK_EXIT(TSDB_CODE_OUT_OF_MEMORY); + TAOS_CHECK_EXIT(terrno); } if ((code = tjsonAddItemToObject(pJson, "nodeInfo", nodeInfo)) < 0) { @@ -60,7 +60,7 @@ static int32_t syncEncodeSyncCfg(const void *pObj, SJson *pJson) { for (int32_t i = 0; i < pCfg->totalReplicaNum; ++i) { SJson *info = tjsonCreateObject(); if (info == NULL) { - TAOS_CHECK_EXIT(TSDB_CODE_OUT_OF_MEMORY); + TAOS_CHECK_EXIT(terrno); } TAOS_CHECK_GOTO(tjsonAddDoubleToObject(info, "nodePort", pCfg->nodeInfo[i].nodePort), NULL, _err); TAOS_CHECK_GOTO(tjsonAddStringToObject(info, "nodeFqdn", pCfg->nodeInfo[i].nodeFqdn), NULL, _err); @@ -97,7 +97,7 @@ static int32_t syncEncodeRaftCfg(const void *pObj, SJson *pJson) { SJson *configIndexArr = tjsonCreateArray(); if (configIndexArr == NULL) { - TAOS_CHECK_EXIT(TSDB_CODE_OUT_OF_MEMORY); + TAOS_CHECK_EXIT(terrno); } if ((code = tjsonAddItemToObject(pJson, "configIndexArr", configIndexArr)) < 0) { @@ -108,7 +108,7 @@ static int32_t syncEncodeRaftCfg(const void *pObj, SJson *pJson) { for (int32_t i = 0; i < pCfg->configIndexCount; ++i) { SJson *configIndex = tjsonCreateObject(); if (configIndex == NULL) { - TAOS_CHECK_EXIT(TSDB_CODE_OUT_OF_MEMORY); + TAOS_CHECK_EXIT(terrno); } TAOS_CHECK_EXIT(tjsonAddIntegerToObject(configIndex, "index", pCfg->configIndexArr[i])); TAOS_CHECK_EXIT(tjsonAddItemToArray(configIndexArr, configIndex)); @@ -139,13 +139,13 @@ int32_t syncWriteCfgFile(SSyncNode *pNode) { (void)snprintf(file, sizeof(file), "%s.bak", realfile); if ((pJson = tjsonCreateObject()) == NULL) { - TAOS_CHECK_EXIT(TSDB_CODE_OUT_OF_MEMORY); + TAOS_CHECK_EXIT(terrno); } TAOS_CHECK_EXIT(tjsonAddObject(pJson, "RaftCfg", syncEncodeRaftCfg, pCfg)); buffer = tjsonToString(pJson); if (buffer == NULL) { - TAOS_CHECK_EXIT(TSDB_CODE_OUT_OF_MEMORY); + TAOS_CHECK_EXIT(terrno); } pFile = taosOpenFile(file, TD_FILE_CREATE | TD_FILE_WRITE | TD_FILE_TRUNC | TD_FILE_WRITE_THROUGH); @@ -273,7 +273,7 @@ int32_t syncReadCfgFile(SSyncNode *pNode) { pData = taosMemoryMalloc(size + 1); if (pData == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; goto _OVER; } diff --git a/source/libs/sync/src/syncRaftEntry.c b/source/libs/sync/src/syncRaftEntry.c index 56a702a9d5..f4301fa167 100644 --- a/source/libs/sync/src/syncRaftEntry.c +++ b/source/libs/sync/src/syncRaftEntry.c @@ -107,7 +107,7 @@ int32_t syncEntry2OriginalRpc(const SSyncRaftEntry* pEntry, SRpcMsg* pRpcMsg) { pRpcMsg->contLen = (int32_t)(pEntry->dataLen); pRpcMsg->pCont = rpcMallocCont(pRpcMsg->contLen); if (pRpcMsg->pCont == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } memcpy(pRpcMsg->pCont, pEntry->data, pRpcMsg->contLen); diff --git a/source/libs/sync/src/syncRaftStore.c b/source/libs/sync/src/syncRaftStore.c index 717c26dbed..c61be4356c 100644 --- a/source/libs/sync/src/syncRaftStore.c +++ b/source/libs/sync/src/syncRaftStore.c @@ -66,7 +66,7 @@ int32_t raftStoreReadFile(SSyncNode *pNode) { pData = taosMemoryMalloc(size + 1); if (pData == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _OVER); + TAOS_CHECK_GOTO(terrno, &lino, _OVER); } if (taosReadFile(pFile, pData, size) != size) { @@ -120,11 +120,11 @@ int32_t raftStoreWriteFile(SSyncNode *pNode) { snprintf(file, sizeof(file), "%s.bak", realfile); pJson = tjsonCreateObject(); - if (pJson == NULL) TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _OVER); + if (pJson == NULL) TAOS_CHECK_GOTO(terrno, &lino, _OVER); if (raftStoreEncode(pJson, pStore) != 0) TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _OVER); buffer = tjsonToString(pJson); - if (buffer == NULL) TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _OVER); + if (buffer == NULL) TAOS_CHECK_GOTO(terrno, &lino, _OVER); pFile = taosOpenFile(file, TD_FILE_CREATE | TD_FILE_WRITE | TD_FILE_TRUNC | TD_FILE_WRITE_THROUGH); if (pFile == NULL) TAOS_CHECK_GOTO(terrno, &lino, _OVER); diff --git a/source/libs/sync/src/syncReplication.c b/source/libs/sync/src/syncReplication.c index 6233801a51..0cda5d1ea9 100644 --- a/source/libs/sync/src/syncReplication.c +++ b/source/libs/sync/src/syncReplication.c @@ -68,14 +68,16 @@ int32_t syncNodeReplicate(SSyncNode* pNode) { int32_t syncNodeReplicateWithoutLock(SSyncNode* pNode) { if ((pNode->state != TAOS_SYNC_STATE_LEADER && pNode->state != TAOS_SYNC_STATE_ASSIGNED_LEADER) || pNode->raftCfg.cfg.totalReplicaNum == 1) { - TAOS_RETURN(TSDB_CODE_FAILED); + TAOS_RETURN(TSDB_CODE_SUCCESS); } for (int32_t i = 0; i < pNode->totalReplicaNum; i++) { if (syncUtilSameId(&pNode->replicasId[i], &pNode->myRaftId)) { continue; } SSyncLogReplMgr* pMgr = pNode->logReplMgrs[i]; - (void)syncLogReplStart(pMgr, pNode); + if (syncLogReplStart(pMgr, pNode) != 0) { + sError("vgId:%d, failed to start log replication to dnode:%d", pNode->vgId, DID(&(pNode->replicasId[i]))); + } } TAOS_RETURN(TSDB_CODE_SUCCESS); @@ -84,7 +86,7 @@ int32_t syncNodeReplicateWithoutLock(SSyncNode* pNode) { int32_t syncNodeSendAppendEntries(SSyncNode* pSyncNode, const SRaftId* destRaftId, SRpcMsg* pRpcMsg) { SyncAppendEntries* pMsg = pRpcMsg->pCont; pMsg->destId = *destRaftId; - (void)syncNodeSendMsgById(destRaftId, pSyncNode, pRpcMsg); + TAOS_CHECK_RETURN(syncNodeSendMsgById(destRaftId, pSyncNode, pRpcMsg)); TAOS_RETURN(TSDB_CODE_SUCCESS); } @@ -116,7 +118,9 @@ int32_t syncNodeHeartbeatPeers(SSyncNode* pSyncNode) { STraceId* trace = &(rpcMsg.info.traceId); sGTrace("vgId:%d, send sync-heartbeat to dnode:%d", pSyncNode->vgId, DID(&(pSyncMsg->destId))); syncLogSendHeartbeat(pSyncNode, pSyncMsg, true, 0, 0); - (void)syncNodeSendHeartbeat(pSyncNode, &pSyncMsg->destId, &rpcMsg); + if (syncNodeSendHeartbeat(pSyncNode, &pSyncMsg->destId, &rpcMsg) != 0) { + sError("vgId:%d, failed to send sync-heartbeat to dnode:%d", pSyncNode->vgId, DID(&(pSyncMsg->destId))); + } } TAOS_RETURN(TSDB_CODE_SUCCESS); diff --git a/source/libs/sync/src/syncRespMgr.c b/source/libs/sync/src/syncRespMgr.c index 854d6bc314..59825ef91e 100644 --- a/source/libs/sync/src/syncRespMgr.c +++ b/source/libs/sync/src/syncRespMgr.c @@ -32,7 +32,7 @@ int32_t syncRespMgrCreate(void *data, int64_t ttl, SSyncRespMgr **ppObj) { taosHashInit(sizeof(uint64_t), taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK); if (pObj->pRespHash == NULL) { taosMemoryFree(pObj); - TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY); + TAOS_RETURN(terrno); } pObj->ttl = ttl; @@ -110,7 +110,9 @@ int32_t syncRespMgrGetAndDel(SSyncRespMgr *pObj, uint64_t seq, SRpcHandleInfo *p *pInfo = pStub->rpcMsg.info; sNTrace(pObj->data, "get-and-del message handle:%p, type:%s seq:%" PRIu64, pStub->rpcMsg.info.handle, TMSG_INFO(pStub->rpcMsg.msgType), seq); - (void)taosHashRemove(pObj->pRespHash, &seq, sizeof(uint64_t)); + if (taosHashRemove(pObj->pRespHash, &seq, sizeof(uint64_t)) != 0) { + sError("failed to remove seq:%" PRIu64, seq); + } (void)taosThreadMutexUnlock(&pObj->mutex); return 1; // get one object @@ -130,7 +132,7 @@ static int32_t syncRespCleanByTTL(SSyncRespMgr *pObj, int64_t ttl, bool rsp) { SArray *delIndexArray = taosArrayInit(4, sizeof(uint64_t)); if (delIndexArray == NULL) { - TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY); + TAOS_RETURN(terrno); } sDebug("vgId:%d, resp manager begin clean by ttl", pNode->vgId); @@ -165,7 +167,9 @@ static int32_t syncRespCleanByTTL(SSyncRespMgr *pObj, int64_t ttl, bool rsp) { SRpcMsg rpcMsg = {.info = pStub->rpcMsg.info, .code = TSDB_CODE_SYN_TIMEOUT}; sInfo("vgId:%d, message handle:%p expired, type:%s ahandle:%p", pNode->vgId, rpcMsg.info.handle, TMSG_INFO(pStub->rpcMsg.msgType), rpcMsg.info.ahandle); - (void)rpcSendResponse(&rpcMsg); + if (rpcSendResponse(&rpcMsg) != 0) { + sError("vgId:%d, failed to send response, handle:%p", pNode->vgId, rpcMsg.info.handle); + } } pStub = taosHashIterate(pObj->pRespHash, pStub); @@ -176,7 +180,9 @@ static int32_t syncRespCleanByTTL(SSyncRespMgr *pObj, int64_t ttl, bool rsp) { for (int32_t i = 0; i < arraySize; ++i) { uint64_t *pSeqNum = taosArrayGet(delIndexArray, i); - (void)taosHashRemove(pObj->pRespHash, pSeqNum, sizeof(uint64_t)); + if (taosHashRemove(pObj->pRespHash, pSeqNum, sizeof(uint64_t)) != 0) { + sError("vgId:%d, failed to remove seq:%" PRIu64, pNode->vgId, *pSeqNum); + } sDebug("vgId:%d, resp manager clean by ttl, seq:%" PRId64, pNode->vgId, *pSeqNum); } taosArrayDestroy(delIndexArray); @@ -191,7 +197,10 @@ void syncRespCleanRsp(SSyncRespMgr *pObj) { sTrace("vgId:%d, clean all resp", pNode->vgId); (void)taosThreadMutexLock(&pObj->mutex); - (void)syncRespCleanByTTL(pObj, -1, true); + int32_t code = 0; + if ((code = syncRespCleanByTTL(pObj, -1, true)) != 0) { + sError("vgId:%d, failed to clean all resp since %s", pNode->vgId, tstrerror(code)); + } (void)taosThreadMutexUnlock(&pObj->mutex); } @@ -200,6 +209,9 @@ void syncRespClean(SSyncRespMgr *pObj) { sTrace("vgId:%d, clean resp by ttl", pNode->vgId); (void)taosThreadMutexLock(&pObj->mutex); - (void)syncRespCleanByTTL(pObj, pObj->ttl, false); + int32_t code = 0; + if ((code = syncRespCleanByTTL(pObj, pObj->ttl, false)) != 0) { + sError("vgId:%d, failed to clean resp by ttl since %s", pNode->vgId, tstrerror(code)); + } (void)taosThreadMutexUnlock(&pObj->mutex); } diff --git a/source/libs/sync/src/syncSnapshot.c b/source/libs/sync/src/syncSnapshot.c index 0b77ab78a6..78fda6b093 100644 --- a/source/libs/sync/src/syncSnapshot.c +++ b/source/libs/sync/src/syncSnapshot.c @@ -720,7 +720,7 @@ static int32_t syncSnapReceiverExchgSnapInfo(SSyncNode *pSyncNode, SSyncSnapshot SSnapshotParam *pParam = &pReceiver->snapshotParam; data = taosMemoryRealloc(pParam->data, dataLen); if (data == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; + code = terrno; sError("vgId:%d, failed to realloc memory for snapshot prep due to %s. dataLen:%d", pSyncNode->vgId, tstrerror(code), dataLen); goto _exit; @@ -916,7 +916,9 @@ static int32_t syncSnapBufferRecv(SSyncSnapshotReceiver *pReceiver, SyncSnapshot } } pRcvBuf->start = seq + 1; - (void)syncSnapSendRsp(pReceiver, pRcvBuf->entries[seq % pRcvBuf->size], NULL, 0, 0, code); + if (syncSnapSendRsp(pReceiver, pRcvBuf->entries[seq % pRcvBuf->size], NULL, 0, 0, code) != 0) { + sError("failed to send snap rsp"); + } pRcvBuf->entryDeleteCb(pRcvBuf->entries[seq % pRcvBuf->size]); pRcvBuf->entries[seq % pRcvBuf->size] = NULL; if (code) goto _out; @@ -1011,7 +1013,7 @@ int32_t syncNodeOnSnapshot(SSyncNode *pSyncNode, SRpcMsg *pRpcMsg) { sRError(pReceiver, "reject snap replication with smaller term. msg term:%" PRId64 ", seq:%d", pMsg->term, pMsg->seq); code = TSDB_CODE_SYN_MISMATCHED_SIGNATURE; - (void)syncSnapSendRsp(pReceiver, pMsg, NULL, 0, 0, code); + if (syncSnapSendRsp(pReceiver, pMsg, NULL, 0, 0, code) != 0) sError("failed to send snap rsp"); TAOS_RETURN(code); } @@ -1092,7 +1094,7 @@ static int32_t syncSnapSenderExchgSnapInfo(SSyncNode *pSyncNode, SSyncSnapshotSe SSnapshotParam *pParam = &pSender->snapshotParam; void *data = taosMemoryRealloc(pParam->data, dataLen); if (data == NULL) { - TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY); + TAOS_RETURN(terrno); } (void)memcpy(data, pMsg->data, dataLen); @@ -1298,13 +1300,13 @@ int32_t syncNodeOnSnapshotRsp(SSyncNode *pSyncNode, SRpcMsg *pRpcMsg) { if (pMsg->ack == SYNC_SNAPSHOT_SEQ_END) { sSInfo(pSender, "process end rsp"); snapshotSenderStop(pSender, true); - (void)syncNodeReplicateReset(pSyncNode, &pMsg->srcId); + TAOS_CHECK_GOTO(syncNodeReplicateReset(pSyncNode, &pMsg->srcId), NULL, _ERROR); } return 0; _ERROR: snapshotSenderStop(pSender, false); - (void)syncNodeReplicateReset(pSyncNode, &pMsg->srcId); + if (syncNodeReplicateReset(pSyncNode, &pMsg->srcId) != 0) sError("failed to reset replicate"); TAOS_RETURN(code); } diff --git a/source/libs/sync/src/syncTimeout.c b/source/libs/sync/src/syncTimeout.c index b2233ae664..c073c2c1bb 100644 --- a/source/libs/sync/src/syncTimeout.c +++ b/source/libs/sync/src/syncTimeout.c @@ -65,7 +65,7 @@ static int32_t syncNodeTimerRoutine(SSyncNode* ths) { } // timer replicate - (void)syncNodeReplicate(ths); + TAOS_CHECK_RETURN(syncNodeReplicate(ths)); // clean mnode index if (syncNodeIsMnode(ths)) { @@ -89,7 +89,7 @@ static int32_t syncNodeTimerRoutine(SSyncNode* ths) { snapshotSenderStop(pSender, false); } else { sSWarn(pSender, "snap replication resend."); - (void)snapshotReSend(pSender); + TAOS_CHECK_RETURN(snapshotReSend(pSender)); } } } @@ -112,14 +112,14 @@ int32_t syncNodeOnTimeout(SSyncNode* ths, const SRpcMsg* pRpc) { if (atomic_load_64(&ths->pingTimerLogicClockUser) <= pMsg->logicClock) { ++(ths->pingTimerCounter); - (void)syncNodeTimerRoutine(ths); + TAOS_CHECK_RETURN(syncNodeTimerRoutine(ths)); } } else if (pMsg->timeoutType == SYNC_TIMEOUT_ELECTION) { if (atomic_load_64(&ths->electTimerLogicClock) <= pMsg->logicClock) { ++(ths->electTimerCounter); - (void)syncNodeElect(ths); + TAOS_CHECK_RETURN(syncNodeElect(ths)); } } else if (pMsg->timeoutType == SYNC_TIMEOUT_HEARTBEAT) { diff --git a/source/libs/sync/src/syncUtil.c b/source/libs/sync/src/syncUtil.c index 553560f089..6f7ea9375c 100644 --- a/source/libs/sync/src/syncUtil.c +++ b/source/libs/sync/src/syncUtil.c @@ -499,7 +499,7 @@ void syncLogSendRequestVoteReply(SSyncNode* pSyncNode, const SyncRequestVoteRepl int32_t syncSnapInfoDataRealloc(SSnapshot* pSnap, int32_t size) { void* data = taosMemoryRealloc(pSnap->data, size); if (data == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pSnap->data = data; return 0; diff --git a/source/libs/sync/test/syncRespMgrTest.cpp b/source/libs/sync/test/syncRespMgrTest.cpp index 714f42a836..a9887243de 100644 --- a/source/libs/sync/test/syncRespMgrTest.cpp +++ b/source/libs/sync/test/syncRespMgrTest.cpp @@ -77,7 +77,7 @@ SSyncNode *createSyncNode() { void test1() { printf("------- test1 ---------\n"); - (void)syncRespMgrCreate(createSyncNode(), 0, &pMgr); + assert(syncRespMgrCreate(createSyncNode(), 0, &pMgr) == 0); assert(pMgr != NULL); syncRespMgrInsert(10); @@ -102,7 +102,7 @@ void test1() { void test2() { printf("------- test2 ---------\n"); - (void)syncRespMgrCreate(createSyncNode(), 0, &pMgr); + assert(syncRespMgrCreate(createSyncNode(), 0, &pMgr) == 0); assert(pMgr != NULL); syncRespMgrInsert(10); @@ -119,7 +119,7 @@ void test2() { void test3() { printf("------- test3 ---------\n"); - (void)syncRespMgrCreate(createSyncNode(), 0, &pMgr); + assert(syncRespMgrCreate(createSyncNode(), 0, &pMgr) == 0); assert(pMgr != NULL); syncRespMgrInsert(10); @@ -136,7 +136,7 @@ void test3() { void test4() { printf("------- test4 ---------\n"); - (void)syncRespMgrCreate(createSyncNode(), 2, &pMgr); + assert(syncRespMgrCreate(createSyncNode(), 2, &pMgr) == 0); assert(pMgr != NULL); syncRespMgrInsert(5); diff --git a/source/libs/sync/test/syncSnapshotSenderTest.cpp b/source/libs/sync/test/syncSnapshotSenderTest.cpp index be31df30e9..e415a5761b 100644 --- a/source/libs/sync/test/syncSnapshotSenderTest.cpp +++ b/source/libs/sync/test/syncSnapshotSenderTest.cpp @@ -40,7 +40,7 @@ SSyncSnapshotSender* createSender() { #endif SSyncSnapshotSender* pSender = NULL; - (void)snapshotSenderCreate(pSyncNode, 2, &pSender); + assert(snapshotSenderCreate(pSyncNode, 2, &pSender) == 0); pSender->start = true; pSender->seq = 10; pSender->ack = 20; diff --git a/source/libs/tdb/src/db/tdbBtree.c b/source/libs/tdb/src/db/tdbBtree.c index 7c342c0527..a7bce24aa4 100644 --- a/source/libs/tdb/src/db/tdbBtree.c +++ b/source/libs/tdb/src/db/tdbBtree.c @@ -79,7 +79,7 @@ int tdbBtreeOpen(int keyLen, int valLen, SPager *pPager, char const *tbname, SPg pBt = (SBTree *)tdbOsCalloc(1, sizeof(*pBt)); if (pBt == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } // pBt->keyLen diff --git a/source/libs/tdb/src/db/tdbPCache.c b/source/libs/tdb/src/db/tdbPCache.c index 53c1284faa..6fcc8deb12 100644 --- a/source/libs/tdb/src/db/tdbPCache.c +++ b/source/libs/tdb/src/db/tdbPCache.c @@ -58,14 +58,14 @@ int tdbPCacheOpen(int pageSize, int cacheSize, SPCache **ppCache) { pCache = (SPCache *)tdbOsCalloc(1, sizeof(*pCache) + sizeof(SPage *) * cacheSize); if (pCache == NULL) { - TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit); + TSDB_CHECK_CODE(code = terrno, lino, _exit); } pCache->szPage = pageSize; pCache->nPages = cacheSize; pCache->aPage = (SPage **)tdbOsCalloc(cacheSize, sizeof(SPage *)); if (pCache->aPage == NULL) { - TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit); + TSDB_CHECK_CODE(code = terrno, lino, _exit); } code = tdbPCacheOpenImpl(pCache); @@ -105,7 +105,7 @@ static int tdbPCacheAlterImpl(SPCache *pCache, int32_t nPage) { } else if (pCache->nPages < nPage) { SPage **aPage = tdbOsCalloc(nPage, sizeof(SPage *)); if (aPage == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } for (int32_t iPage = pCache->nPages; iPage < nPage; iPage++) { @@ -502,7 +502,7 @@ static int tdbPCacheOpenImpl(SPCache *pCache) { pCache->nHash = pCache->nPages < 8 ? 8 : pCache->nPages; pCache->pgHash = (SPage **)tdbOsCalloc(pCache->nHash, sizeof(SPage *)); if (pCache->pgHash == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } // Open LRU list diff --git a/source/libs/tdb/src/db/tdbPage.c b/source/libs/tdb/src/db/tdbPage.c index 7888a08bb3..abc7fb5858 100644 --- a/source/libs/tdb/src/db/tdbPage.c +++ b/source/libs/tdb/src/db/tdbPage.c @@ -322,7 +322,7 @@ int32_t tdbPageCopy(SPage *pFromPage, SPage *pToPage, int deepCopyOvfl) { pNewCell = (SCell *)tdbOsMalloc(szCell); if (pNewCell == NULL) { tdbError("tdb/page-copy: out of memory, size: %d", szCell); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } memcpy(pNewCell, pFromPage->apOvfl[iOvfl], szCell); tdbTrace("tdbPage/copy/new ovfl cell: %p/%p/%p", pNewCell, pToPage, pFromPage); @@ -524,7 +524,7 @@ static int tdbPageDefragment(SPage *pPage) { SCellIdx *aCellIdx = (SCellIdx *)tdbOsMalloc(sizeof(SCellIdx) * nCell); if (aCellIdx == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } for (int32_t iCell = 0; iCell < nCell; iCell++) { aCellIdx[iCell].iCell = iCell; diff --git a/source/libs/tdb/src/db/tdbPager.c b/source/libs/tdb/src/db/tdbPager.c index 64b892692d..7d9e70cfaa 100644 --- a/source/libs/tdb/src/db/tdbPager.c +++ b/source/libs/tdb/src/db/tdbPager.c @@ -167,7 +167,7 @@ int tdbPagerOpen(SPCache *pCache, const char *fileName, SPager **ppPager) { + fsize + 8 + 1; /* jFileName */ pPtr = (uint8_t *)tdbOsCalloc(1, zsize); if (pPtr == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pPager = (SPager *)pPtr; @@ -508,7 +508,7 @@ int tdbPagerAbort(SPager *pPager, TXN *pTxn) { u8 *pageBuf = tdbOsCalloc(1, pPager->pageSize); if (pageBuf == NULL) { - return terrno = TSDB_CODE_OUT_OF_MEMORY; + return terrno; } tdbDebug("pager/abort: %p, %d/%d, txnId:%" PRId64, pPager, pPager->dbOrigSize, pPager->dbFileSize, pTxn->txnId); @@ -741,7 +741,7 @@ int tdbPagerInsertFreePage(SPager *pPager, SPage *pPage, TXN *pTxn) { if (pPager->frps) { if (taosArrayPush(pPager->frps, &pgno) == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pPage->pPager = NULL; return code; @@ -749,7 +749,7 @@ int tdbPagerInsertFreePage(SPager *pPager, SPage *pPage, TXN *pTxn) { pPager->frps = taosArrayInit(8, sizeof(SPgno)); if (pPager->frps == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } // memset(pPage->pData, 0, pPage->pageSize); tdbTrace("tdb/insert-free-page: tbc recycle page: %d.", pgno); @@ -1056,7 +1056,7 @@ static int tdbPagerRestore(SPager *pPager, const char *jFileName) { pageBuf = tdbOsCalloc(1, pPager->pageSize); if (pageBuf == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } tdbDebug("pager/restore: %p, %d/%d, txnId:%s", pPager, pPager->dbOrigSize, pPager->dbFileSize, jFileName); @@ -1141,7 +1141,7 @@ int tdbPagerRestoreJournals(SPager *pPager) { SArray *pTxnList = taosArrayInit(16, sizeof(int64_t)); if (pTxnList == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } while ((pDirEntry = tdbReadDir(pDir)) != NULL) { @@ -1150,7 +1150,7 @@ int tdbPagerRestoreJournals(SPager *pPager) { int64_t txnId = -1; (void)sscanf(name, TDB_MAINDB_NAME "-journal.%" PRId64, &txnId); if (taosArrayPush(pTxnList, &txnId) == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } } } diff --git a/source/libs/tdb/src/db/tdbTable.c b/source/libs/tdb/src/db/tdbTable.c index f62e211586..e7a25c7fee 100644 --- a/source/libs/tdb/src/db/tdbTable.c +++ b/source/libs/tdb/src/db/tdbTable.c @@ -41,7 +41,7 @@ int tdbTbOpen(const char *tbname, int keyLen, int valLen, tdb_cmpr_fn_t keyCmprF pTb = (TTB *)tdbOsCalloc(1, sizeof(*pTb)); if (pTb == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } // pTb->pEnv @@ -221,7 +221,7 @@ int tdbTbcOpen(TTB *pTb, TBC **ppTbc, TXN *pTxn) { *ppTbc = NULL; pTbc = (TBC *)tdbOsMalloc(sizeof(*pTbc)); if (pTbc == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if ((ret = tdbBtcOpen(&pTbc->btc, pTb->pBt, pTxn)) != 0) { diff --git a/source/libs/tfs/src/tfs.c b/source/libs/tfs/src/tfs.c index 9727256a58..a353bd7941 100644 --- a/source/libs/tfs/src/tfs.c +++ b/source/libs/tfs/src/tfs.c @@ -50,7 +50,7 @@ int32_t tfsOpen(SDiskCfg *pCfg, int32_t ndisk, STfs **ppTfs) { pTfs->hash = taosHashInit(TFS_MAX_DISKS * 2, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_NO_LOCK); if (pTfs->hash == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _exit); + TAOS_CHECK_GOTO(terrno, &lino, _exit); } for (int32_t idisk = 0; idisk < ndisk; idisk++) { @@ -96,15 +96,15 @@ void tfsUpdateSize(STfs *pTfs) { size.used += pTier->size.used; } - (void)tfsLock(pTfs); + TAOS_UNUSED(tfsLock(pTfs)); pTfs->size = size; - (void)tfsUnLock(pTfs); + TAOS_UNUSED(tfsUnLock(pTfs)); } SDiskSize tfsGetSize(STfs *pTfs) { - (void)tfsLock(pTfs); + TAOS_UNUSED(tfsLock(pTfs)); SDiskSize size = pTfs->size; - (void)tfsUnLock(pTfs); + TAOS_UNUSED(tfsUnLock(pTfs)); return size; } @@ -204,8 +204,8 @@ bool tfsIsSameFile(const STfsFile *pFile1, const STfsFile *pFile2) { (void)strncpy(nameBuf2, pFile2->rname, TMPNAME_LEN); nameBuf1[TMPNAME_LEN - 1] = 0; nameBuf2[TMPNAME_LEN - 1] = 0; - (void)taosRealPath(nameBuf1, NULL, TMPNAME_LEN); - (void)taosRealPath(nameBuf2, NULL, TMPNAME_LEN); + TAOS_UNUSED(taosRealPath(nameBuf1, NULL, TMPNAME_LEN)); + TAOS_UNUSED(taosRealPath(nameBuf2, NULL, TMPNAME_LEN)); if (strncmp(nameBuf1, nameBuf2, TMPNAME_LEN) != 0) return false; return true; } @@ -284,7 +284,7 @@ int32_t tfsMkdirRecurAt(STfs *pTfs, const char *rname, SDiskID diskId) { if (errno == ENOENT) { // Try to create upper if ((s = taosStrdup(rname)) == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _exit); + TAOS_CHECK_GOTO(terrno, &lino, _exit); } // Make a copy of dirname(s) because the implementation of 'dirname' differs on different platforms. @@ -483,7 +483,7 @@ const STfsFile *tfsReaddir(STfsDir *pTfsDir) { void tfsClosedir(STfsDir *pTfsDir) { if (pTfsDir) { if (pTfsDir->pDir != NULL) { - (void)taosCloseDir(&pTfsDir->pDir); + TAOS_UNUSED(taosCloseDir(&pTfsDir->pDir)); pTfsDir->pDir = NULL; } taosMemoryFree(pTfsDir); @@ -693,12 +693,12 @@ static STfsDisk *tfsNextDisk(STfs *pTfs, SDiskIter *pIter) { int32_t tfsGetMonitorInfo(STfs *pTfs, SMonDiskInfo *pInfo) { pInfo->datadirs = taosArrayInit(32, sizeof(SMonDiskDesc)); if (pInfo->datadirs == NULL) { - TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY); + TAOS_RETURN(terrno); } tfsUpdateSize(pTfs); - (void)tfsLock(pTfs); + TAOS_UNUSED(tfsLock(pTfs)); for (int32_t level = 0; level < pTfs->nlevel; level++) { STfsTier *pTier = &pTfs->tiers[level]; for (int32_t disk = 0; disk < pTier->ndisk; ++disk) { @@ -708,14 +708,14 @@ int32_t tfsGetMonitorInfo(STfs *pTfs, SMonDiskInfo *pInfo) { dinfo.level = pDisk->level; tstrncpy(dinfo.name, pDisk->path, sizeof(dinfo.name)); if (taosArrayPush(pInfo->datadirs, &dinfo) == NULL) { - (void)tfsUnLock(pTfs); + TAOS_UNUSED(tfsUnLock(pTfs)); taosArrayDestroy(pInfo->datadirs); pInfo->datadirs = NULL; - TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY); + TAOS_RETURN(terrno); } } } - (void)tfsUnLock(pTfs); + TAOS_UNUSED(tfsUnLock(pTfs)); TAOS_RETURN(0); } diff --git a/source/libs/tfs/src/tfsDisk.c b/source/libs/tfs/src/tfsDisk.c index 6041f68f6f..14dd7f5b07 100644 --- a/source/libs/tfs/src/tfsDisk.c +++ b/source/libs/tfs/src/tfsDisk.c @@ -26,7 +26,7 @@ int32_t tfsNewDisk(int32_t level, int32_t id, int8_t disable, const char *path, } if ((pDisk->path = taosStrdup(path)) == NULL) { - TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _exit); + TAOS_CHECK_GOTO(terrno, &lino, _exit); } pDisk->level = level; diff --git a/source/libs/tfs/src/tfsTier.c b/source/libs/tfs/src/tfsTier.c index 0733e3c76a..2cfcdc6d0a 100644 --- a/source/libs/tfs/src/tfsTier.c +++ b/source/libs/tfs/src/tfsTier.c @@ -88,7 +88,7 @@ void tfsUpdateTierSize(STfsTier *pTier) { SDiskSize size = {0}; int32_t nAvailDisks = 0; - (void)tfsLockTier(pTier); + TAOS_UNUSED(tfsLockTier(pTier)); for (int32_t id = 0; id < pTier->ndisk; id++) { STfsDisk *pDisk = pTier->disks[id]; @@ -104,15 +104,15 @@ void tfsUpdateTierSize(STfsTier *pTier) { pTier->size = size; pTier->nAvailDisks = nAvailDisks; - (void)tfsUnLockTier(pTier); + TAOS_UNUSED(tfsUnLockTier(pTier)); } // Round-Robin to allocate disk on a tier int32_t tfsAllocDiskOnTier(STfsTier *pTier) { - (void)tfsLockTier(pTier); + TAOS_UNUSED(tfsLockTier(pTier)); if (pTier->ndisk <= 0 || pTier->nAvailDisks <= 0) { - (void)tfsUnLockTier(pTier); + TAOS_UNUSED(tfsUnLockTier(pTier)); TAOS_RETURN(TSDB_CODE_FS_NO_VALID_DISK); } @@ -155,7 +155,7 @@ int32_t tfsAllocDiskOnTier(STfsTier *pTier) { #endif } - (void)tfsUnLockTier(pTier); + TAOS_UNUSED(tfsUnLockTier(pTier)); if (retId < 0) { TAOS_RETURN(TSDB_CODE_FS_NO_VALID_DISK); } diff --git a/source/util/src/tref.c b/source/util/src/tref.c index 685fe01fee..9360bd8b0e 100644 --- a/source/util/src/tref.c +++ b/source/util/src/tref.c @@ -158,6 +158,8 @@ int64_t taosAddRef(int32_t rsetId, void *p) { pNode = taosMemoryCalloc(sizeof(SRefNode), 1); if (pNode == NULL) { + taosDecRsetCount(pSet); + uError("rsetId:%d p:%p failed to add, out of memory", rsetId, p); return terrno; } diff --git a/source/util/src/tworker.c b/source/util/src/tworker.c index a1d2d8e38c..c2757dcabc 100644 --- a/source/util/src/tworker.c +++ b/source/util/src/tworker.c @@ -714,7 +714,6 @@ static bool tQueryAutoQWorkerTryDecActive(void *p, int32_t minActive) { if (atomicCompareExchangeActiveAndRunning(&pPool->activeRunningN, &active, active - 1, &running, running - 1)) return true; } - (void)atomicFetchSubRunning(&pPool->activeRunningN, 1); return false; } @@ -784,6 +783,7 @@ bool tQueryAutoQWorkerTryRecycleWorker(SQueryAutoQWorkerPool *pPool, SQueryAutoQ return true; } else { + (void)atomicFetchSubRunning(&pPool->activeRunningN, 1); return true; } } @@ -978,7 +978,6 @@ static int32_t tQueryAutoQWorkerAddWorker(SQueryAutoQWorkerPool *pool) { SListNode *pNode = tdListAdd(pool->workers, &worker); if (!pNode) { (void)taosThreadMutexUnlock(&pool->poolLock); - terrno = TSDB_CODE_OUT_OF_MEMORY; return terrno; } (void)taosThreadMutexUnlock(&pool->poolLock); @@ -1006,6 +1005,7 @@ static int32_t tQueryAutoQWorkerBeforeBlocking(void *p) { if (code != TSDB_CODE_SUCCESS) { return code; } + (void)atomicFetchSubRunning(&pPool->activeRunningN, 1); } return TSDB_CODE_SUCCESS; diff --git a/tests/army/query/subquery/subqueryBugs.py b/tests/army/query/subquery/subqueryBugs.py index 8442474d40..e208c40abc 100644 --- a/tests/army/query/subquery/subqueryBugs.py +++ b/tests/army/query/subquery/subqueryBugs.py @@ -78,6 +78,72 @@ class TDTestCase(TBase): rows = [row1, row2, row3, row4] tdSql.checkDataMem(sql1, rows) + def ts_5443(self): + tdLog.info("create database ts_5443") + tdSql.execute("create database ts_5443") + tdSql.execute("use ts_5443") + sqls = [ + "CREATE STABLE demo (ts TIMESTAMP, site NCHAR(8), expected BIGINT) TAGS (group_id BIGINT UNSIGNED)", + "CREATE TABLE demo_1 USING demo (group_id) TAGS (1)", + "INSERT INTO demo_1 VALUES ('2022-10-25 16:05:00.000', 'MN-01', 1)", + "CREATE TABLE demo_2 USING demo (group_id) TAGS (2)", + "INSERT INTO demo_2 VALUES ('2022-10-25 16:10:00.000', 'MN-02', 2)", + "CREATE TABLE demo_3 USING demo (group_id) TAGS (3)", + "INSERT INTO demo_3 VALUES ('2022-10-25 16:15:00.000', 'MN-03', 3)", + ] + tdSql.executes(sqls) + # test result of order by in plain query + query = ''' + SELECT _wend, site, SUM(expected) AS check + FROM ts_5443.demo + PARTITION BY site INTERVAL(5m) SLIDING (5m) + ORDER BY 1 DESC, 2, 3 + ''' + tdSql.query(query) + tdSql.checkRows(3) + rows = [ + ['2022-10-25 16:20:00.000', 'MN-03', 3], + ['2022-10-25 16:15:00.000', 'MN-02', 2], + ['2022-10-25 16:10:00.000', 'MN-01', 1], + ] + tdSql.checkDataMem(query, rows) + # test order by position alias within subquery + query = ''' + SELECT COUNT(*) FROM ( + SELECT _wend, site, SUM(expected) AS check + FROM ts_5443.demo + PARTITION BY site INTERVAL(5m) SLIDING (5m) + ORDER BY 1 DESC, 2, 3 + ) WHERE check <> 0 + ''' + tdSql.query(query) + tdSql.checkRows(1) + tdSql.checkData(0, 0, 3) + # test order by target name within subquery + query = ''' + SELECT COUNT(*) FROM ( + SELECT _wend, site, SUM(expected) AS check + FROM ts_5443.demo + PARTITION BY site INTERVAL(5m) SLIDING (5m) + ORDER BY _wend DESC, site, check + ) WHERE check <> 0 + ''' + tdSql.query(query) + tdSql.checkRows(1) + tdSql.checkData(0, 0, 3) + # test having clause within subquery + query = ''' + SELECT COUNT(*) FROM ( + SELECT _wend, site, SUM(expected) AS check + FROM ts_5443.demo + PARTITION BY site INTERVAL(5m) SLIDING (5m) + HAVING _wend > '2022-10-25 16:13:00.000' + ) WHERE check <> 0 + ''' + tdSql.query(query) + tdSql.checkRows(1) + tdSql.checkData(0, 0, 2) + # run def run(self): tdLog.debug(f"start to excute {__file__}") @@ -85,6 +151,8 @@ class TDTestCase(TBase): # TS-30189 self.ts_30189() + # TS-5443 + self.ts_5443() tdLog.success(f"{__file__} successfully executed") diff --git a/tests/script/tsim/stream/streamPrimaryKey0.sim b/tests/script/tsim/stream/streamPrimaryKey0.sim index 94f62c4719..e6cfac5906 100644 --- a/tests/script/tsim/stream/streamPrimaryKey0.sim +++ b/tests/script/tsim/stream/streamPrimaryKey0.sim @@ -242,4 +242,75 @@ if $data01 != 2 then goto loop6 endi +print step3============= + +sql create database test3 vgroups 4; +sql use test3; +sql create table st(ts timestamp, a int primary key, b int , c int, d double) tags(ta varchar(100),tb int,tc int); +sql create table t1 using st tags("aa", 1, 2); + +sql create stream streams3_1 trigger at_once ignore expired 0 ignore update 0 into streamt3_1 as select _wstart, a, max(b), count(*), ta from st partition by ta, a interval(10s); +sql create stream streams3_2 trigger at_once ignore expired 0 ignore update 0 into streamt3_2 as select _wstart, a, max(b), count(*), ta from st partition by ta, a session(ts, 10s); + +run tsim/stream/checkTaskStatus.sim + +sql insert into t1 values(1648791210001,1,2,3,4.1); +sql insert into t1 values(1648791210002,2,2,3,1.1); +sql insert into t1 values(1648791220000,3,2,3,2.1); +sql insert into t1 values(1648791220001,4,2,3,3.1); + +$loop_count = 0 + +loop7: + +print 1 select * from streamt3_1; +sql select * from streamt3_1; + +print $data00 $data01 $data02 +print $data10 $data11 $data12 +print $data20 $data21 $data22 +print $data30 $data31 $data32 +print $data40 $data41 $data42 +print $data50 $data51 $data52 +print $data60 $data61 $data62 +print $data70 $data71 $data72 + +sleep 200 + +$loop_count = $loop_count + 1 +if $loop_count == 20 then + return -1 +endi + +if $rows != 4 then + print =====rows=$rows + goto loop7 +endi + +loop8: + +print 1 select * from streamt3_2; +sql select * from streamt3_2; + +print $data00 $data01 $data02 +print $data10 $data11 $data12 +print $data20 $data21 $data22 +print $data30 $data31 $data32 +print $data40 $data41 $data42 +print $data50 $data51 $data52 +print $data60 $data61 $data62 +print $data70 $data71 $data72 + +sleep 200 + +$loop_count = $loop_count + 1 +if $loop_count == 20 then + return -1 +endi + +if $rows != 4 then + print =====rows=$rows + goto loop8 +endi + system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file diff --git a/tools/auto/testCompression/json/d0_10w.csv.zip b/tools/auto/testCompression/json/d0_10w.csv.zip new file mode 100644 index 0000000000..d7dcea6cd5 Binary files /dev/null and b/tools/auto/testCompression/json/d0_10w.csv.zip differ diff --git a/tools/auto/testCompression/json/generate.json b/tools/auto/testCompression/json/generate.json new file mode 100644 index 0000000000..1394dfc28d --- /dev/null +++ b/tools/auto/testCompression/json/generate.json @@ -0,0 +1,64 @@ +{ + "filetype": "insert", + "cfgdir": "/etc/taos", + "host": "127.0.0.1", + "port": 6030, + "user": "root", + "password": "taosdata", + "num_of_records_per_req": 500, + "thread_count": 4, + "create_table_thread_count": 1, + "confirm_parameter_prompt": "no", + "databases": [ + { + "dbinfo": { + "name": "test", + "drop": "yes", + "vgroups": 2 + }, + "super_tables": [ + { + "name": "meters", + "child_table_exists": "no", + "childtable_count": 1, + "insert_rows": 100000, + "childtable_prefix": "d", + "insert_mode": "taosc", + "timestamp_step": 1, + "start_timestamp":1700000000000, + "columns": [ + { "type": "bool", "name": "bc"}, + { "type": "float", "name": "fc", "max": 1, "min": 0 }, + { "type": "double", "name": "dc", "max": 1, "min": 0 }, + { "type": "tinyint", "name": "ti", "max": 100, "min": 0 }, + { "type": "smallint", "name": "si", "max": 100, "min": 0 }, + { "type": "int", "name": "ic", "max": 100, "min": 0 }, + { "type": "bigint", "name": "bi", "max": 100, "min": 0 }, + { "type": "utinyint", "name": "uti", "max": 100, "min": 0 }, + { "type": "usmallint", "name": "usi", "max": 100, "min": 0 }, + { "type": "uint", "name": "ui", "max": 100, "min": 0 }, + { "type": "ubigint", "name": "ubi", "max": 100, "min": 0 }, + { "type": "binary", "name": "bin", "len": 32}, + { "type": "nchar", "name": "nch", "len": 64} + ], + "tags": [ + { + "type": "tinyint", + "name": "groupid", + "max": 10, + "min": 1 + }, + { + "name": "location", + "type": "binary", + "len": 16, + "values": ["San Francisco", "Los Angles", "San Diego", + "San Jose", "Palo Alto", "Campbell", "Mountain View", + "Sunnyvale", "Santa Clara", "Cupertino"] + } + ] + } + ] + } + ] +} diff --git a/tools/auto/testCompression/json/template.json b/tools/auto/testCompression/json/template.json new file mode 100644 index 0000000000..1be39d21a1 --- /dev/null +++ b/tools/auto/testCompression/json/template.json @@ -0,0 +1,59 @@ +{ + "filetype": "insert", + "cfgdir": "/etc/taos", + "host": "127.0.0.1", + "port": 6030, + "user": "root", + "password": "taosdata", + "thread_count": 1, + "create_table_thread_count": 1, + "confirm_parameter_prompt": "no", + "num_of_records_per_req": 2000, + "prepared_rand": 100000, + "escape_character": "yes", + "databases": [ + { + "dbinfo": { + "name": "dbrate", + "drop": "yes", + "vgroups": 1, + "stt_trigger": 1, + "wal_retention_size": 1, + "wal_retention_period": 1 + }, + "super_tables": [ + { + "name": "meters", + "child_table_exists": "no", + "childtable_count": 1, + "childtable_prefix": "d", + "data_source": "sample", + "insert_mode": "taosc", + "insert_rows": 100000, + "timestamp_step": 1, + "start_timestamp": "2020-10-01 00:00:00.000", + "sample_file": "./json/d0_10w.csv", + "use_sample_ts": "yes", + "columns": [ + { "type": "bool", "name": "bc", "compress":"@COMPRESS"}, + { "type": "float", "name": "fc", "compress":"@COMPRESS"}, + { "type": "double", "name": "dc", "compress":"@COMPRESS"}, + { "type": "tinyint", "name": "ti", "compress":"@COMPRESS"}, + { "type": "smallint", "name": "si", "compress":"@COMPRESS"}, + { "type": "int", "name": "ic", "compress":"@COMPRESS"}, + { "type": "bigint", "name": "bi", "compress":"@COMPRESS"}, + { "type": "utinyint", "name": "uti","compress":"@COMPRESS"}, + { "type": "usmallint", "name": "usi","compress":"@COMPRESS"}, + { "type": "uint", "name": "ui", "compress":"@COMPRESS"}, + { "type": "ubigint", "name": "ubi","compress":"@COMPRESS"}, + { "type": "binary", "name": "bin", "len": 32, "compress":"@COMPRESS"}, + { "type": "nchar", "name": "nch", "len": 64, "compress":"@COMPRESS"} + ], + "tags": [ + {"type": "TINYINT", "name": "groupid", "max": 10, "min": 1} + ] + } + ] + } + ] +} diff --git a/tools/auto/testCompression/testCompression.py b/tools/auto/testCompression/testCompression.py new file mode 100644 index 0000000000..768fa87f71 --- /dev/null +++ b/tools/auto/testCompression/testCompression.py @@ -0,0 +1,297 @@ +import taos +import sys +import os +import subprocess +import time +import random +import json +from datetime import datetime + + +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- +dataDir = "/var/lib/taos/" +templateFile = "json/template.json" +Number = 0 +resultContext = "" + + +def showLog(str): + print(str) + +def exec(command, show=True): + if(show): + print(f"exec {command}\n") + return os.system(command) + +# run return output and error +def run(command, timeout = 60, show=True): + if(show): + print(f"run {command} timeout={timeout}s\n") + + process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + process.wait(timeout) + + output = process.stdout.read().decode(encoding="gbk") + error = process.stderr.read().decode(encoding="gbk") + + return output, error + +# return list after run +def runRetList(command, timeout=10): + output,error = run(command, timeout) + return output.splitlines() + +def readFileContext(filename): + file = open(filename) + context = file.read() + file.close() + return context + + +def writeFileContext(filename, context): + file = open(filename, "w") + file.write(context) + file.close() + +def appendFileContext(filename, context): + global resultContext + resultContext += context + try: + file = open(filename, "a") + wsize = file.write(context) + file.close() + except: + print(f"appand file error context={context} .") + +def getFolderSize(folder): + total_size = 0 + for dirpath, dirnames, filenames in os.walk(folder): + for filename in filenames: + filepath = os.path.join(dirpath, filename) + total_size += os.path.getsize(filepath) + return total_size + +def waitClusterAlive(loop): + for i in range(loop): + command = 'taos -s "show cluster alive\G;" ' + out,err = run(command) + print(out) + if out.find("status: 1") >= 0: + showLog(f" i={i} wait cluster alive ok.\n") + return True + + showLog(f" i={i} wait cluster alive ...\n") + time.sleep(1) + + showLog(f" i={i} wait cluster alive failed.\n") + return False + +def waitCompactFinish(loop): + for i in range(loop): + command = 'taos -s "show compacts;" ' + out,err = run(command) + if out.find("Query OK, 0 row(s) in set") >= 0: + showLog(f" i={i} wait compact finish ok\n") + return True + + showLog(f" i={i} wait compact ...\n") + time.sleep(1) + + showLog(f" i={i} wait compact failed.\n") + return False + + +def getTypeName(datatype): + str1 = datatype.split(",")[0] + str2 = str1.split(":")[1] + str3 = str2.replace('"','').replace(' ','') + return str3 + + +def getMatch(datatype, algo): + if algo == "tsz": + if datatype == "float" or datatype == "double": + return True + else: + return False + else: + return True + + +def generateJsonFile(algo): + print(f"doTest algo: {algo} \n") + + # replace datatype + context = readFileContext(templateFile) + # replace compress + context = context.replace("@COMPRESS", algo) + + # write to file + fileName = f"json/test_{algo}.json" + if os.path.exists(fileName): + os.remove(fileName) + writeFileContext(fileName, context) + + return fileName + +def taosdStart(): + cmd = "nohup /usr/bin/taosd 2>&1 & " + ret = exec(cmd) + print(f"exec taosd ret = {ret}\n") + time.sleep(3) + waitClusterAlive(10) + +def taosdStop(): + i = 1 + toBeKilled = "taosd" + killCmd = "ps -ef|grep -w %s| grep -v grep | awk '{print $2}' | xargs kill -TERM > /dev/null 2>&1" % toBeKilled + psCmd = "ps -ef|grep -w %s| grep -v grep | awk '{print $2}'" % toBeKilled + processID = subprocess.check_output(psCmd, shell=True) + while(processID): + os.system(killCmd) + time.sleep(1) + processID = subprocess.check_output(psCmd, shell=True) + print(f"i={i} kill taosd pid={processID}") + i += 1 + +def cleanAndStartTaosd(): + + # stop + taosdStop() + # clean + exec(f"rm -rf {dataDir}") + # start + taosdStart() + +def findContextValue(context, label): + start = context.find(label) + if start == -1 : + return "" + start += len(label) + 2 + # skip blank + while context[start] == ' ': + start += 1 + + # find end ',' + end = start + ends = [',','}',']', 0] + while context[end] not in ends: + end += 1 + + print(f"start = {start} end={end}\n") + return context[start:end] + + +def writeTemplateInfo(resultFile): + # create info + context = readFileContext(templateFile) + vgroups = findContextValue(context, "vgroups") + childCount = findContextValue(context, "childtable_count") + insertRows = findContextValue(context, "insert_rows") + line = f"vgroups = {vgroups}\nchildtable_count = {childCount}\ninsert_rows = {insertRows}\n\n" + print(line) + appendFileContext(resultFile, line) + + +def totalCompressRate(algo, resultFile, writeSecond): + global Number + # flush + command = 'taos -s "flush database dbrate;"' + rets = exec(command) + command = 'taos -s "compact database dbrate;"' + rets = exec(command) + waitCompactFinish(60) + + # read compress rate + command = 'taos -s "show table distributed dbrate.meters\G;"' + rets = runRetList(command) + print(rets) + + str1 = rets[5] + arr = str1.split(" ") + + # Total_Size KB + str2 = arr[2] + pos = str2.find("=[") + totalSize = int(float(str2[pos+2:])/1024) + + # Compression_Ratio + str2 = arr[6] + pos = str2.find("=[") + rate = str2[pos+2:] + print("rate =" + rate) + + # total data file size + #dataSize = getFolderSize(f"{dataDir}/vnode/") + #dataSizeMB = int(dataSize/1024/1024) + + # appand to file + + Number += 1 + context = "%10s %10s %10s %10s %10s\n"%( Number, algo, str(totalSize)+" MB", rate+"%", writeSecond + " s") + showLog(context) + appendFileContext(resultFile, context) + + +def doTest(algo, resultFile): + print(f"doTest algo: {algo} \n") + #cleanAndStartTaosd() + + + # json + jsonFile = generateJsonFile(algo) + + # run taosBenchmark + t1 = time.time() + exec(f"taosBenchmark -f {jsonFile}") + t2 = time.time() + + # total compress rate + totalCompressRate(algo, resultFile, str(int(t2-t1))) + +def main(): + + # test compress method + algos = ["lz4", "zlib", "zstd", "xz", "disabled"] + + # record result + resultFile = "./result.txt" + timestamp = time.time() + now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(timestamp)) + context = f"\n---------------------- test rate ({now}) ---------------------------------\n" + + appendFileContext(resultFile, context) + # json info + writeTemplateInfo(resultFile) + # head + context = "\n%10s %10s %10s %10s %10s\n"%("No", "compress", "dataSize", "rate", "insertSeconds") + appendFileContext(resultFile, context) + + + # loop for all compression + for algo in algos: + # do test + doTest(algo, resultFile) + appendFileContext(resultFile, " \n") + + timestamp = time.time() + now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(timestamp)) + appendFileContext(resultFile, f"\n{now} finished test!\n") + + +if __name__ == "__main__": + print("welcome use TDengine compress rate test tools.\n") + main() + # show result + print(resultContext) \ No newline at end of file diff --git a/tools/shell/src/shellNettest.c b/tools/shell/src/shellNettest.c index 9fe92212ca..2e5ec7bc24 100644 --- a/tools/shell/src/shellNettest.c +++ b/tools/shell/src/shellNettest.c @@ -61,7 +61,7 @@ static void shellWorkAsClient() { uint64_t startTime = taosGetTimestampUs(); for (int32_t i = 0; i < pArgs->pktNum; ++i) { - SRpcMsg rpcMsg = {.info.ahandle = (void *)0x9525, .msgType = TDMT_DND_NET_TEST}; + SRpcMsg rpcMsg = {.info.ahandle = (void *)0x9525, .info.notFreeAhandle = 1, .msgType = TDMT_DND_NET_TEST}; rpcMsg.pCont = rpcMallocCont(pArgs->pktLen); rpcMsg.contLen = pArgs->pktLen;