You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@inlong.apache.org by do...@apache.org on 2022/08/26 04:59:22 UTC

[inlong] branch release-1.3.0 updated (d55e3d9cf -> 9fe9c54b1)

This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a change to branch release-1.3.0
in repository https://gitbox.apache.org/repos/asf/inlong.git


    omit d55e3d9cf [INLONG-5700][TubeMQ] Core file generated while the C++ consumer is closed (#5707)
    omit 09d0f30cb [INLONG-5703][Manager] Add separator-related fields for some sources (#5706)
    omit a133995d1 [INLONG-5694][Manager] Fix the problem that gets the inlong group error (#5695)
    omit defa542b6 [INLONG-5705][Manager] Fix the deprecated dependency of PageInfo (#5704)
    omit 9efb1124a [INLONG-5689][Manager] PulsarSource set fieldDelimiter when use CSV format (#5690)
    omit fea2d2140 [INLONG-5698][Manager] Fixed the DataProxy cluster tag was restored after the manager was restarted (#5699)
    omit 388c92202 [INLONG-5696][Dashboard] EditableTable value update error when columns change (#5697)
    omit 44976f1b8 [INLONG-5039][Manager] Support delete and update command, and query execution logs for manager client (#5519)
    omit 1f0ec44a6 [INLONG-5290][Manager] Optimize the objects returned by paging queries (#5558)
    omit 1b51ffd17 [INLONG-5691][Manager] Remove the append operation for agent IPs (#5692)
    omit 522267d2d [INLONG-5680][Manager][Sort] Fix field relation object generate error (#5693)
    omit 9338dde13 [INLONG-5687][TubeMQ] Missing log content in the tests directory (#5688)
    omit f8d7f8bba [INLONG-5623][SDK] Support multi-topic fetcher for Kafka (#5659)
    omit 1ff6dccda [INLONG-5681][TubeMQ] The C++ SDK does not switch after the active Master node hangs up (#5682)
    omit b4ba802e6 [INLONG-5685][Dashboard] Fix the error of setting approvers params (#5686)
    omit db2ed5649 [INLONG-5678][Manager] Provide source info for group status (#5679)
    omit c06627cab [INLONG-5675][Agent] Support custom fixed ip for Agent (#5677)
    omit 05286b7ee [INLONG-5672][TubeMQ] Add SetLogPrintLevel() in TubeMQServiceConfig class (#5673)
    omit 98bf0ee85 [INLONG-5667][SDK] Change groupId and streamId while wrapping message (#5668)
    omit 14cff90e3 [INLONG-5621][SDK] Support multi-topic fetcher for Pulsar (#5625)
    omit f150ddbeb [INLONG-5663][Agent] To update data structure for k8s log (#5664)
    omit 2baf658c6 [INLONG-5652][Docker] Fix push aarch64 images script (#5653)
    omit 21de72e7a [INLONG-5648][Dashboard] Optimize the create logic, support specifying specific types (#5649)
    omit 6171a2a7f [INLONG-5658][DataProxy] Fix incorrect docker script (#5660)
    omit c1f798c96 [INLONG-5639][Release] Bumped version to 1.4.0-SNAPSHOT (#5640)
    omit 8f26932c8 [INLONG-5650][Manager] Remove the non-null check of the Pulsar adminURL (#5651)
    omit 90b678876 [INLONG-5637][Sort] Fix kafka load node npe error (#5638)
    omit c9a640d4c [INLONG-5437][SDK] Support initializing SDK(cpp) by ClientConfig object (#5641)
     add 05a94af45 [INLONG-5437][SDK] Support initializing SDK(cpp) by ClientConfig object (#5641)
     add 98a136863 [INLONG-5637][Sort] Fix kafka load node npe error (#5638)
     add 38dfe734f [INLONG-5650][Manager] Remove the non-null check of the Pulsar adminURL (#5651)
     add 4e672def5 [INLONG-5655][Release] Change version from 1.3.0-SNAPSHOT to 1.3.0 (#5656)
     add 13c193786 [INLONG-5658][DataProxy] Fix incorrect docker script (#5660)
     add 9b8a0c335 [INLONG-5648][Dashboard] Optimize the create logic, support specifying specific types (#5649)
     add 5c6f52ffd [INLONG-5652][Docker] Fix push aarch64 images script (#5653)
     add f1346a657 [INLONG-5663][Agent] To update data structure for k8s log (#5664)
     new f19f9eaa6 [INLONG-5657][Release] Change the tag of Docker images to 1.3.0 (#5661)
     new 7e5400e19 [INLONG-5667][SDK] Change groupId and streamId while wrapping message (#5668)
     new 9e4d9296e [INLONG-5675][Agent] Support custom fixed ip for Agent (#5677)
     new cd807f6db [INLONG-5678][Manager] Provide source info for group status (#5679)
     new 323d4a31d [INLONG-5685][Dashboard] Fix the error of setting approvers params (#5686)
     new f63ebf9f3 [INLONG-5681][TubeMQ] The C++ SDK does not switch after the active Master node hangs up (#5682)
     new 34cbdfab0 [INLONG-5680][Manager][Sort] Fix field relation object generate error (#5693)
     new 1f97f2021 [INLONG-5691][Manager] Remove the append operation for agent IPs (#5692)
     new 9fe9c54b1 [INLONG-5290][Manager] Optimize the objects returned by paging queries (#5558)

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (d55e3d9cf)
            \
             N -- N -- N   refs/heads/release-1.3.0 (9fe9c54b1)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 9 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 conf/inlong.conf                                   |   2 +-
 docker/docker-compose/docker-compose.yml           |  10 +-
 inlong-agent/agent-common/pom.xml                  |   2 +-
 inlong-agent/agent-core/pom.xml                    |   2 +-
 inlong-agent/agent-docker/README.md                |   2 +-
 inlong-agent/agent-docker/pom.xml                  |   2 +-
 inlong-agent/agent-plugins/pom.xml                 |   2 +-
 inlong-agent/agent-release/pom.xml                 |   2 +-
 inlong-agent/pom.xml                               |   2 +-
 inlong-audit/audit-common/pom.xml                  |   2 +-
 inlong-audit/audit-docker/README.md                |   2 +-
 inlong-audit/audit-docker/pom.xml                  |   2 +-
 inlong-audit/audit-proxy/pom.xml                   |   2 +-
 inlong-audit/audit-release/pom.xml                 |   2 +-
 inlong-audit/audit-sdk/pom.xml                     |   2 +-
 inlong-audit/audit-store/pom.xml                   |   2 +-
 inlong-audit/pom.xml                               |   2 +-
 inlong-common/pom.xml                              |   2 +-
 inlong-dashboard/pom.xml                           |   2 +-
 .../src/components/EditableTable/index.tsx         |  10 +-
 inlong-dataproxy/dataproxy-dist/pom.xml            |   2 +-
 inlong-dataproxy/dataproxy-docker/README.md        |   2 +-
 inlong-dataproxy/dataproxy-docker/pom.xml          |   2 +-
 inlong-dataproxy/dataproxy-source/pom.xml          |   2 +-
 inlong-dataproxy/pom.xml                           |   2 +-
 inlong-distribution/pom.xml                        |   2 +-
 inlong-manager/manager-client-examples/pom.xml     |   2 +-
 inlong-manager/manager-client-tools/pom.xml        |   2 +-
 .../inlong/manager/client/cli/CommandToolMain.java |   5 +-
 .../inlong/manager/client/cli/CreateCommand.java   |  23 +-
 .../inlong/manager/client/cli/DeleteCommand.java   |  66 ----
 .../inlong/manager/client/cli/ListCommand.java     |   2 +-
 .../inlong/manager/client/cli/LogCommand.java      |  87 -----
 .../inlong/manager/client/cli/UpdateCommand.java   |  78 ----
 .../inlong/manager/client/cli/pojo/GroupInfo.java  |   2 -
 .../inlong/manager/client/cli/pojo/SinkInfo.java   |   2 -
 .../inlong/manager/client/cli/pojo/SourceInfo.java |   2 -
 .../inlong/manager/client/cli/pojo/StreamInfo.java |   2 -
 .../manager/client/cli/util/ClientUtils.java       |   5 +-
 .../inlong/manager/client/cli/TestCommand.java     |  25 +-
 .../src/test/resources/create_group.json           |  29 +-
 .../src/test/resources/test_config.json            |   9 -
 inlong-manager/manager-client/pom.xml              |   2 +-
 inlong-manager/manager-common/pom.xml              |   2 +-
 inlong-manager/manager-dao/pom.xml                 |   2 +-
 .../dao/mapper/InlongClusterEntityMapper.java      |   2 -
 .../mappers/InlongClusterEntityMapper.xml          |  15 -
 inlong-manager/manager-docker/README.md            |   2 +-
 inlong-manager/manager-docker/pom.xml              |   2 +-
 inlong-manager/manager-plugins/pom.xml             |   2 +-
 .../plugin/listener/DeleteSortListener.java        |  12 +-
 .../plugin/listener/DeleteStreamListener.java      |  12 +-
 .../plugin/listener/RestartSortListener.java       |  14 +-
 .../plugin/listener/RestartStreamListener.java     |  14 +-
 .../plugin/listener/StartupStreamListener.java     |  14 +-
 .../plugin/listener/SuspendSortListener.java       |  12 +-
 .../plugin/listener/SuspendStreamListener.java     |  12 +-
 inlong-manager/manager-pojo/pom.xml                |   2 +-
 .../manager/pojo/sort/util/ExtractNodeUtils.java   |   5 +-
 .../pojo/source/autopush/AutoPushSource.java       |   9 -
 .../pojo/source/autopush/AutoPushSourceDTO.java    |   9 -
 .../source/autopush/AutoPushSourceRequest.java     |  11 -
 .../manager/pojo/source/kafka/KafkaSource.java     |   9 -
 .../manager/pojo/source/kafka/KafkaSourceDTO.java  |   9 -
 .../pojo/source/kafka/KafkaSourceRequest.java      |  11 -
 .../manager/pojo/source/pulsar/PulsarSource.java   |   9 -
 .../pojo/source/pulsar/PulsarSourceDTO.java        |   9 -
 .../pojo/source/pulsar/PulsarSourceRequest.java    |  11 -
 inlong-manager/manager-service/pom.xml             |   2 +-
 .../service/core/heartbeat/HeartbeatManager.java   |  11 +-
 .../service/core/impl/ConsumptionServiceImpl.java  |   8 +-
 .../service/core/impl/SortSourceServiceImpl.java   |  17 +-
 .../service/group/InlongGroupServiceImpl.java      |   5 +-
 .../source/pulsar/PulsarSourceOperator.java        |   7 -
 inlong-manager/manager-test/pom.xml                |   2 +-
 inlong-manager/manager-web/pom.xml                 |   2 +-
 inlong-manager/manager-workflow/pom.xml            |   2 +-
 .../core/impl/WorkflowQueryServiceImpl.java        |   5 +-
 inlong-manager/pom.xml                             |   2 +-
 inlong-sdk/dataproxy-sdk/pom.xml                   |   2 +-
 inlong-sdk/pom.xml                                 |   2 +-
 inlong-sdk/sdk-common/pom.xml                      |   2 +-
 inlong-sdk/sort-sdk/pom.xml                        |   4 +-
 .../inlong/sdk/sort/api/MultiTopicsFetcher.java    |  85 -----
 .../inlong/sdk/sort/api/SortClientConfig.java      |  11 -
 .../sort/fetcher/kafka/AckOffsetOnRebalance.java   |  36 --
 .../fetcher/kafka/KafkaMultiTopicsFetcher.java     | 388 -------------------
 .../sdk/sort/fetcher/pulsar/PulsarConsumer.java    |  96 -----
 .../fetcher/pulsar/PulsarMultiTopicsFetcher.java   | 418 ---------------------
 inlong-sort-standalone/pom.xml                     |   2 +-
 .../sort-standalone-common/pom.xml                 |   2 +-
 .../sort-standalone-dist/pom.xml                   |   2 +-
 .../sort-standalone-source/pom.xml                 |   2 +-
 inlong-sort/pom.xml                                |   2 +-
 inlong-sort/sort-api/pom.xml                       |   2 +-
 inlong-sort/sort-common/pom.xml                    |   2 +-
 .../sort/protocol/node/format/CsvFormat.java       |   5 -
 inlong-sort/sort-connectors/base/pom.xml           |   2 +-
 inlong-sort/sort-connectors/doris/pom.xml          |   2 +-
 .../sort-connectors/elasticsearch-6/pom.xml        |   2 +-
 .../sort-connectors/elasticsearch-7/pom.xml        |   2 +-
 .../sort-connectors/elasticsearch-base/pom.xml     |   2 +-
 inlong-sort/sort-connectors/filesystem/pom.xml     |   2 +-
 inlong-sort/sort-connectors/hbase/pom.xml          |   2 +-
 inlong-sort/sort-connectors/hive/pom.xml           |   2 +-
 inlong-sort/sort-connectors/iceberg-dlc/pom.xml    |   2 +-
 inlong-sort/sort-connectors/iceberg/pom.xml        |   2 +-
 inlong-sort/sort-connectors/jdbc/pom.xml           |   2 +-
 inlong-sort/sort-connectors/kafka/pom.xml          |   2 +-
 inlong-sort/sort-connectors/mongodb-cdc/pom.xml    |   2 +-
 inlong-sort/sort-connectors/mysql-cdc/pom.xml      |   2 +-
 inlong-sort/sort-connectors/oracle-cdc/pom.xml     |   2 +-
 inlong-sort/sort-connectors/pom.xml                |   2 +-
 inlong-sort/sort-connectors/postgres-cdc/pom.xml   |   2 +-
 inlong-sort/sort-connectors/pulsar/pom.xml         |   2 +-
 inlong-sort/sort-connectors/redis/pom.xml          |   2 +-
 inlong-sort/sort-connectors/sqlserver-cdc/pom.xml  |   2 +-
 inlong-sort/sort-connectors/tubemq/pom.xml         |   2 +-
 inlong-sort/sort-core/pom.xml                      |   2 +-
 inlong-sort/sort-dist/pom.xml                      |   2 +-
 inlong-sort/sort-end-to-end-tests/pom.xml          |   2 +-
 inlong-sort/sort-formats/format-base/pom.xml       |   2 +-
 inlong-sort/sort-formats/format-common/pom.xml     |   2 +-
 inlong-sort/sort-formats/format-csv/pom.xml        |   2 +-
 .../sort-formats/format-inlongmsg-base/pom.xml     |   2 +-
 .../sort-formats/format-inlongmsg-csv/pom.xml      |   2 +-
 .../sort-formats/format-inlongmsg-pb/pom.xml       |   2 +-
 inlong-sort/sort-formats/format-json/pom.xml       |   2 +-
 inlong-sort/sort-formats/format-kv/pom.xml         |   2 +-
 inlong-sort/sort-formats/pom.xml                   |   2 +-
 inlong-tubemq/pom.xml                              |   2 +-
 .../example/consumer/test_consumer.cc              |   1 -
 .../include/tubemq/tubemq_config.h                 |   1 -
 .../tubemq-client-cpp/src/baseconsumer.cc          |  40 +-
 .../tubemq-client-cpp/src/tubemq_config.cc         |   5 +-
 .../tubemq-client-cpp/tests/CMakeLists.txt         |   2 +-
 .../tests/logger_test/CMakeLists.txt               |  21 --
 .../tubemq-client-cpp/tests/logger_test/main.cc    |  62 ---
 inlong-tubemq/tubemq-client/pom.xml                |   2 +-
 inlong-tubemq/tubemq-connectors/pom.xml            |   2 +-
 .../tubemq-connector-flink/pom.xml                 |   2 +-
 .../tubemq-connector-flume/pom.xml                 |   2 +-
 .../tubemq-connector-spark/pom.xml                 |   2 +-
 inlong-tubemq/tubemq-core/pom.xml                  |   2 +-
 inlong-tubemq/tubemq-docker/pom.xml                |   2 +-
 inlong-tubemq/tubemq-docker/tubemq-all/README.md   |   2 +-
 inlong-tubemq/tubemq-docker/tubemq-all/pom.xml     |   2 +-
 inlong-tubemq/tubemq-docker/tubemq-build/pom.xml   |   2 +-
 inlong-tubemq/tubemq-docker/tubemq-cpp/pom.xml     |   2 +-
 inlong-tubemq/tubemq-docker/tubemq-manager/pom.xml |   2 +-
 inlong-tubemq/tubemq-example/pom.xml               |   2 +-
 inlong-tubemq/tubemq-manager/pom.xml               |   2 +-
 inlong-tubemq/tubemq-server/pom.xml                |   2 +-
 pom.xml                                            |   2 +-
 154 files changed, 225 insertions(+), 1755 deletions(-)
 delete mode 100644 inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/DeleteCommand.java
 delete mode 100644 inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/LogCommand.java
 delete mode 100644 inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/UpdateCommand.java
 delete mode 100644 inlong-manager/manager-client-tools/src/test/resources/test_config.json
 delete mode 100644 inlong-sdk/sort-sdk/src/main/java/org/apache/inlong/sdk/sort/api/MultiTopicsFetcher.java
 delete mode 100644 inlong-sdk/sort-sdk/src/main/java/org/apache/inlong/sdk/sort/fetcher/kafka/KafkaMultiTopicsFetcher.java
 delete mode 100644 inlong-sdk/sort-sdk/src/main/java/org/apache/inlong/sdk/sort/fetcher/pulsar/PulsarConsumer.java
 delete mode 100644 inlong-sdk/sort-sdk/src/main/java/org/apache/inlong/sdk/sort/fetcher/pulsar/PulsarMultiTopicsFetcher.java
 delete mode 100644 inlong-tubemq/tubemq-client-twins/tubemq-client-cpp/tests/logger_test/CMakeLists.txt
 delete mode 100644 inlong-tubemq/tubemq-client-twins/tubemq-client-cpp/tests/logger_test/main.cc


[inlong] 04/09: [INLONG-5678][Manager] Provide source info for group status (#5679)

Posted by do...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch release-1.3.0
in repository https://gitbox.apache.org/repos/asf/inlong.git

commit cd807f6db6936aca32529ca27aa370bc5aa55ca2
Author: woofyzhao <49...@qq.com>
AuthorDate: Thu Aug 25 10:46:48 2022 +0800

    [INLONG-5678][Manager] Provide source info for group status (#5679)
    
    Co-authored-by: woofyzhao <wo...@tencent.com>
---
 .../manager/client/api/InlongGroupContext.java     | 24 ++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/InlongGroupContext.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/InlongGroupContext.java
index c930d4846..3ba3a0aec 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/InlongGroupContext.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/InlongGroupContext.java
@@ -28,6 +28,7 @@ import org.apache.inlong.manager.common.enums.SimpleSourceStatus;
 import org.apache.inlong.manager.client.api.inner.InnerGroupContext;
 import org.apache.inlong.manager.pojo.group.InlongGroupExtInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
+import org.apache.inlong.manager.pojo.group.InlongGroupStatusInfo;
 import org.apache.inlong.manager.pojo.source.StreamSource;
 import org.apache.inlong.manager.common.util.Preconditions;
 
@@ -57,6 +58,8 @@ public class InlongGroupContext implements Serializable {
 
     private SimpleGroupStatus status;
 
+    private InlongGroupStatusInfo statusInfo;
+
     public InlongGroupContext(InnerGroupContext groupContext) {
         InlongGroupInfo groupInfo = groupContext.getGroupInfo();
         Preconditions.checkNotNull(groupInfo, "inlong group info cannot be null");
@@ -66,6 +69,11 @@ public class InlongGroupContext implements Serializable {
         this.inlongStreamMap = groupContext.getStreamMap();
         this.status = SimpleGroupStatus.parseStatusByCode(groupInfo.getStatus());
         recheckState();
+        this.statusInfo = InlongGroupStatusInfo.builder()
+                .inlongGroupId(groupInfo.getInlongGroupId())
+                .originalStatus(groupInfo.getStatus())
+                .simpleGroupStatus(this.status)
+                .streamSources(getGroupSources()).build();
         this.extensions = Maps.newHashMap();
         List<InlongGroupExtInfo> extInfos = groupInfo.getExtList();
         if (CollectionUtils.isNotEmpty(extInfos)) {
@@ -75,6 +83,22 @@ public class InlongGroupContext implements Serializable {
         }
     }
 
+    private List<StreamSource> getGroupSources() {
+        List<StreamSource> groupSources = Lists.newArrayList();
+        this.inlongStreamMap.values().forEach(inlongStream -> {
+            Map<String, StreamSource> sources = inlongStream.getSources();
+            if (MapUtils.isNotEmpty(sources)) {
+                for (Map.Entry<String, StreamSource> entry : sources.entrySet()) {
+                    StreamSource source = entry.getValue();
+                    if (source != null) {
+                        groupSources.add(source);
+                    }
+                }
+            }
+        });
+        return groupSources;
+    }
+
     private void recheckState() {
         if (MapUtils.isEmpty(this.inlongStreamMap)) {
             return;


[inlong] 02/09: [INLONG-5667][SDK] Change groupId and streamId while wrapping message (#5668)

Posted by do...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch release-1.3.0
in repository https://gitbox.apache.org/repos/asf/inlong.git

commit 7e5400e195f7ce24254e722752267fc798d8766c
Author: xueyingzhang <86...@users.noreply.github.com>
AuthorDate: Wed Aug 24 16:48:33 2022 +0800

    [INLONG-5667][SDK] Change groupId and streamId while wrapping message (#5668)
---
 inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/pack_queue.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/pack_queue.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/pack_queue.cc
index 50b39d417..09d70282a 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/pack_queue.cc
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/pack_queue.cc
@@ -40,7 +40,7 @@ namespace dataproxy_sdk
     {
         data_ = new char[data_capacity_];
         memset(data_, 0x0, data_capacity_);
-        topic_desc_ = "inlong_group_id=" + inlong_group_id_ + "&inlong_stream_id=" + inlong_stream_id_;
+        topic_desc_ = "groupId=" + inlong_group_id_ + "&streamId=" + inlong_stream_id_;
         first_use_ = Utils::getCurrentMsTime();
         last_use_ = Utils::getCurrentMsTime();
         data_time_ = 0;


[inlong] 09/09: [INLONG-5290][Manager] Optimize the objects returned by paging queries (#5558)

Posted by do...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch release-1.3.0
in repository https://gitbox.apache.org/repos/asf/inlong.git

commit 9fe9c54b12d460744eb7418d21a4bde17a4f90b4
Author: leosanqing <st...@qq.com>
AuthorDate: Thu Aug 25 16:06:08 2022 +0800

    [INLONG-5290][Manager] Optimize the objects returned by paging queries (#5558)
---
 .../inlong/manager/client/ut/Kafka2HiveTest.java   | 14 ++--
 .../inlong/manager/client/cli/DescribeCommand.java |  4 +-
 .../inlong/manager/client/cli/ListCommand.java     |  4 +-
 inlong-manager/manager-client/pom.xml              |  4 --
 .../apache/inlong/manager/client/api/DataNode.java |  4 +-
 .../inlong/manager/client/api/InlongClient.java    |  6 +-
 .../manager/client/api/LowLevelInlongClient.java   |  4 +-
 .../org/apache/inlong/manager/client/api/User.java |  4 +-
 .../apache/inlong/manager/client/api/Workflow.java |  6 +-
 .../manager/client/api/impl/DataNodeImpl.java      |  4 +-
 .../manager/client/api/impl/InlongClientImpl.java  | 14 ++--
 .../manager/client/api/impl/InlongClusterImpl.java |  8 +--
 .../client/api/impl/LowLevelInlongClientImpl.java  |  6 +-
 .../inlong/manager/client/api/impl/UserImpl.java   |  4 +-
 .../manager/client/api/impl/WorkflowImpl.java      |  6 +-
 .../client/api/inner/client/DataNodeClient.java    |  6 +-
 .../api/inner/client/InlongClusterClient.java      | 14 ++--
 .../client/api/inner/client/InlongGroupClient.java | 16 ++---
 .../api/inner/client/InlongStreamClient.java       |  8 +--
 .../client/api/inner/client/StreamSinkClient.java  |  6 +-
 .../api/inner/client/StreamSourceClient.java       |  6 +-
 .../client/api/inner/client/UserClient.java        |  6 +-
 .../api/inner/client/WorkflowApproverClient.java   |  4 +-
 .../client/api/inner/client/WorkflowClient.java    | 11 +--
 .../manager/client/api/service/DataNodeApi.java    |  4 +-
 .../client/api/service/InlongClusterApi.java       |  6 +-
 .../manager/client/api/service/InlongGroupApi.java |  4 +-
 .../client/api/service/InlongStreamApi.java        |  6 +-
 .../manager/client/api/service/StreamSinkApi.java  |  4 +-
 .../client/api/service/StreamSourceApi.java        |  4 +-
 .../inlong/manager/client/api/service/UserApi.java |  4 +-
 .../manager/client/api/service/WorkflowApi.java    |  6 +-
 .../client/api/service/WorkflowApproverApi.java    |  4 +-
 .../client/api/service/WorkflowEventApi.java       |  4 +-
 .../client/api/inner/ClientFactoryTest.java        | 32 ++++-----
 .../api/inner/WorkflowApproverClientTest.java      |  4 +-
 .../client/api/inner/WorkflowClientTest.java       |  6 +-
 .../inlong/manager/pojo/common/PageResult.java     | 79 ++++++++++++++++++++++
 .../inlong/manager/pojo/page/PageResultTest.java   | 72 ++++++++++++++++++++
 .../service/cluster/InlongClusterService.java      |  8 +--
 .../service/cluster/InlongClusterServiceImpl.java  | 41 ++++++-----
 .../manager/service/core/ConsumptionService.java   |  4 +-
 .../manager/service/core/HeartbeatService.java     | 10 +--
 .../service/core/WorkflowApproverService.java      |  4 +-
 .../manager/service/core/WorkflowEventService.java |  4 +-
 .../service/core/impl/ConsumptionServiceImpl.java  | 16 +++--
 .../service/core/impl/HeartbeatServiceImpl.java    | 27 +++-----
 .../core/impl/WorkflowApproverServiceImpl.java     |  9 ++-
 .../core/impl/WorkflowEventServiceImpl.java        | 12 ++--
 .../manager/service/group/InlongGroupService.java  |  4 +-
 .../service/group/InlongGroupServiceImpl.java      | 12 ++--
 .../manager/service/node/DataNodeService.java      |  4 +-
 .../manager/service/node/DataNodeServiceImpl.java  | 12 ++--
 .../manager/service/sink/AbstractSinkOperator.java | 15 ++--
 .../manager/service/sink/StreamSinkOperator.java   |  4 +-
 .../manager/service/sink/StreamSinkService.java    |  4 +-
 .../service/sink/StreamSinkServiceImpl.java        | 12 ++--
 .../service/source/AbstractSourceOperator.java     | 19 ++++--
 .../service/source/StreamSourceOperator.java       |  4 +-
 .../service/source/StreamSourceService.java        |  4 +-
 .../service/source/StreamSourceServiceImpl.java    | 13 ++--
 .../service/stream/InlongStreamService.java        |  6 +-
 .../service/stream/InlongStreamServiceImpl.java    | 18 ++---
 .../inlong/manager/service/user/UserService.java   |  6 +-
 .../manager/service/user/UserServiceImpl.java      | 13 ++--
 .../manager/service/workflow/WorkflowService.java  | 14 ++--
 .../service/workflow/WorkflowServiceImpl.java      | 23 ++++---
 .../service/cluster/InlongClusterServiceTest.java  | 12 ++--
 .../service/core/impl/DataNodeServiceTest.java     |  6 +-
 .../workflow/WorkflowApproverServiceImplTest.java  |  6 +-
 .../web/controller/ConsumptionController.java      |  4 +-
 .../manager/web/controller/DataNodeController.java |  4 +-
 .../web/controller/HeartbeatController.java        | 10 +--
 .../web/controller/InlongClusterController.java    | 10 +--
 .../web/controller/InlongGroupController.java      |  6 +-
 .../web/controller/InlongStreamController.java     |  6 +-
 .../web/controller/StreamSinkController.java       |  6 +-
 .../web/controller/StreamSourceController.java     |  6 +-
 .../manager/web/controller/UserController.java     |  4 +-
 .../web/controller/WorkflowApproverController.java |  4 +-
 .../manager/web/controller/WorkflowController.java | 12 ++--
 .../web/controller/WorkflowEventController.java    |  4 +-
 .../controller/openapi/OpenClusterController.java  |  4 +-
 83 files changed, 502 insertions(+), 332 deletions(-)

diff --git a/inlong-manager/manager-client-examples/src/test/java/org/apache/inlong/manager/client/ut/Kafka2HiveTest.java b/inlong-manager/manager-client-examples/src/test/java/org/apache/inlong/manager/client/ut/Kafka2HiveTest.java
index b60b05bd7..f53524ca6 100644
--- a/inlong-manager/manager-client-examples/src/test/java/org/apache/inlong/manager/client/ut/Kafka2HiveTest.java
+++ b/inlong-manager/manager-client-examples/src/test/java/org/apache/inlong/manager/client/ut/Kafka2HiveTest.java
@@ -17,17 +17,18 @@
 
 package org.apache.inlong.manager.client.ut;
 
-import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import org.apache.inlong.manager.client.api.InlongGroup;
 import org.apache.inlong.manager.client.api.InlongGroupContext;
 import org.apache.inlong.manager.client.api.InlongStreamBuilder;
-import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.common.enums.DataFormat;
 import org.apache.inlong.manager.common.enums.FieldType;
 import org.apache.inlong.manager.common.enums.ProcessName;
 import org.apache.inlong.manager.common.enums.ProcessStatus;
 import org.apache.inlong.manager.common.enums.TaskStatus;
+import org.apache.inlong.manager.common.util.JsonUtils;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.group.pulsar.InlongPulsarInfo;
 import org.apache.inlong.manager.pojo.sink.SinkField;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
@@ -40,7 +41,6 @@ import org.apache.inlong.manager.pojo.workflow.EventLogResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessResponse;
 import org.apache.inlong.manager.pojo.workflow.TaskResponse;
 import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
-import org.apache.inlong.manager.common.util.JsonUtils;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
@@ -327,8 +327,8 @@ class Kafka2HiveTest extends BaseTest {
         streamInfo.setSourceList(kafkaSources);
         streamInfo.setSinkList(hiveSinks);
 
-        Response<PageInfo<InlongStreamInfo>> fullStreamResponsePage = Response.success(
-                new PageInfo<>(Lists.newArrayList(streamInfo))
+        Response<PageResult<InlongStreamInfo>> fullStreamResponsePage = Response.success(
+                new PageResult<>(Lists.newArrayList(streamInfo))
         );
         stubFor(
                 post(urlMatching(MANAGER_URL_PREFIX + "/stream/listAll.*"))
@@ -369,7 +369,7 @@ class Kafka2HiveTest extends BaseTest {
         stubFor(
                 get(urlMatching(MANAGER_URL_PREFIX + "/workflow/event/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>(
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>(
                                         Lists.newArrayList(eventLogView1, eventLogView2)
                                 ))))
                         )
@@ -378,7 +378,7 @@ class Kafka2HiveTest extends BaseTest {
         stubFor(
                 get(urlMatching(MANAGER_URL_PREFIX + "/stream/config/log/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>())))
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>())))
                         )
         );
     }
diff --git a/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/DescribeCommand.java b/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/DescribeCommand.java
index 630bd1660..4a5d33df7 100644
--- a/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/DescribeCommand.java
+++ b/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/DescribeCommand.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.client.cli;
 
 import com.beust.jcommander.Parameter;
 import com.beust.jcommander.Parameters;
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.inner.client.InlongGroupClient;
 import org.apache.inlong.manager.client.api.inner.client.InlongStreamClient;
 import org.apache.inlong.manager.client.api.inner.client.StreamSinkClient;
@@ -27,6 +26,7 @@ import org.apache.inlong.manager.client.api.inner.client.StreamSourceClient;
 import org.apache.inlong.manager.client.cli.pojo.GroupInfo;
 import org.apache.inlong.manager.client.cli.util.ClientUtils;
 import org.apache.inlong.manager.client.cli.util.PrintUtils;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
@@ -97,7 +97,7 @@ public class DescribeCommand extends AbstractCommand {
                 InlongGroupClient groupClient = ClientUtils.clientFactory.getGroupClient();
                 InlongGroupPageRequest pageRequest = new InlongGroupPageRequest();
                 pageRequest.setKeyword(group);
-                PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups(pageRequest);
+                PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups(pageRequest);
                 PrintUtils.print(pageInfo.getList(), GroupInfo.class);
             } catch (Exception e) {
                 System.out.println(e.getMessage());
diff --git a/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/ListCommand.java b/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/ListCommand.java
index 84a259a96..c313746c7 100644
--- a/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/ListCommand.java
+++ b/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/ListCommand.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.client.cli;
 
 import com.beust.jcommander.Parameter;
 import com.beust.jcommander.Parameters;
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.common.enums.SimpleGroupStatus;
 import org.apache.inlong.manager.client.api.inner.client.InlongGroupClient;
 import org.apache.inlong.manager.client.api.inner.client.InlongStreamClient;
@@ -31,6 +30,7 @@ import org.apache.inlong.manager.client.cli.pojo.SourceInfo;
 import org.apache.inlong.manager.client.cli.pojo.StreamInfo;
 import org.apache.inlong.manager.client.cli.util.ClientUtils;
 import org.apache.inlong.manager.client.cli.util.PrintUtils;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
@@ -113,7 +113,7 @@ public class ListCommand extends AbstractCommand {
                 ClientUtils.initClientFactory();
                 InlongGroupClient groupClient = ClientUtils.clientFactory.getGroupClient();
 
-                PageInfo<InlongGroupBriefInfo> groupPageInfo = groupClient.listGroups(pageRequest);
+                PageResult<InlongGroupBriefInfo> groupPageInfo = groupClient.listGroups(pageRequest);
                 PrintUtils.print(groupPageInfo.getList(), GroupInfo.class);
             } catch (Exception e) {
                 System.out.println(e.getMessage());
diff --git a/inlong-manager/manager-client/pom.xml b/inlong-manager/manager-client/pom.xml
index e8aacf7c1..e4c58bbbd 100644
--- a/inlong-manager/manager-client/pom.xml
+++ b/inlong-manager/manager-client/pom.xml
@@ -53,10 +53,6 @@
             <groupId>commons-collections</groupId>
             <artifactId>commons-collections</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.github.pagehelper</groupId>
-            <artifactId>pagehelper</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/DataNode.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/DataNode.java
index 54a044a85..9c5c31eb1 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/DataNode.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/DataNode.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.node.DataNodeRequest;
 import org.apache.inlong.manager.pojo.node.DataNodeResponse;
 
@@ -45,7 +45,7 @@ public interface DataNode {
      * @param request page request conditions
      * @return node list
      */
-    PageInfo<DataNodeResponse> list(DataNodeRequest request);
+    PageResult<DataNodeResponse> list(DataNodeRequest request);
 
     /**
      * Update data node.
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/InlongClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/InlongClient.java
index 801b66523..132d37c35 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/InlongClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/InlongClient.java
@@ -17,7 +17,6 @@
 
 package org.apache.inlong.manager.client.api;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.impl.InlongClientImpl;
 import org.apache.inlong.manager.pojo.cluster.BindTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
@@ -28,6 +27,7 @@ import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupStatusInfo;
 
@@ -134,7 +134,7 @@ public interface InlongClient {
      * @param request page request conditions
      * @return cluster tag list
      */
-    PageInfo<ClusterTagResponse> listTag(ClusterTagPageRequest request);
+    PageResult<ClusterTagResponse> listTag(ClusterTagPageRequest request);
 
     /**
      * Update cluster tag.
@@ -222,7 +222,7 @@ public interface InlongClient {
      * @param request page request conditions
      * @return cluster node list
      */
-    PageInfo<ClusterNodeResponse> listNode(ClusterPageRequest request);
+    PageResult<ClusterNodeResponse> listNode(ClusterPageRequest request);
 
     /**
      * Update cluster node.
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/LowLevelInlongClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/LowLevelInlongClient.java
index fb8824651..57d67ab57 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/LowLevelInlongClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/LowLevelInlongClient.java
@@ -17,9 +17,9 @@
 
 package org.apache.inlong.manager.client.api;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.impl.LowLevelInlongClientImpl;
 import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
 
@@ -56,6 +56,6 @@ public interface LowLevelInlongClient {
      * @return group info page
      * @throws Exception the exception may throw
      */
-    PageInfo<InlongGroupBriefInfo> listGroup(InlongGroupPageRequest request) throws Exception;
+    PageResult<InlongGroupBriefInfo> listGroup(InlongGroupPageRequest request) throws Exception;
 
 }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/User.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/User.java
index 21c091651..ac2d405e6 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/User.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/User.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.user.UserInfo;
 import org.apache.inlong.manager.pojo.user.UserRequest;
 
@@ -52,7 +52,7 @@ public interface User {
      * @param request request
      * @return user info list
      */
-    PageInfo<UserInfo> list(UserRequest request);
+    PageResult<UserInfo> list(UserRequest request);
 
     /**
      * Update user info
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/Workflow.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/Workflow.java
index b6edbe647..a97575107 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/Workflow.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/Workflow.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.workflow.ProcessDetailResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessRequest;
 import org.apache.inlong.manager.pojo.workflow.ProcessResponse;
@@ -87,7 +87,7 @@ public interface Workflow {
      * @param request workflow process request
      * @return process response list
      */
-    PageInfo<ProcessResponse> listProcess(ProcessRequest request);
+    PageResult<ProcessResponse> listProcess(ProcessRequest request);
 
     /**
      * Get task list
@@ -95,5 +95,5 @@ public interface Workflow {
      * @param request workflow task query request
      * @return task response list
      */
-    PageInfo<TaskResponse> listTask(TaskRequest request);
+    PageResult<TaskResponse> listTask(TaskRequest request);
 }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/DataNodeImpl.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/DataNodeImpl.java
index 1696518c5..87fa11bf6 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/DataNodeImpl.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/DataNodeImpl.java
@@ -17,13 +17,13 @@
 
 package org.apache.inlong.manager.client.api.impl;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.DataNode;
 import org.apache.inlong.manager.client.api.inner.client.ClientFactory;
 import org.apache.inlong.manager.client.api.inner.client.DataNodeClient;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.node.DataNodeRequest;
 import org.apache.inlong.manager.pojo.node.DataNodeResponse;
 
@@ -51,7 +51,7 @@ public class DataNodeImpl implements DataNode {
     }
 
     @Override
-    public PageInfo<DataNodeResponse> list(DataNodeRequest request) {
+    public PageResult<DataNodeResponse> list(DataNodeRequest request) {
         Preconditions.checkNotNull(request, "request cannot be null");
         return dataNodeClient.list(request);
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClientImpl.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClientImpl.java
index c373bfb11..eac22c0fa 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClientImpl.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClientImpl.java
@@ -17,7 +17,6 @@
 
 package org.apache.inlong.manager.client.api.impl;
 
-import com.github.pagehelper.PageInfo;
 import com.google.common.base.Splitter;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -35,6 +34,8 @@ import org.apache.inlong.manager.client.api.inner.client.ClientFactory;
 import org.apache.inlong.manager.client.api.inner.client.InlongClusterClient;
 import org.apache.inlong.manager.client.api.inner.client.InlongGroupClient;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
+import org.apache.inlong.manager.common.util.HttpUtils;
+import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.pojo.cluster.BindTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.ClusterNodeRequest;
@@ -44,13 +45,12 @@ import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
 import org.apache.inlong.manager.pojo.group.InlongGroupStatusInfo;
 import org.apache.inlong.manager.pojo.source.StreamSource;
-import org.apache.inlong.manager.common.util.HttpUtils;
-import org.apache.inlong.manager.common.util.Preconditions;
 
 import java.util.List;
 import java.util.Map;
@@ -108,7 +108,7 @@ public class InlongClientImpl implements InlongClient {
 
     @Override
     public List<InlongGroup> listGroup(String expr, int status, int pageNum, int pageSize) {
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups(expr, status, pageNum,
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups(expr, status, pageNum,
                 pageSize);
         if (CollectionUtils.isEmpty(pageInfo.getList())) {
             return Lists.newArrayList();
@@ -127,7 +127,7 @@ public class InlongClientImpl implements InlongClient {
         request.setGroupIdList(groupIds);
         request.setListSources(true);
 
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups(request);
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups(request);
         List<InlongGroupBriefInfo> briefInfos = pageInfo.getList();
         Map<String, InlongGroupStatusInfo> groupStatusMap = Maps.newHashMap();
         if (CollectionUtils.isNotEmpty(briefInfos)) {
@@ -170,7 +170,7 @@ public class InlongClientImpl implements InlongClient {
     }
 
     @Override
-    public PageInfo<ClusterTagResponse> listTag(ClusterTagPageRequest request) {
+    public PageResult<ClusterTagResponse> listTag(ClusterTagPageRequest request) {
         return clusterClient.listTag(request);
     }
 
@@ -238,7 +238,7 @@ public class InlongClientImpl implements InlongClient {
     }
 
     @Override
-    public PageInfo<ClusterNodeResponse> listNode(ClusterPageRequest request) {
+    public PageResult<ClusterNodeResponse> listNode(ClusterPageRequest request) {
         Preconditions.checkNotNull(request.getParentId(), "Cluster id cannot be empty");
         return clusterClient.listNode(request);
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClusterImpl.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClusterImpl.java
index 4a11ace32..4f6748f76 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClusterImpl.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClusterImpl.java
@@ -17,7 +17,6 @@
 
 package org.apache.inlong.manager.client.api.impl;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.InlongCluster;
 import org.apache.inlong.manager.client.api.inner.client.ClientFactory;
 import org.apache.inlong.manager.client.api.inner.client.InlongClusterClient;
@@ -26,6 +25,7 @@ import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.ClusterNodeResponse;
 import org.apache.inlong.manager.pojo.cluster.ClusterPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
+import org.apache.inlong.manager.pojo.common.PageResult;
 
 import java.util.List;
 
@@ -45,7 +45,7 @@ public class InlongClusterImpl implements InlongCluster {
         ClusterPageRequest request = new ClusterPageRequest();
         request.setName(clusterName);
         request.setType(clusterType);
-        PageInfo<ClusterNodeResponse> clusterNodePage = clusterClient.listNode(request);
+        PageResult<ClusterNodeResponse> clusterNodePage = clusterClient.listNode(request);
         return clusterNodePage.getList();
     }
 
@@ -55,7 +55,7 @@ public class InlongClusterImpl implements InlongCluster {
         request.setName(clusterName);
         request.setType(clusterType);
         request.setClusterTagList(clusterTags);
-        PageInfo<ClusterNodeResponse> clusterNodePage = clusterClient.listNode(request);
+        PageResult<ClusterNodeResponse> clusterNodePage = clusterClient.listNode(request);
         return clusterNodePage.getList();
     }
 
@@ -65,7 +65,7 @@ public class InlongClusterImpl implements InlongCluster {
         request.setName(clusterName);
         request.setType(clusterType);
         request.setClusterTag(clusterTag);
-        PageInfo<ClusterNodeResponse> clusterNodePage = clusterClient.listNode(request);
+        PageResult<ClusterNodeResponse> clusterNodePage = clusterClient.listNode(request);
         return clusterNodePage.getList();
     }
 
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/LowLevelInlongClientImpl.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/LowLevelInlongClientImpl.java
index c34fe8b74..d006ed00f 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/LowLevelInlongClientImpl.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/LowLevelInlongClientImpl.java
@@ -17,7 +17,6 @@
 
 package org.apache.inlong.manager.client.api.impl;
 
-import com.github.pagehelper.PageInfo;
 import com.google.common.base.Splitter;
 import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
@@ -27,10 +26,11 @@ import org.apache.inlong.manager.client.api.LowLevelInlongClient;
 import org.apache.inlong.manager.client.api.inner.client.InlongClusterClient;
 import org.apache.inlong.manager.client.api.inner.client.InlongGroupClient;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
+import org.apache.inlong.manager.common.util.HttpUtils;
 import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
-import org.apache.inlong.manager.common.util.HttpUtils;
 
 import java.util.Map;
 
@@ -79,7 +79,7 @@ public class LowLevelInlongClientImpl implements LowLevelInlongClient {
     }
 
     @Override
-    public PageInfo<InlongGroupBriefInfo> listGroup(InlongGroupPageRequest request) {
+    public PageResult<InlongGroupBriefInfo> listGroup(InlongGroupPageRequest request) {
         InlongGroupClient groupClient = ClientUtils.getClientFactory(configuration).getGroupClient();
         return groupClient.listGroups(request);
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/UserImpl.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/UserImpl.java
index 712854324..ef86ff2a2 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/UserImpl.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/UserImpl.java
@@ -17,13 +17,13 @@
 
 package org.apache.inlong.manager.client.api.impl;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.User;
 import org.apache.inlong.manager.client.api.inner.client.ClientFactory;
 import org.apache.inlong.manager.client.api.inner.client.UserClient;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.user.UserInfo;
 import org.apache.inlong.manager.pojo.user.UserRequest;
 
@@ -55,7 +55,7 @@ public class UserImpl implements User {
     }
 
     @Override
-    public PageInfo<UserInfo> list(UserRequest request) {
+    public PageResult<UserInfo> list(UserRequest request) {
         Preconditions.checkNotNull(request, "request cannot be null");
         return userClient.list(request);
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/WorkflowImpl.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/WorkflowImpl.java
index aea0f9ee6..f86cc028b 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/WorkflowImpl.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/WorkflowImpl.java
@@ -17,13 +17,13 @@
 
 package org.apache.inlong.manager.client.api.impl;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.Workflow;
 import org.apache.inlong.manager.client.api.inner.client.ClientFactory;
 import org.apache.inlong.manager.client.api.inner.client.WorkflowClient;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.workflow.ProcessDetailResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessRequest;
 import org.apache.inlong.manager.pojo.workflow.ProcessResponse;
@@ -79,13 +79,13 @@ public class WorkflowImpl implements Workflow {
     }
 
     @Override
-    public PageInfo<ProcessResponse> listProcess(ProcessRequest request) {
+    public PageResult<ProcessResponse> listProcess(ProcessRequest request) {
         Preconditions.checkNotNull(request, "process request cannot be null");
         return workflowClient.listProcess(request);
     }
 
     @Override
-    public PageInfo<TaskResponse> listTask(TaskRequest request) {
+    public PageResult<TaskResponse> listTask(TaskRequest request) {
         Preconditions.checkNotNull(request, "task request cannot be null");
         return workflowClient.listTask(request);
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/DataNodeClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/DataNodeClient.java
index 463be9fed..b2248d31c 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/DataNodeClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/DataNodeClient.java
@@ -17,11 +17,11 @@
 
 package org.apache.inlong.manager.client.api.inner.client;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.service.DataNodeApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.node.DataNodeRequest;
 import org.apache.inlong.manager.pojo.node.DataNodeResponse;
@@ -71,9 +71,9 @@ public class DataNodeClient {
      * @param request page request conditions
      * @return node list
      */
-    public PageInfo<DataNodeResponse> list(DataNodeRequest request) {
+    public PageResult<DataNodeResponse> list(DataNodeRequest request) {
         Preconditions.checkNotNull(request, "request cannot be null");
-        Response<PageInfo<DataNodeResponse>> response = ClientUtils.executeHttpCall(dataNodeApi.list(request));
+        Response<PageResult<DataNodeResponse>> response = ClientUtils.executeHttpCall(dataNodeApi.list(request));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongClusterClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongClusterClient.java
index b855ae426..b0cf37001 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongClusterClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongClusterClient.java
@@ -17,11 +17,10 @@
 
 package org.apache.inlong.manager.client.api.inner.client;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.service.InlongClusterApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
-import org.apache.inlong.manager.pojo.common.Response;
+import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.pojo.cluster.BindTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.ClusterNodeRequest;
@@ -31,7 +30,8 @@ import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
-import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.common.Response;
 
 /**
  * Client for {@link InlongClusterApi}.
@@ -75,8 +75,8 @@ public class InlongClusterClient {
      * @param request page request conditions
      * @return cluster tag list
      */
-    public PageInfo<ClusterTagResponse> listTag(ClusterTagPageRequest request) {
-        Response<PageInfo<ClusterTagResponse>> response = ClientUtils.executeHttpCall(
+    public PageResult<ClusterTagResponse> listTag(ClusterTagPageRequest request) {
+        Response<PageResult<ClusterTagResponse>> response = ClientUtils.executeHttpCall(
                 inlongClusterApi.listTag(request));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
@@ -215,8 +215,8 @@ public class InlongClusterClient {
      * @param request page request conditions
      * @return cluster node list
      */
-    public PageInfo<ClusterNodeResponse> listNode(ClusterPageRequest request) {
-        Response<PageInfo<ClusterNodeResponse>> response = ClientUtils.executeHttpCall(
+    public PageResult<ClusterNodeResponse> listNode(ClusterPageRequest request) {
+        Response<PageResult<ClusterNodeResponse>> response = ClientUtils.executeHttpCall(
                 inlongClusterApi.listNode(request));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongGroupClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongGroupClient.java
index 148e9b8cc..aabafaf64 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongGroupClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongGroupClient.java
@@ -17,24 +17,24 @@
 
 package org.apache.inlong.manager.client.api.inner.client;
 
-import com.github.pagehelper.PageInfo;
 import lombok.SneakyThrows;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.common.enums.SimpleGroupStatus;
 import org.apache.inlong.manager.client.api.service.InlongGroupApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
+import org.apache.inlong.manager.common.util.JsonUtils;
+import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
-import org.apache.inlong.manager.pojo.group.InlongGroupCountResponse;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
+import org.apache.inlong.manager.pojo.group.InlongGroupCountResponse;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
 import org.apache.inlong.manager.pojo.group.InlongGroupRequest;
 import org.apache.inlong.manager.pojo.group.InlongGroupResetRequest;
 import org.apache.inlong.manager.pojo.group.InlongGroupTopicInfo;
 import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
-import org.apache.inlong.manager.common.util.JsonUtils;
-import org.apache.inlong.manager.common.util.Preconditions;
 import org.springframework.boot.configurationprocessor.json.JSONObject;
 import retrofit2.Call;
 
@@ -105,7 +105,7 @@ public class InlongGroupClient {
     /**
      * Get inlong group list.
      */
-    public PageInfo<InlongGroupBriefInfo> listGroups(String keyword, int status, int pageNum, int pageSize) {
+    public PageResult<InlongGroupBriefInfo> listGroups(String keyword, int status, int pageNum, int pageSize) {
         InlongGroupPageRequest request = InlongGroupPageRequest.builder()
                 .keyword(keyword)
                 .status(status)
@@ -113,7 +113,7 @@ public class InlongGroupClient {
         request.setPageNum(pageNum <= 0 ? 1 : pageNum);
         request.setPageSize(pageSize);
 
-        Response<PageInfo<InlongGroupBriefInfo>> pageInfoResponse = ClientUtils.executeHttpCall(
+        Response<PageResult<InlongGroupBriefInfo>> pageInfoResponse = ClientUtils.executeHttpCall(
                 inlongGroupApi.listGroups(request));
         if (pageInfoResponse.isSuccess()) {
             return pageInfoResponse.getData();
@@ -131,8 +131,8 @@ public class InlongGroupClient {
      * @param pageRequest page request
      * @return Response encapsulate of inlong group list
      */
-    public PageInfo<InlongGroupBriefInfo> listGroups(InlongGroupPageRequest pageRequest) {
-        Response<PageInfo<InlongGroupBriefInfo>> response = ClientUtils.executeHttpCall(
+    public PageResult<InlongGroupBriefInfo> listGroups(InlongGroupPageRequest pageRequest) {
+        Response<PageResult<InlongGroupBriefInfo>> response = ClientUtils.executeHttpCall(
                 inlongGroupApi.listGroups(pageRequest));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongStreamClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongStreamClient.java
index 924296d1d..21115a0e9 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongStreamClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongStreamClient.java
@@ -17,12 +17,12 @@
 
 package org.apache.inlong.manager.client.api.inner.client;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.service.InlongStreamApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.stream.InlongStreamBriefInfo;
 import org.apache.inlong.manager.pojo.stream.InlongStreamInfo;
@@ -118,8 +118,8 @@ public class InlongStreamClient {
      * @param request query request
      * @return inlong stream brief list
      */
-    public PageInfo<InlongStreamBriefInfo> listByCondition(InlongStreamPageRequest request) {
-        Response<PageInfo<InlongStreamBriefInfo>> response = ClientUtils.executeHttpCall(
+    public PageResult<InlongStreamBriefInfo> listByCondition(InlongStreamPageRequest request) {
+        Response<PageResult<InlongStreamBriefInfo>> response = ClientUtils.executeHttpCall(
                 inlongStreamApi.listByCondition(request));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
@@ -132,7 +132,7 @@ public class InlongStreamClient {
         InlongStreamPageRequest pageRequest = new InlongStreamPageRequest();
         pageRequest.setInlongGroupId(inlongGroupId);
 
-        Response<PageInfo<InlongStreamInfo>> response = ClientUtils.executeHttpCall(
+        Response<PageResult<InlongStreamInfo>> response = ClientUtils.executeHttpCall(
                 inlongStreamApi.listStream(pageRequest));
         ClientUtils.assertRespSuccess(response);
         return response.getData().getList();
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSinkClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSinkClient.java
index bd55c2a1e..c902c2e96 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSinkClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSinkClient.java
@@ -17,15 +17,15 @@
 
 package org.apache.inlong.manager.client.api.inner.client;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.service.StreamSinkApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
+import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.sink.SinkRequest;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
-import org.apache.inlong.manager.common.util.Preconditions;
 
 import java.util.List;
 
@@ -67,7 +67,7 @@ public class StreamSinkClient {
      * List stream sinks by the specified sink type.
      */
     public List<StreamSink> listSinks(String groupId, String streamId, String sinkType) {
-        Response<PageInfo<StreamSink>> response = ClientUtils.executeHttpCall(
+        Response<PageResult<StreamSink>> response = ClientUtils.executeHttpCall(
                 streamSinkApi.listSinks(groupId, streamId, sinkType));
         ClientUtils.assertRespSuccess(response);
         return response.getData().getList();
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSourceClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSourceClient.java
index 0bc170db4..f1eb4a87d 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSourceClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSourceClient.java
@@ -17,15 +17,15 @@
 
 package org.apache.inlong.manager.client.api.inner.client;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.service.StreamSourceApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
+import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.source.SourceRequest;
 import org.apache.inlong.manager.pojo.source.StreamSource;
-import org.apache.inlong.manager.common.util.Preconditions;
 
 import java.util.List;
 
@@ -60,7 +60,7 @@ public class StreamSourceClient {
      * List stream sources by the specified source type.
      */
     public List<StreamSource> listSources(String groupId, String streamId, String sourceType) {
-        Response<PageInfo<StreamSource>> response = ClientUtils.executeHttpCall(
+        Response<PageResult<StreamSource>> response = ClientUtils.executeHttpCall(
                 streamSourceApi.listSources(groupId, streamId, sourceType));
         ClientUtils.assertRespSuccess(response);
         return response.getData().getList();
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/UserClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/UserClient.java
index 4e177802c..374ccdbc2 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/UserClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/UserClient.java
@@ -17,11 +17,11 @@
 
 package org.apache.inlong.manager.client.api.inner.client;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.service.UserApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.user.UserInfo;
 import org.apache.inlong.manager.pojo.user.UserRequest;
@@ -83,10 +83,10 @@ public class UserClient {
      * @param request request
      * @return user info list
      */
-    public PageInfo<UserInfo> list(UserRequest request) {
+    public PageResult<UserInfo> list(UserRequest request) {
         Preconditions.checkNotNull(request, "request cannot be null");
 
-        Response<PageInfo<UserInfo>> response = ClientUtils.executeHttpCall(userApi.list(request));
+        Response<PageResult<UserInfo>> response = ClientUtils.executeHttpCall(userApi.list(request));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowApproverClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowApproverClient.java
index 2976f488a..7c8ac4505 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowApproverClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowApproverClient.java
@@ -18,13 +18,13 @@
 package org.apache.inlong.manager.client.api.inner.client;
 
 import com.fasterxml.jackson.core.type.TypeReference;
-import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.service.WorkflowApproverApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.JsonUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.ApproverPageRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverRequest;
@@ -90,7 +90,7 @@ public class WorkflowApproverClient {
         Map<String, Object> requestMap = JsonUtils.OBJECT_MAPPER.convertValue(request,
                 new TypeReference<Map<String, Object>>() {
                 });
-        Response<PageInfo<ApproverResponse>> response = ClientUtils.executeHttpCall(
+        Response<PageResult<ApproverResponse>> response = ClientUtils.executeHttpCall(
                 workflowApproverApi.listByCondition(requestMap));
         ClientUtils.assertRespSuccess(response);
 
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowClient.java
index fed7e97a7..aa3bfa462 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowClient.java
@@ -20,7 +20,6 @@ package org.apache.inlong.manager.client.api.inner.client;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
@@ -28,6 +27,7 @@ import org.apache.inlong.manager.client.api.service.WorkflowApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.JsonUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.ProcessDetailResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessRequest;
@@ -180,13 +180,14 @@ public class WorkflowClient {
      * @param request workflow process request
      * @return process response list
      */
-    public PageInfo<ProcessResponse> listProcess(ProcessRequest request) {
+    public PageResult<ProcessResponse> listProcess(ProcessRequest request) {
         Preconditions.checkNotNull(request, "process request cannot be null");
 
         Map<String, Object> requestMap = JsonUtils.OBJECT_MAPPER.convertValue(request,
                 new TypeReference<Map<String, Object>>() {
                 });
-        Response<PageInfo<ProcessResponse>> response = ClientUtils.executeHttpCall(workflowApi.listProcess(requestMap));
+        Response<PageResult<ProcessResponse>> response = ClientUtils.executeHttpCall(
+                workflowApi.listProcess(requestMap));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
     }
@@ -197,13 +198,13 @@ public class WorkflowClient {
      * @param request workflow task query request
      * @return task response list
      */
-    public PageInfo<TaskResponse> listTask(TaskRequest request) {
+    public PageResult<TaskResponse> listTask(TaskRequest request) {
         Preconditions.checkNotNull(request, "task request cannot be null");
 
         Map<String, Object> requestMap = JsonUtils.OBJECT_MAPPER.convertValue(request,
                 new TypeReference<Map<String, Object>>() {
                 });
-        Response<PageInfo<TaskResponse>> response = ClientUtils.executeHttpCall(workflowApi.listTask(requestMap));
+        Response<PageResult<TaskResponse>> response = ClientUtils.executeHttpCall(workflowApi.listTask(requestMap));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/DataNodeApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/DataNodeApi.java
index 0debf462c..69e13dead 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/DataNodeApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/DataNodeApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.node.DataNodeRequest;
 import org.apache.inlong.manager.pojo.node.DataNodeResponse;
@@ -37,7 +37,7 @@ public interface DataNodeApi {
     Call<Response<DataNodeResponse>> get(@Path("id") Integer id);
 
     @POST("node/list")
-    Call<Response<PageInfo<DataNodeResponse>>> list(@Body DataNodeRequest request);
+    Call<Response<PageResult<DataNodeResponse>>> list(@Body DataNodeRequest request);
 
     @POST("node/update")
     Call<Response<Boolean>> update(@Body DataNodeRequest request);
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongClusterApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongClusterApi.java
index 857337405..127802cea 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongClusterApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongClusterApi.java
@@ -17,7 +17,6 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.pojo.cluster.BindTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.ClusterNodeRequest;
@@ -27,6 +26,7 @@ import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import retrofit2.Call;
 import retrofit2.http.Body;
@@ -44,7 +44,7 @@ public interface InlongClusterApi {
     Call<Response<ClusterTagResponse>> getTag(@Path("id") Integer id);
 
     @POST("cluster/tag/list")
-    Call<Response<PageInfo<ClusterTagResponse>>> listTag(@Body ClusterTagPageRequest request);
+    Call<Response<PageResult<ClusterTagResponse>>> listTag(@Body ClusterTagPageRequest request);
 
     @POST("cluster/tag/update")
     Call<Response<Boolean>> updateTag(@Body ClusterTagRequest request);
@@ -77,7 +77,7 @@ public interface InlongClusterApi {
     Call<Response<ClusterNodeResponse>> getNode(@Path("id") Integer id);
 
     @POST("cluster/node/list")
-    Call<Response<PageInfo<ClusterNodeResponse>>> listNode(@Body ClusterPageRequest request);
+    Call<Response<PageResult<ClusterNodeResponse>>> listNode(@Body ClusterPageRequest request);
 
     @POST("cluster/node/update")
     Call<Response<Boolean>> updateNode(@Body ClusterNodeRequest request);
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongGroupApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongGroupApi.java
index 39341f8fd..be83fa6e0 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongGroupApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongGroupApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
@@ -40,7 +40,7 @@ public interface InlongGroupApi {
     Call<Response<Object>> getGroupInfo(@Path("id") String id);
 
     @POST("group/list")
-    Call<Response<PageInfo<InlongGroupBriefInfo>>> listGroups(@Body InlongGroupPageRequest request);
+    Call<Response<PageResult<InlongGroupBriefInfo>>> listGroups(@Body InlongGroupPageRequest request);
 
     @POST("group/save")
     Call<Response<String>> createGroup(@Body InlongGroupRequest request);
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongStreamApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongStreamApi.java
index 679dd3aae..717609591 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongStreamApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongStreamApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.stream.InlongStreamBriefInfo;
 import org.apache.inlong.manager.pojo.stream.InlongStreamInfo;
@@ -46,10 +46,10 @@ public interface InlongStreamApi {
             @Query("streamId") String streamId);
 
     @POST("stream/list")
-    Call<Response<PageInfo<InlongStreamBriefInfo>>> listByCondition(@Body InlongStreamPageRequest request);
+    Call<Response<PageResult<InlongStreamBriefInfo>>> listByCondition(@Body InlongStreamPageRequest request);
 
     @POST("stream/listAll")
-    Call<Response<PageInfo<InlongStreamInfo>>> listStream(@Body InlongStreamPageRequest request);
+    Call<Response<PageResult<InlongStreamInfo>>> listStream(@Body InlongStreamPageRequest request);
 
     @POST("stream/startProcess/{groupId}/{streamId}")
     Call<Response<Boolean>> startProcess(@Path("groupId") String groupId, @Path("streamId") String streamId);
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSinkApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSinkApi.java
index 4d66087f2..9324c85f1 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSinkApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSinkApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.sink.SinkRequest;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
@@ -41,7 +41,7 @@ public interface StreamSinkApi {
     Call<Response<Boolean>> deleteSink(@Path("id") Integer id);
 
     @GET("sink/list")
-    Call<Response<PageInfo<StreamSink>>> listSinks(@Query("inlongGroupId") String groupId,
+    Call<Response<PageResult<StreamSink>>> listSinks(@Query("inlongGroupId") String groupId,
             @Query("inlongStreamId") String streamId, @Query("sinkType") String sinkType);
 
     @GET("sink/get/{id}")
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSourceApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSourceApi.java
index d43aaf67d..5c0fe8c15 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSourceApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSourceApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.source.SourceRequest;
 import org.apache.inlong.manager.pojo.source.StreamSource;
@@ -38,7 +38,7 @@ public interface StreamSourceApi {
     Call<Response<Boolean>> updateSource(@Body SourceRequest request);
 
     @GET("source/list")
-    Call<Response<PageInfo<StreamSource>>> listSources(@Query("inlongGroupId") String groupId,
+    Call<Response<PageResult<StreamSource>>> listSources(@Query("inlongGroupId") String groupId,
             @Query("inlongStreamId") String streamId, @Query("sourceType") String sourceType);
 
     @DELETE("source/delete/{id}")
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/UserApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/UserApi.java
index 0f91ab3cc..3221136db 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/UserApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/UserApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.user.UserInfo;
 import org.apache.inlong.manager.pojo.user.UserRequest;
@@ -41,7 +41,7 @@ public interface UserApi {
     Call<Response<UserInfo>> getById(@Path("id") Integer id);
 
     @POST("user/listAll")
-    Call<Response<PageInfo<UserInfo>>> list(@Body UserRequest request);
+    Call<Response<PageResult<UserInfo>>> list(@Body UserRequest request);
 
     @POST("user/update")
     Call<Response<Integer>> update(@Body UserRequest userInfo);
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApi.java
index d11e2144c..89c2ccc3c 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.ProcessDetailResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessResponse;
@@ -60,9 +60,9 @@ public interface WorkflowApi {
     Call<Response<ProcessDetailResponse>> detail(@Path("processId") Integer processId, @Query("taskId") Integer taskId);
 
     @GET("workflow/listProcess")
-    Call<Response<PageInfo<ProcessResponse>>> listProcess(@Query("query") Map<String, Object> query);
+    Call<Response<PageResult<ProcessResponse>>> listProcess(@Query("query") Map<String, Object> query);
 
     @GET("workflow/listTask")
-    Call<Response<PageInfo<TaskResponse>>> listTask(@Query("query") Map<String, Object> query);
+    Call<Response<PageResult<TaskResponse>>> listTask(@Query("query") Map<String, Object> query);
 
 }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApproverApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApproverApi.java
index 8573b6a85..3dcfb04d1 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApproverApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApproverApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.ApproverRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverResponse;
@@ -39,7 +39,7 @@ public interface WorkflowApproverApi {
     Call<Response<ApproverResponse>> get(@Path("id") Integer id);
 
     @GET("workflow/approver/list")
-    Call<Response<PageInfo<ApproverResponse>>> listByCondition(@Query("map") Map<String, Object> map);
+    Call<Response<PageResult<ApproverResponse>>> listByCondition(@Query("map") Map<String, Object> map);
 
     @POST("workflow/approver/update")
     Call<Response<Integer>> update(@Body ApproverRequest request);
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowEventApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowEventApi.java
index abecf1ebf..209f28102 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowEventApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowEventApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.EventLogResponse;
 import retrofit2.Call;
@@ -27,6 +27,6 @@ import retrofit2.http.Query;
 public interface WorkflowEventApi {
 
     @GET("workflow/event/list")
-    Call<Response<PageInfo<EventLogResponse>>> getInlongGroupError(@Query("inlongGroupId") String groupId,
+    Call<Response<PageResult<EventLogResponse>>> getInlongGroupError(@Query("inlongGroupId") String groupId,
             @Query("status") Integer status);
 }
diff --git a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/ClientFactoryTest.java b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/ClientFactoryTest.java
index 54f8158ae..1c88b943f 100644
--- a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/ClientFactoryTest.java
+++ b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/ClientFactoryTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.inlong.manager.client.api.inner;
 
-import com.github.pagehelper.PageInfo;
 import com.github.tomakehurst.wiremock.WireMockServer;
 import com.github.tomakehurst.wiremock.client.WireMock;
 import com.google.common.collect.Lists;
@@ -54,6 +53,7 @@ import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
 import org.apache.inlong.manager.pojo.cluster.pulsar.PulsarClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.pulsar.PulsarClusterRequest;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupCountResponse;
@@ -218,11 +218,11 @@ class ClientFactoryTest {
         stubFor(
                 post(urlMatching("/inlong/manager/api/group/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>(groupBriefInfos))))
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>(groupBriefInfos))))
                         )
         );
 
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
         Assertions.assertEquals(JsonUtils.toJsonString(groupBriefInfos),
                 JsonUtils.toJsonString(pageInfo.getList()));
     }
@@ -253,11 +253,11 @@ class ClientFactoryTest {
         stubFor(
                 post(urlMatching("/inlong/manager/api/group/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>(groupBriefInfos))))
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>(groupBriefInfos))))
                         )
         );
 
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
         Assertions.assertEquals(JsonUtils.toJsonString(groupBriefInfos),
                 JsonUtils.toJsonString(pageInfo.getList()));
     }
@@ -291,11 +291,11 @@ class ClientFactoryTest {
         stubFor(
                 post(urlMatching("/inlong/manager/api/group/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>(groupBriefInfos))))
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>(groupBriefInfos))))
                         )
         );
 
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
         Assertions.assertEquals(JsonUtils.toJsonString(groupBriefInfos),
                 JsonUtils.toJsonString(pageInfo.getList()));
     }
@@ -331,11 +331,11 @@ class ClientFactoryTest {
         stubFor(
                 post(urlMatching("/inlong/manager/api/group/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>(groupBriefInfos))))
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>(groupBriefInfos))))
                         )
         );
 
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
         Assertions.assertEquals(JsonUtils.toJsonString(groupBriefInfos),
                 JsonUtils.toJsonString(pageInfo.getList()));
     }
@@ -402,12 +402,12 @@ class ClientFactoryTest {
         stubFor(
                 post(urlMatching("/inlong/manager/api/group/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>(groupBriefInfos)))
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>(groupBriefInfos)))
                                 )
                         )
         );
 
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
         Assertions.assertEquals(JsonUtils.toJsonString(groupBriefInfos),
                 JsonUtils.toJsonString(pageInfo.getList()));
     }
@@ -423,7 +423,7 @@ class ClientFactoryTest {
                         )
         );
 
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
         Assertions.assertNull(pageInfo);
     }
 
@@ -665,7 +665,7 @@ class ClientFactoryTest {
                 post(urlMatching("/inlong/manager/api/stream/listAll.*"))
                         .willReturn(
                                 okJson(JsonUtils.toJsonString(
-                                        Response.success(new PageInfo<>(Lists.newArrayList(streamInfo))))
+                                        Response.success(new PageResult<>(Lists.newArrayList(streamInfo))))
                                 )
                         )
         );
@@ -724,7 +724,7 @@ class ClientFactoryTest {
                 get(urlMatching("/inlong/manager/api/sink/list.*"))
                         .willReturn(
                                 okJson(JsonUtils.toJsonString(
-                                        Response.success(new PageInfo<>(Lists.newArrayList(sinkList))))
+                                        Response.success(new PageResult<>(Lists.newArrayList(sinkList))))
                                 )
                         )
         );
@@ -1008,13 +1008,13 @@ class ClientFactoryTest {
         stubFor(
                 post(urlMatching("/inlong/manager/api/node/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>(nodeResponses))))
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>(nodeResponses))))
                         )
         );
 
         HiveDataNodeRequest request = new HiveDataNodeRequest();
         request.setName("test_hive_node");
-        PageInfo<DataNodeResponse> nodePageInfo = dataNodeClient.list(request);
+        PageResult<DataNodeResponse> nodePageInfo = dataNodeClient.list(request);
         Assertions.assertEquals(JsonUtils.toJsonString(nodePageInfo.getList()), JsonUtils.toJsonString(nodeResponses));
     }
 
diff --git a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowApproverClientTest.java b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowApproverClientTest.java
index 5cbd3ba6b..d32e22649 100644
--- a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowApproverClientTest.java
+++ b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowApproverClientTest.java
@@ -17,10 +17,10 @@
 
 package org.apache.inlong.manager.client.api.inner;
 
-import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import org.apache.inlong.manager.client.api.inner.client.WorkflowApproverClient;
 import org.apache.inlong.manager.common.util.JsonUtils;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.ApproverPageRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverRequest;
@@ -71,7 +71,7 @@ class WorkflowApproverClientTest extends ClientFactoryTest {
                         .willReturn(
                                 okJson(JsonUtils.toJsonString(
                                         Response.success(
-                                                PageInfo.of(
+                                                new PageResult<>(
                                                         Lists.newArrayList(
                                                                 ApproverResponse.builder()
                                                                         .taskName("task1")
diff --git a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowClientTest.java b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowClientTest.java
index ae4686a26..98fe7b40a 100644
--- a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowClientTest.java
+++ b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowClientTest.java
@@ -17,11 +17,11 @@
 
 package org.apache.inlong.manager.client.api.inner;
 
-import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import org.apache.inlong.manager.client.api.inner.client.WorkflowClient;
 import org.apache.inlong.manager.common.enums.ProcessName;
 import org.apache.inlong.manager.common.util.JsonUtils;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.group.pulsar.InlongPulsarInfo;
 import org.apache.inlong.manager.pojo.workflow.ProcessRequest;
@@ -86,14 +86,14 @@ public class WorkflowClientTest extends ClientFactoryTest {
                 get(urlMatching("/inlong/manager/api/workflow/listProcess.*"))
                         .willReturn(
                                 okJson(JsonUtils.toJsonString(
-                                        Response.success(new PageInfo<>(responses)))
+                                        Response.success(new PageResult<>(responses)))
                                 )
                         )
         );
 
         ProcessRequest request = new ProcessRequest();
         request.setId(1);
-        PageInfo<ProcessResponse> pageInfo = workflowClient.listProcess(request);
+        PageResult<ProcessResponse> pageInfo = workflowClient.listProcess(request);
         Assertions.assertEquals(JsonUtils.toJsonString(pageInfo.getList()), JsonUtils.toJsonString(responses));
     }
 }
diff --git a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageResult.java b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageResult.java
new file mode 100644
index 000000000..9d7bd4c0a
--- /dev/null
+++ b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageResult.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.inlong.manager.pojo.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+@ApiModel("Paginated query results")
+public final class PageResult<T> implements Serializable {
+
+    @ApiModelProperty(value = "data record", required = true)
+    private List<T> list;
+
+    @ApiModelProperty(value = "The total number of items matching the filter criteria", required = true)
+    private Long total;
+
+    @ApiModelProperty(value = "pageSize", required = true)
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "pageNum", required = true)
+    private Integer pageNum;
+
+    public PageResult() {
+    }
+
+    public PageResult(List<T> list, Long total) {
+        this.list = list;
+        this.total = total;
+    }
+
+    public PageResult(List<T> list, Long total, Integer pageNum, Integer pageSize) {
+        this.list = list;
+        this.total = total;
+        this.pageNum = pageNum;
+        this.pageSize = pageSize;
+    }
+
+    public PageResult(Long total) {
+        this.list = new ArrayList<>();
+        this.total = total;
+    }
+
+    public PageResult(List<T> list) {
+        this.list = list;
+        this.total = (long) list.size();
+    }
+
+    public static <T> PageResult<T> empty() {
+        return new PageResult<>(0L);
+    }
+
+    public static <T> PageResult<T> empty(Long total) {
+        return new PageResult<>(total);
+    }
+
+}
\ No newline at end of file
diff --git a/inlong-manager/manager-pojo/src/test/java/org/apache/inlong/manager/pojo/page/PageResultTest.java b/inlong-manager/manager-pojo/src/test/java/org/apache/inlong/manager/pojo/page/PageResultTest.java
new file mode 100644
index 000000000..0266c22cd
--- /dev/null
+++ b/inlong-manager/manager-pojo/src/test/java/org/apache/inlong/manager/pojo/page/PageResultTest.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.inlong.manager.pojo.page;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import org.apache.inlong.manager.common.util.JsonUtils;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
+import org.apache.inlong.manager.pojo.group.none.InlongNoneMqInfo;
+import org.apache.inlong.manager.pojo.group.pulsar.InlongPulsarInfo;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.util.List;
+
+/**
+ * Tests for the {@link org.apache.inlong.manager.pojo.common.PageResult}.
+ */
+
+class PageResultTest {
+
+    @Test
+    void testDeserializePageInfoFromWeb() {
+
+        String pageInfoJson = "{\"total\":30,\"list\":[{\"id\":null,\"inlongGroupId\":\"22\",\"name\":null,"
+                + "\"description\":null,\"middlewareType\":null,\"mqType\":\"NONE\",\"mqResource\":null,"
+                + "\"enableZookeeper\":0,\"enableCreateResource\":null,\"lightweight\":null,"
+                + "\"inlongClusterTag\":null,\"dailyRecords\":null,\"dailyStorage\":null,\"peakRecords\":null,"
+                + "\"maxLength\":null,\"inCharges\":null,\"followers\":null,\"status\":null,\"creator\":null,"
+                + "\"modifier\":null,\"createTime\":null,\"modifyTime\":null,\"extList\":null,\"sortConf\":null,"
+                + "\"version\":44},{\"id\":null,\"inlongGroupId\":null,\"name\":null,\"description\":null,"
+                + "\"middlewareType\":null,\"mqType\":\"PULSAR\",\"mqResource\":null,\"enableZookeeper\":0,"
+                + "\"enableCreateResource\":null,\"lightweight\":null,\"inlongClusterTag\":null,"
+                + "\"dailyRecords\":null,\"dailyStorage\":null,\"peakRecords\":null,\"maxLength\":null,"
+                + "\"inCharges\":null,\"followers\":null,\"status\":null,\"creator\":null,\"modifier\":null,"
+                + "\"createTime\":null,\"modifyTime\":null,\"extList\":null,\"sortConf\":null,\"version\":null,"
+                + "\"tenant\":null,\"adminUrl\":null,\"serviceUrl\":null,\"queueModule\":\"PARALLEL\","
+                + "\"partitionNum\":3,\"ensemble\":3,\"writeQuorum\":3,\"ackQuorum\":2,\"ttl\":24,"
+                + "\"ttlUnit\":\"hours\",\"retentionTime\":72,\"retentionTimeUnit\":\"hours\","
+                + "\"retentionSize\":-1,\"retentionSizeUnit\":\"MB\"}],\"pageNum\":1,\"pageSize\":20,\"size\":0,"
+                + "\"startRow\":0,\"endRow\":0,\"pages\":0,\"prePage\":0,\"nextPage\":0,\"isFirstPage\":false,"
+                + "\"isLastPage\":false,\"hasPreviousPage\":false,\"hasNextPage\":false,\"navigatePages\":0,"
+                + "\"navigatepageNums\":null,\"navigateFirstPage\":0,\"navigateLastPage\":0}";
+
+        PageResult<InlongGroupInfo> pageResult = JsonUtils.parseObject(pageInfoJson,
+                new TypeReference<PageResult<InlongGroupInfo>>() {
+                });
+
+        Assertions.assertEquals(1, pageResult.getPageNum());
+        Assertions.assertEquals(30, pageResult.getTotal());
+        Assertions.assertEquals(20, pageResult.getPageSize());
+
+        List<InlongGroupInfo> inlongGroupInfos = pageResult.getList();
+        Assertions.assertTrue(inlongGroupInfos.get(0) instanceof InlongNoneMqInfo);
+        Assertions.assertTrue(inlongGroupInfos.get(1) instanceof InlongPulsarInfo);
+    }
+}
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterService.java
index e57e5500b..244ee8372 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterService.java
@@ -17,7 +17,6 @@
 
 package org.apache.inlong.manager.service.cluster;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.common.pojo.dataproxy.DataProxyConfig;
 import org.apache.inlong.common.pojo.dataproxy.DataProxyNodeResponse;
 import org.apache.inlong.manager.pojo.cluster.BindTagRequest;
@@ -29,6 +28,7 @@ import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
+import org.apache.inlong.manager.pojo.common.PageResult;
 
 import java.util.List;
 
@@ -61,7 +61,7 @@ public interface InlongClusterService {
      * @param request page request conditions
      * @return cluster tag list
      */
-    PageInfo<ClusterTagResponse> listTag(ClusterTagPageRequest request);
+    PageResult<ClusterTagResponse> listTag(ClusterTagPageRequest request);
 
     /**
      * Update cluster tag.
@@ -116,7 +116,7 @@ public interface InlongClusterService {
      * @param request page request conditions
      * @return cluster list
      */
-    PageInfo<ClusterInfo> list(ClusterPageRequest request);
+    PageResult<ClusterInfo> list(ClusterPageRequest request);
 
     /**
      * Update cluster information
@@ -170,7 +170,7 @@ public interface InlongClusterService {
      * @param currentUser current operator
      * @return cluster node list
      */
-    PageInfo<ClusterNodeResponse> listNode(ClusterPageRequest request, String currentUser);
+    PageResult<ClusterNodeResponse> listNode(ClusterPageRequest request, String currentUser);
 
     /**
      * Query node IP list by cluster type
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceImpl.java
index 944e3fe22..d3a05b7ff 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.cluster;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.google.common.base.Joiner;
 import com.google.common.collect.Sets;
 import com.google.gson.Gson;
@@ -62,6 +61,7 @@ import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
 import org.apache.inlong.manager.pojo.cluster.pulsar.PulsarClusterDTO;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
 import org.apache.inlong.manager.pojo.stream.InlongStreamBriefInfo;
@@ -153,16 +153,17 @@ public class InlongClusterServiceImpl implements InlongClusterService {
     }
 
     @Override
-    public PageInfo<ClusterTagResponse> listTag(ClusterTagPageRequest request) {
+    public PageResult<ClusterTagResponse> listTag(ClusterTagPageRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<InlongClusterTagEntity> entityPage = (Page<InlongClusterTagEntity>) clusterTagMapper
                 .selectByCondition(request);
+
         List<ClusterTagResponse> tagList = CommonBeanUtils.copyListProperties(entityPage, ClusterTagResponse::new);
-        PageInfo<ClusterTagResponse> page = new PageInfo<>(tagList);
-        page.setTotal(tagList.size());
 
+        PageResult<ClusterTagResponse> pageResult = new PageResult<>(tagList,
+                entityPage.getTotal(), entityPage.getPageNum(), entityPage.getPageSize());
         LOGGER.debug("success to list cluster tag by {}", request);
-        return page;
+        return pageResult;
     }
 
     @Override
@@ -313,18 +314,23 @@ public class InlongClusterServiceImpl implements InlongClusterService {
     }
 
     @Override
-    public PageInfo<ClusterInfo> list(ClusterPageRequest request) {
+    public PageResult<ClusterInfo> list(ClusterPageRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<InlongClusterEntity> entityPage = (Page<InlongClusterEntity>) clusterMapper.selectByCondition(request);
         List<ClusterInfo> list = entityPage.stream()
                 .map(entity -> {
                     InlongClusterOperator instance = clusterOperatorFactory.getInstance(entity.getType());
                     return instance.getFromEntity(entity);
-                }).collect(Collectors.toList());
-        PageInfo<ClusterInfo> page = new PageInfo<>(list);
-        page.setTotal(list.size());
+                })
+                .collect(Collectors.toList());
+
+        PageResult<ClusterInfo> pageResult = new PageResult<>(
+                list, entityPage.getTotal(),
+                entityPage.getPageNum(), entityPage.getPageSize()
+        );
+
         LOGGER.debug("success to list inlong cluster by {}", request);
-        return page;
+        return pageResult;
     }
 
     @Override
@@ -494,12 +500,11 @@ public class InlongClusterServiceImpl implements InlongClusterService {
     }
 
     @Override
-    public PageInfo<ClusterNodeResponse> listNode(ClusterPageRequest request, String currentUser) {
+    public PageResult<ClusterNodeResponse> listNode(ClusterPageRequest request, String currentUser) {
         if (StringUtils.isNotBlank(request.getClusterTag())) {
             List<ClusterNodeResponse> nodeList = listNodeByClusterTag(request);
-            PageInfo<ClusterNodeResponse> page = new PageInfo<>(nodeList);
-            page.setTotal(nodeList.size());
-            return page;
+
+            return new PageResult<>(nodeList, (long) nodeList.size());
         }
         Integer parentId = request.getParentId();
         Preconditions.checkNotNull(parentId, "Cluster id cannot be empty");
@@ -507,17 +512,19 @@ public class InlongClusterServiceImpl implements InlongClusterService {
         UserEntity userEntity = userMapper.selectByName(currentUser);
         boolean isInCharge = Preconditions.inSeparatedString(currentUser, cluster.getInCharges(),
                 InlongConstants.COMMA);
+
         Preconditions.checkTrue(isInCharge || userEntity.getAccountType().equals(UserTypeEnum.ADMIN.getCode()),
                 "Current user does not have permission to get cluster node list");
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<InlongClusterNodeEntity> entityPage = (Page<InlongClusterNodeEntity>)
                 clusterNodeMapper.selectByCondition(request);
         List<ClusterNodeResponse> nodeList = CommonBeanUtils.copyListProperties(entityPage, ClusterNodeResponse::new);
-        PageInfo<ClusterNodeResponse> page = new PageInfo<>(nodeList);
-        page.setTotal(nodeList.size());
+
+        PageResult<ClusterNodeResponse> pageResult = new PageResult<>(nodeList, entityPage.getTotal(),
+                entityPage.getPageNum(), entityPage.getPageSize());
 
         LOGGER.debug("success to list inlong cluster node by {}", request);
-        return page;
+        return pageResult;
     }
 
     public List<ClusterNodeResponse> listNodeByClusterTag(ClusterPageRequest request) {
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/ConsumptionService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/ConsumptionService.java
index e1ad392c2..489c8d1c0 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/ConsumptionService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/ConsumptionService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.core;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionInfo;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionListVo;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionQuery;
@@ -43,7 +43,7 @@ public interface ConsumptionService {
      * @param query Consumption info
      * @return Consumption list
      */
-    PageInfo<ConsumptionListVo> list(ConsumptionQuery query);
+    PageResult<ConsumptionListVo> list(ConsumptionQuery query);
 
     /**
      * Get data consumption details
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/HeartbeatService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/HeartbeatService.java
index 86863c5d8..df6093ed0 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/HeartbeatService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/HeartbeatService.java
@@ -17,12 +17,12 @@
 
 package org.apache.inlong.manager.service.core;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.heartbeat.ComponentHeartbeatResponse;
 import org.apache.inlong.manager.pojo.heartbeat.GroupHeartbeatResponse;
 import org.apache.inlong.manager.pojo.heartbeat.HeartbeatPageRequest;
-import org.apache.inlong.manager.pojo.heartbeat.HeartbeatReportRequest;
 import org.apache.inlong.manager.pojo.heartbeat.HeartbeatQueryRequest;
+import org.apache.inlong.manager.pojo.heartbeat.HeartbeatReportRequest;
 import org.apache.inlong.manager.pojo.heartbeat.StreamHeartbeatResponse;
 
 /**
@@ -68,7 +68,7 @@ public interface HeartbeatService {
      * @param request paging query request
      * @return list of component heartbeat
      */
-    PageInfo<ComponentHeartbeatResponse> listComponentHeartbeat(HeartbeatPageRequest request);
+    PageResult<ComponentHeartbeatResponse> listComponentHeartbeat(HeartbeatPageRequest request);
 
     /**
      * List group heartbeat by page
@@ -76,7 +76,7 @@ public interface HeartbeatService {
      * @param request paging query request
      * @return list of group heartbeat
      */
-    PageInfo<GroupHeartbeatResponse> listGroupHeartbeat(HeartbeatPageRequest request);
+    PageResult<GroupHeartbeatResponse> listGroupHeartbeat(HeartbeatPageRequest request);
 
     /**
      * List stream heartbeat by page
@@ -84,6 +84,6 @@ public interface HeartbeatService {
      * @param request paging query request
      * @return list of stream heartbeat
      */
-    PageInfo<StreamHeartbeatResponse> listStreamHeartbeat(HeartbeatPageRequest request);
+    PageResult<StreamHeartbeatResponse> listStreamHeartbeat(HeartbeatPageRequest request);
 
 }
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowApproverService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowApproverService.java
index 6d4131eda..8c99be293 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowApproverService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowApproverService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.core;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.workflow.ApproverPageRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverResponse;
@@ -60,7 +60,7 @@ public interface WorkflowApproverService {
      * @param request page query request
      * @return approver list
      */
-    PageInfo<ApproverResponse> listByCondition(ApproverPageRequest request);
+    PageResult<ApproverResponse> listByCondition(ApproverPageRequest request);
 
     /**
      * Update workflow approve.
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowEventService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowEventService.java
index a998aa710..f9020b6c7 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowEventService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowEventService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.core;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.workflow.EventLogRequest;
 import org.apache.inlong.manager.pojo.workflow.EventLogResponse;
 import org.apache.inlong.manager.workflow.event.process.ProcessEvent;
@@ -42,7 +42,7 @@ public interface WorkflowEventService {
      * @param query Query conditions
      * @return Log list
      */
-    PageInfo<EventLogResponse> list(EventLogRequest query);
+    PageResult<EventLogResponse> list(EventLogRequest query);
 
     /**
      * Execute the listener based on the log ID
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/ConsumptionServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/ConsumptionServiceImpl.java
index 6efafbdeb..e7a1c9e12 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/ConsumptionServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/ConsumptionServiceImpl.java
@@ -19,14 +19,13 @@ package org.apache.inlong.manager.service.core.impl;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.consts.InlongConstants;
+import org.apache.inlong.manager.common.consts.MQType;
 import org.apache.inlong.manager.common.enums.ClusterType;
 import org.apache.inlong.manager.common.enums.ConsumptionStatus;
 import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
-import org.apache.inlong.manager.common.consts.MQType;
 import org.apache.inlong.manager.common.exceptions.BusinessException;
 import org.apache.inlong.manager.common.util.CommonBeanUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
@@ -38,6 +37,7 @@ import org.apache.inlong.manager.dao.mapper.ConsumptionPulsarEntityMapper;
 import org.apache.inlong.manager.dao.mapper.InlongGroupEntityMapper;
 import org.apache.inlong.manager.pojo.cluster.pulsar.PulsarClusterInfo;
 import org.apache.inlong.manager.pojo.common.CountInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionInfo;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionListVo;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionMqExtBase;
@@ -110,14 +110,16 @@ public class ConsumptionServiceImpl implements ConsumptionService {
     }
 
     @Override
-    public PageInfo<ConsumptionListVo> list(ConsumptionQuery query) {
+    public PageResult<ConsumptionListVo> list(ConsumptionQuery query) {
         PageHelper.startPage(query.getPageNum(), query.getPageSize());
         query.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserRoleCode.ADMIN));
         Page<ConsumptionEntity> pageResult = (Page<ConsumptionEntity>) consumptionMapper.listByQuery(query);
-        PageInfo<ConsumptionListVo> pageInfo = pageResult
-                .toPageInfo(entity -> CommonBeanUtils.copyProperties(entity, ConsumptionListVo::new));
-        pageInfo.setTotal(pageResult.getTotal());
-        return pageInfo;
+        List<ConsumptionListVo> consumptionListVos = CommonBeanUtils.copyListProperties(pageResult.getResult(),
+                ConsumptionListVo::new);
+
+        return new PageResult<>(
+                consumptionListVos, pageResult.getTotal(), pageResult.getPageNum(), pageResult.getPageSize()
+        );
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/HeartbeatServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/HeartbeatServiceImpl.java
index a0c2b5d8c..0d789a30d 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/HeartbeatServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/HeartbeatServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.core.impl;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.google.gson.Gson;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
@@ -37,6 +36,7 @@ import org.apache.inlong.manager.dao.entity.StreamHeartbeatEntity;
 import org.apache.inlong.manager.dao.mapper.ComponentHeartbeatEntityMapper;
 import org.apache.inlong.manager.dao.mapper.GroupHeartbeatEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StreamHeartbeatEntityMapper;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.heartbeat.ComponentHeartbeatResponse;
 import org.apache.inlong.manager.pojo.heartbeat.GroupHeartbeatResponse;
 import org.apache.inlong.manager.pojo.heartbeat.HeartbeatPageRequest;
@@ -161,7 +161,7 @@ public class HeartbeatServiceImpl implements HeartbeatService {
     }
 
     @Override
-    public PageInfo<ComponentHeartbeatResponse> listComponentHeartbeat(HeartbeatPageRequest request) {
+    public PageResult<ComponentHeartbeatResponse> listComponentHeartbeat(HeartbeatPageRequest request) {
         Preconditions.checkNotNull(request, ErrorCodeEnum.REQUEST_IS_EMPTY.getMessage());
         String component = request.getComponent();
         Preconditions.checkNotEmpty(component, ErrorCodeEnum.REQUEST_COMPONENT_EMPTY.getMessage());
@@ -180,7 +180,7 @@ public class HeartbeatServiceImpl implements HeartbeatService {
     }
 
     @Override
-    public PageInfo<GroupHeartbeatResponse> listGroupHeartbeat(HeartbeatPageRequest request) {
+    public PageResult<GroupHeartbeatResponse> listGroupHeartbeat(HeartbeatPageRequest request) {
         Preconditions.checkNotNull(request, ErrorCodeEnum.REQUEST_IS_EMPTY.getMessage());
         String component = request.getComponent();
         Preconditions.checkNotEmpty(component, ErrorCodeEnum.REQUEST_COMPONENT_EMPTY.getMessage());
@@ -199,7 +199,7 @@ public class HeartbeatServiceImpl implements HeartbeatService {
     }
 
     @Override
-    public PageInfo<StreamHeartbeatResponse> listStreamHeartbeat(HeartbeatPageRequest request) {
+    public PageResult<StreamHeartbeatResponse> listStreamHeartbeat(HeartbeatPageRequest request) {
         Preconditions.checkNotNull(request, ErrorCodeEnum.REQUEST_IS_EMPTY.getMessage());
         String component = request.getComponent();
         Preconditions.checkNotEmpty(component, ErrorCodeEnum.REQUEST_COMPONENT_EMPTY.getMessage());
@@ -251,40 +251,35 @@ public class HeartbeatServiceImpl implements HeartbeatService {
         return true;
     }
 
-    private PageInfo<ComponentHeartbeatResponse> listComponentHeartbeatOpt(HeartbeatPageRequest request) {
+    private PageResult<ComponentHeartbeatResponse> listComponentHeartbeatOpt(HeartbeatPageRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<ComponentHeartbeatEntity> entityPage = (Page<ComponentHeartbeatEntity>)
                 componentHeartbeatMapper.selectByCondition(request);
         List<ComponentHeartbeatResponse> responseList = CommonBeanUtils.copyListProperties(entityPage,
                 ComponentHeartbeatResponse::new);
 
-        PageInfo<ComponentHeartbeatResponse> pageInfo = new PageInfo<>(responseList);
-        pageInfo.setTotal(responseList.size());
-        return pageInfo;
+        return new PageResult<>(responseList, entityPage.getTotal());
     }
 
-    private PageInfo<GroupHeartbeatResponse> listGroupHeartbeatOpt(HeartbeatPageRequest request) {
+    private PageResult<GroupHeartbeatResponse> listGroupHeartbeatOpt(HeartbeatPageRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<GroupHeartbeatEntity> entityPage = (Page<GroupHeartbeatEntity>) groupHeartbeatMapper.selectByCondition(
                 request);
         List<GroupHeartbeatResponse> responseList = CommonBeanUtils.copyListProperties(entityPage,
                 GroupHeartbeatResponse::new);
 
-        PageInfo<GroupHeartbeatResponse> pageInfo = new PageInfo<>(responseList);
-        pageInfo.setTotal(responseList.size());
-        return pageInfo;
+        return new PageResult<>(responseList,
+                entityPage.getTotal(), entityPage.getPageNum(), entityPage.getPageSize());
     }
 
-    private PageInfo<StreamHeartbeatResponse> listStreamHeartbeatOpt(HeartbeatPageRequest request) {
+    private PageResult<StreamHeartbeatResponse> listStreamHeartbeatOpt(HeartbeatPageRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<StreamHeartbeatEntity> entityPage = (Page<StreamHeartbeatEntity>)
                 streamHeartbeatMapper.selectByCondition(request);
         List<StreamHeartbeatResponse> responseList = CommonBeanUtils.copyListProperties(entityPage,
                 StreamHeartbeatResponse::new);
 
-        PageInfo<StreamHeartbeatResponse> pageInfo = new PageInfo<>(responseList);
-        pageInfo.setTotal(responseList.size());
-        return pageInfo;
+        return new PageResult<>(responseList, entityPage.getTotal(), entityPage.getPageNum(), entityPage.getPageSize());
     }
 
 }
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowApproverServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowApproverServiceImpl.java
index 60dc7cc10..bdac4978f 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowApproverServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowApproverServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.core.impl;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.common.consts.InlongConstants;
 import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
 import org.apache.inlong.manager.common.exceptions.BusinessException;
@@ -27,6 +26,7 @@ import org.apache.inlong.manager.common.util.CommonBeanUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.dao.entity.WorkflowApproverEntity;
 import org.apache.inlong.manager.dao.mapper.WorkflowApproverEntityMapper;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.workflow.ApproverPageRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverResponse;
@@ -111,15 +111,14 @@ public class WorkflowApproverServiceImpl implements WorkflowApproverService {
     }
 
     @Override
-    public PageInfo<ApproverResponse> listByCondition(ApproverPageRequest request) {
+    public PageResult<ApproverResponse> listByCondition(ApproverPageRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
 
         Page<WorkflowApproverEntity> page = (Page<WorkflowApproverEntity>) approverMapper.selectByCondition(request);
         List<ApproverResponse> resultList = CommonBeanUtils.copyListProperties(page,
                 ApproverResponse::new);
-        PageInfo<ApproverResponse> pageInfo = new PageInfo<>(resultList);
-        pageInfo.setTotal(page.getTotal());
-        return pageInfo;
+
+        return new PageResult<>(resultList, page.getTotal(), page.getPageNum(), page.getPageSize());
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowEventServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowEventServiceImpl.java
index 6ca972c2f..21fea8664 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowEventServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowEventServiceImpl.java
@@ -19,11 +19,11 @@ package org.apache.inlong.manager.service.core.impl;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
-import org.apache.inlong.manager.pojo.workflow.EventLogRequest;
-import org.apache.inlong.manager.pojo.workflow.EventLogResponse;
 import org.apache.inlong.manager.common.util.CommonBeanUtils;
 import org.apache.inlong.manager.dao.entity.WorkflowEventLogEntity;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.workflow.EventLogRequest;
+import org.apache.inlong.manager.pojo.workflow.EventLogResponse;
 import org.apache.inlong.manager.service.core.WorkflowEventService;
 import org.apache.inlong.manager.workflow.core.EventListenerService;
 import org.apache.inlong.manager.workflow.core.WorkflowQueryService;
@@ -52,15 +52,13 @@ public class WorkflowEventServiceImpl implements WorkflowEventService {
     }
 
     @Override
-    public PageInfo<EventLogResponse> list(EventLogRequest query) {
+    public PageResult<EventLogResponse> list(EventLogRequest query) {
         PageHelper.startPage(query.getPageNum(), query.getPageSize());
         Page<WorkflowEventLogEntity> page = (Page<WorkflowEventLogEntity>) queryService.listEventLog(query);
 
         List<EventLogResponse> viewList = CommonBeanUtils.copyListProperties(page, EventLogResponse::new);
-        PageInfo<EventLogResponse> pageInfo = new PageInfo<>(viewList);
-        pageInfo.setTotal(page.getTotal());
 
-        return pageInfo;
+        return new PageResult<>(viewList, page.getTotal(), page.getPageNum(), page.getPageSize());
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupService.java
index 9136f6cfa..48dccc0f5 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.group;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupApproveRequest;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupCountResponse;
@@ -59,7 +59,7 @@ public interface InlongGroupService {
      * @param request pagination query request
      * @return group list
      */
-    PageInfo<InlongGroupBriefInfo> listBrief(InlongGroupPageRequest request);
+    PageResult<InlongGroupBriefInfo> listBrief(InlongGroupPageRequest request);
 
     /**
      * Modify group information
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
index ebec5d8d5..65aecd2e3 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
@@ -20,7 +20,6 @@ package org.apache.inlong.manager.service.group;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.apache.commons.collections.CollectionUtils;
@@ -43,6 +42,7 @@ import org.apache.inlong.manager.dao.mapper.InlongGroupExtEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StreamSourceEntityMapper;
 import org.apache.inlong.manager.pojo.common.OrderFieldEnum;
 import org.apache.inlong.manager.pojo.common.OrderTypeEnum;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupApproveRequest;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupCountResponse;
@@ -181,7 +181,7 @@ public class InlongGroupServiceImpl implements InlongGroupService {
     }
 
     @Override
-    public PageInfo<InlongGroupBriefInfo> listBrief(InlongGroupPageRequest request) {
+    public PageResult<InlongGroupBriefInfo> listBrief(InlongGroupPageRequest request) {
         if (request.getPageSize() > MAX_PAGE_SIZE) {
             LOGGER.warn("list group info, but page size is {}, change to {}", request.getPageSize(), MAX_PAGE_SIZE);
             request.setPageSize(MAX_PAGE_SIZE);
@@ -210,10 +210,12 @@ public class InlongGroupServiceImpl implements InlongGroupService {
                 group.setStreamSources(sources);
             });
         }
-        PageInfo<InlongGroupBriefInfo> page = new PageInfo<>(briefInfos);
-        page.setTotal(entityPage.getTotal());
+
+        PageResult<InlongGroupBriefInfo> pageResult = new PageResult<>(briefInfos,
+                entityPage.getTotal(), entityPage.getPageNum(), entityPage.getPageSize());
+
         LOGGER.debug("success to list inlong group for {}", request);
-        return page;
+        return pageResult;
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeService.java
index 29422e81d..be5427097 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.node;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.node.DataNodeInfo;
 import org.apache.inlong.manager.pojo.node.DataNodePageRequest;
 import org.apache.inlong.manager.pojo.node.DataNodeRequest;
@@ -50,7 +50,7 @@ public interface DataNodeService {
      * @param request page request conditions
      * @return node list
      */
-    PageInfo<DataNodeInfo> list(DataNodePageRequest request);
+    PageResult<DataNodeInfo> list(DataNodePageRequest request);
 
     /**
      * Update data node.
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeServiceImpl.java
index 893987663..aa823dae5 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.node;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.common.consts.DataNodeType;
 import org.apache.inlong.manager.common.consts.InlongConstants;
 import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
@@ -27,6 +26,7 @@ import org.apache.inlong.manager.common.exceptions.BusinessException;
 import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.dao.entity.DataNodeEntity;
 import org.apache.inlong.manager.dao.mapper.DataNodeEntityMapper;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.node.DataNodeInfo;
 import org.apache.inlong.manager.pojo.node.DataNodePageRequest;
 import org.apache.inlong.manager.pojo.node.DataNodeRequest;
@@ -89,7 +89,7 @@ public class DataNodeServiceImpl implements DataNodeService {
     }
 
     @Override
-    public PageInfo<DataNodeInfo> list(DataNodePageRequest request) {
+    public PageResult<DataNodeInfo> list(DataNodePageRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<DataNodeEntity> entityPage = (Page<DataNodeEntity>) dataNodeMapper.selectByCondition(request);
         List<DataNodeInfo> list = entityPage.stream()
@@ -97,10 +97,12 @@ public class DataNodeServiceImpl implements DataNodeService {
                     DataNodeOperator dataNodeOperator = operatorFactory.getInstance(entity.getType());
                     return dataNodeOperator.getFromEntity(entity);
                 }).collect(Collectors.toList());
-        PageInfo<DataNodeInfo> page = new PageInfo<>(list);
-        page.setTotal(entityPage.getTotal());
+
+        PageResult<DataNodeInfo> pageResult = new PageResult<>(list, entityPage.getTotal(),
+                entityPage.getPageNum(), entityPage.getPageSize());
+
         LOGGER.debug("success to list data node by {}", request);
-        return page;
+        return pageResult;
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/AbstractSinkOperator.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/AbstractSinkOperator.java
index 2e790fff1..ac227ca56 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/AbstractSinkOperator.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/AbstractSinkOperator.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.sink;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.github.pagehelper.Page;
-import com.github.pagehelper.PageInfo;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.consts.InlongConstants;
@@ -32,6 +31,7 @@ import org.apache.inlong.manager.dao.entity.StreamSinkEntity;
 import org.apache.inlong.manager.dao.entity.StreamSinkFieldEntity;
 import org.apache.inlong.manager.dao.mapper.StreamSinkEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StreamSinkFieldEntityMapper;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.sink.SinkField;
 import org.apache.inlong.manager.pojo.sink.SinkRequest;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
@@ -42,6 +42,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * Default operation of stream sink.
@@ -95,11 +96,17 @@ public abstract class AbstractSinkOperator implements StreamSinkOperator {
     }
 
     @Override
-    public PageInfo<? extends StreamSink> getPageInfo(Page<StreamSinkEntity> entityPage) {
+    public PageResult<? extends StreamSink> getPageInfo(Page<StreamSinkEntity> entityPage) {
         if (CollectionUtils.isEmpty(entityPage)) {
-            return new PageInfo<>();
+            return PageResult.empty();
         }
-        return entityPage.toPageInfo(this::getFromEntity);
+
+        List<StreamSink> streamSinks = entityPage.getResult()
+                .stream()
+                .map(this::getFromEntity)
+                .collect(Collectors.toList());
+
+        return new PageResult<>(streamSinks, entityPage.getTotal(), entityPage.getPageNum(), entityPage.getPageSize());
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkOperator.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkOperator.java
index e8231c419..e23b6cef2 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkOperator.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkOperator.java
@@ -18,8 +18,8 @@
 package org.apache.inlong.manager.service.sink;
 
 import com.github.pagehelper.Page;
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.dao.entity.StreamSinkEntity;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.sink.SinkField;
 import org.apache.inlong.manager.pojo.sink.SinkRequest;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
@@ -68,7 +68,7 @@ public interface StreamSinkOperator {
      * @param entityPage sink entity page
      * @return sink info list
      */
-    PageInfo<? extends StreamSink> getPageInfo(Page<StreamSinkEntity> entityPage);
+    PageResult<? extends StreamSink> getPageInfo(Page<StreamSinkEntity> entityPage);
 
     /**
      * Update the sink info.
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkService.java
index 6abefbc16..6b09fd551 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.sink;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.sink.SinkApproveDTO;
 import org.apache.inlong.manager.pojo.sink.SinkBriefInfo;
@@ -93,7 +93,7 @@ public interface StreamSinkService {
      * @param request paging request.
      * @return sink list
      */
-    PageInfo<? extends StreamSink> listByCondition(SinkPageRequest request);
+    PageResult<? extends StreamSink> listByCondition(SinkPageRequest request);
 
     /**
      * Modify data sink information.
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java
index f5860fb9e..2c537e848 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.sink;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.apache.commons.collections.CollectionUtils;
@@ -36,6 +35,7 @@ import org.apache.inlong.manager.dao.mapper.StreamSinkEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StreamSinkFieldEntityMapper;
 import org.apache.inlong.manager.pojo.common.OrderFieldEnum;
 import org.apache.inlong.manager.pojo.common.OrderTypeEnum;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.sink.SinkApproveDTO;
 import org.apache.inlong.manager.pojo.sink.SinkBriefInfo;
@@ -177,7 +177,7 @@ public class StreamSinkServiceImpl implements StreamSinkService {
     }
 
     @Override
-    public PageInfo<? extends StreamSink> listByCondition(SinkPageRequest request) {
+    public PageResult<? extends StreamSink> listByCondition(SinkPageRequest request) {
         Preconditions.checkNotNull(request.getInlongGroupId(), ErrorCodeEnum.GROUP_ID_IS_EMPTY.getMessage());
 
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
@@ -191,14 +191,14 @@ public class StreamSinkServiceImpl implements StreamSinkService {
         List<StreamSink> responseList = Lists.newArrayList();
         for (Map.Entry<String, Page<StreamSinkEntity>> entry : sinkMap.entrySet()) {
             StreamSinkOperator sinkOperator = operatorFactory.getInstance(entry.getKey());
-            PageInfo<? extends StreamSink> pageInfo = sinkOperator.getPageInfo(entry.getValue());
+            PageResult<? extends StreamSink> pageInfo = sinkOperator.getPageInfo(entry.getValue());
             responseList.addAll(pageInfo.getList());
         }
         // Encapsulate the paging query results into the PageInfo object to obtain related paging information
-        PageInfo<? extends StreamSink> pageInfo = PageInfo.of(responseList);
+        PageResult<StreamSink> pageResult = new PageResult<>(responseList);
 
-        LOGGER.debug("success to list sink page, result size {}", pageInfo.getSize());
-        return pageInfo;
+        LOGGER.debug("success to list sink page, result size {}", pageResult.getList().size());
+        return pageResult;
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/AbstractSourceOperator.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/AbstractSourceOperator.java
index 72d12343e..d97dff612 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/AbstractSourceOperator.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/AbstractSourceOperator.java
@@ -18,7 +18,6 @@
 package org.apache.inlong.manager.service.source;
 
 import com.github.pagehelper.Page;
-import com.github.pagehelper.PageInfo;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.consts.InlongConstants;
@@ -26,15 +25,16 @@ import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
 import org.apache.inlong.manager.common.enums.GroupStatus;
 import org.apache.inlong.manager.common.enums.SourceStatus;
 import org.apache.inlong.manager.common.exceptions.BusinessException;
-import org.apache.inlong.manager.pojo.source.SourceRequest;
-import org.apache.inlong.manager.pojo.source.StreamSource;
-import org.apache.inlong.manager.pojo.stream.StreamField;
 import org.apache.inlong.manager.common.util.CommonBeanUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.dao.entity.StreamSourceEntity;
 import org.apache.inlong.manager.dao.entity.StreamSourceFieldEntity;
 import org.apache.inlong.manager.dao.mapper.StreamSourceEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StreamSourceFieldEntityMapper;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.source.SourceRequest;
+import org.apache.inlong.manager.pojo.source.StreamSource;
+import org.apache.inlong.manager.pojo.stream.StreamField;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,6 +44,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * Default operator of stream source.
@@ -98,11 +99,15 @@ public abstract class AbstractSourceOperator implements StreamSourceOperator {
     }
 
     @Override
-    public PageInfo<? extends StreamSource> getPageInfo(Page<StreamSourceEntity> entityPage) {
+    public PageResult<? extends StreamSource> getPageInfo(Page<StreamSourceEntity> entityPage) {
         if (CollectionUtils.isEmpty(entityPage)) {
-            return new PageInfo<>();
+            return PageResult.empty();
         }
-        return entityPage.toPageInfo(this::getFromEntity);
+
+        List<StreamSource> streamSources = entityPage.stream()
+                .map(this::getFromEntity)
+                .collect(Collectors.toList());
+        return new PageResult<>(streamSources, entityPage.getTotal(), entityPage.getPageNum(), entityPage.size());
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceOperator.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceOperator.java
index 2a4436ce3..181102561 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceOperator.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceOperator.java
@@ -18,8 +18,8 @@
 package org.apache.inlong.manager.service.source;
 
 import com.github.pagehelper.Page;
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.dao.entity.StreamSourceEntity;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.source.SourceRequest;
 import org.apache.inlong.manager.pojo.source.StreamSource;
@@ -87,7 +87,7 @@ public interface StreamSourceOperator {
      * @param entityPage given entity page
      * @return source list response
      */
-    PageInfo<? extends StreamSource> getPageInfo(Page<StreamSourceEntity> entityPage);
+    PageResult<? extends StreamSource> getPageInfo(Page<StreamSourceEntity> entityPage);
 
     /**
      * Update the source info.
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceService.java
index b375b6bc7..f0940cecb 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.source;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.source.SourcePageRequest;
 import org.apache.inlong.manager.pojo.source.SourceRequest;
@@ -85,7 +85,7 @@ public interface StreamSourceService {
      * @param request paging request.
      * @return source list
      */
-    PageInfo<? extends StreamSource> listByCondition(SourcePageRequest request);
+    PageResult<? extends StreamSource> listByCondition(SourcePageRequest request);
 
     /**
      * Modify data source information
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java
index 972db279c..04a64e7ac 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.source;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.apache.commons.collections.CollectionUtils;
@@ -37,6 +36,7 @@ import org.apache.inlong.manager.dao.mapper.StreamSourceEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StreamSourceFieldEntityMapper;
 import org.apache.inlong.manager.pojo.common.OrderFieldEnum;
 import org.apache.inlong.manager.pojo.common.OrderTypeEnum;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.source.SourcePageRequest;
 import org.apache.inlong.manager.pojo.source.SourceRequest;
@@ -166,7 +166,7 @@ public class StreamSourceServiceImpl implements StreamSourceService {
     }
 
     @Override
-    public PageInfo<? extends StreamSource> listByCondition(SourcePageRequest request) {
+    public PageResult<? extends StreamSource> listByCondition(SourcePageRequest request) {
         Preconditions.checkNotNull(request.getInlongGroupId(), ErrorCodeEnum.GROUP_ID_IS_EMPTY.getMessage());
 
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
@@ -182,15 +182,16 @@ public class StreamSourceServiceImpl implements StreamSourceService {
         List<StreamSource> responseList = Lists.newArrayList();
         for (Map.Entry<String, Page<StreamSourceEntity>> entry : sourceMap.entrySet()) {
             StreamSourceOperator sourceOperator = operatorFactory.getInstance(entry.getKey());
-            PageInfo<? extends StreamSource> pageInfo = sourceOperator.getPageInfo(entry.getValue());
+            PageResult<? extends StreamSource> pageInfo = sourceOperator.getPageInfo(entry.getValue());
             if (null != pageInfo && CollectionUtils.isNotEmpty(pageInfo.getList())) {
                 responseList.addAll(pageInfo.getList());
             }
         }
-        PageInfo<? extends StreamSource> pageInfo = PageInfo.of(responseList);
 
-        LOGGER.debug("success to list source page, result size {}", pageInfo.getSize());
-        return pageInfo;
+        PageResult<? extends StreamSource> pageResult = new PageResult<>(responseList);
+
+        LOGGER.debug("success to list source page, result size {}", pageResult.getList().size());
+        return pageResult;
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamService.java
index 1d148c2ac..bdbdef4d4 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.stream;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.stream.InlongStreamApproveRequest;
 import org.apache.inlong.manager.pojo.stream.InlongStreamBriefInfo;
 import org.apache.inlong.manager.pojo.stream.InlongStreamInfo;
@@ -75,7 +75,7 @@ public interface InlongStreamService {
      * @param request query request
      * @return inlong stream brief list
      */
-    PageInfo<InlongStreamBriefInfo> listBrief(InlongStreamPageRequest request);
+    PageResult<InlongStreamBriefInfo> listBrief(InlongStreamPageRequest request);
 
     /**
      * Paging query inlong stream full info list, and get all related sources and sinks
@@ -83,7 +83,7 @@ public interface InlongStreamService {
      * @param request query request
      * @return inlong stream info list
      */
-    PageInfo<InlongStreamInfo> listAll(InlongStreamPageRequest request);
+    PageResult<InlongStreamInfo> listAll(InlongStreamPageRequest request);
 
     /**
      * Get the inlong stream brief list and related sink brief list.
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java
index 2d8a7e5ec..1ea31b562 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.stream;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.consts.InlongConstants;
@@ -39,6 +38,7 @@ import org.apache.inlong.manager.dao.mapper.InlongStreamExtEntityMapper;
 import org.apache.inlong.manager.dao.mapper.InlongStreamFieldEntityMapper;
 import org.apache.inlong.manager.pojo.common.OrderFieldEnum;
 import org.apache.inlong.manager.pojo.common.OrderTypeEnum;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.sink.SinkBriefInfo;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
 import org.apache.inlong.manager.pojo.source.StreamSource;
@@ -199,7 +199,7 @@ public class InlongStreamServiceImpl implements InlongStreamService {
     }
 
     @Override
-    public PageInfo<InlongStreamBriefInfo> listBrief(InlongStreamPageRequest request) {
+    public PageResult<InlongStreamBriefInfo> listBrief(InlongStreamPageRequest request) {
         LOGGER.debug("begin to list inlong stream page by {}", request);
 
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
@@ -209,15 +209,15 @@ public class InlongStreamServiceImpl implements InlongStreamService {
         List<InlongStreamBriefInfo> streamList = CommonBeanUtils.copyListProperties(entityPage,
                 InlongStreamBriefInfo::new);
 
-        PageInfo<InlongStreamBriefInfo> page = new PageInfo<>(streamList);
-        page.setTotal(streamList.size());
+        PageResult<InlongStreamBriefInfo> pageResult = new PageResult<>(streamList,
+                entityPage.getTotal(), entityPage.getPageNum(), entityPage.getPageSize());
 
         LOGGER.debug("success to list inlong stream info for groupId={}", request.getInlongGroupId());
-        return page;
+        return pageResult;
     }
 
     @Override
-    public PageInfo<InlongStreamInfo> listAll(InlongStreamPageRequest request) {
+    public PageResult<InlongStreamInfo> listAll(InlongStreamPageRequest request) {
         LOGGER.debug("begin to list full inlong stream page by {}", request);
         Preconditions.checkNotNull(request, "request is empty");
         String groupId = request.getInlongGroupId();
@@ -250,11 +250,11 @@ public class InlongStreamServiceImpl implements InlongStreamService {
             streamInfo.setSinkList(sinkList);
         }
 
-        PageInfo<InlongStreamInfo> pageInfo = new PageInfo<>(streamInfoList);
-        pageInfo.setTotal(pageInfo.getTotal());
+        PageResult<InlongStreamInfo> pageResult = new PageResult<>(streamInfoList, page.getTotal(),
+                page.getPageNum(), page.getPageSize());
 
         LOGGER.debug("success to list full inlong stream info by {}", request);
-        return pageInfo;
+        return pageResult;
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserService.java
index 0932d7c30..a4baeb95e 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserService.java
@@ -17,9 +17,9 @@
 
 package org.apache.inlong.manager.service.user;
 
-import com.github.pagehelper.PageInfo;
-import org.apache.inlong.manager.pojo.user.UserRequest;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.user.UserInfo;
+import org.apache.inlong.manager.pojo.user.UserRequest;
 
 /**
  * User service interface
@@ -56,7 +56,7 @@ public interface UserService {
      * @param request request
      * @return user info list
      */
-    PageInfo<UserInfo> list(UserRequest request);
+    PageResult<UserInfo> list(UserRequest request);
 
     /**
      * Update user info
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserServiceImpl.java
index 7f8198de8..83917f495 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.user;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.consts.InlongConstants;
@@ -34,6 +33,7 @@ import org.apache.inlong.manager.common.util.RSAUtils;
 import org.apache.inlong.manager.common.util.SHAUtils;
 import org.apache.inlong.manager.dao.entity.UserEntity;
 import org.apache.inlong.manager.dao.mapper.UserEntityMapper;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.user.UserInfo;
 import org.apache.inlong.manager.pojo.user.UserRequest;
 import org.slf4j.Logger;
@@ -148,18 +148,19 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
-    public PageInfo<UserInfo> list(UserRequest request) {
+    public PageResult<UserInfo> list(UserRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<UserEntity> entityPage = (Page<UserEntity>) userMapper.selectByCondition(request);
         List<UserInfo> userList = CommonBeanUtils.copyListProperties(entityPage, UserInfo::new);
 
         // Check whether the user account has expired
         userList.forEach(entity -> entity.setStatus(entity.getDueDate().after(new Date()) ? "valid" : "invalid"));
-        PageInfo<UserInfo> page = new PageInfo<>(userList);
-        page.setTotal(entityPage.getTotal());
 
-        LOGGER.debug("success to list users for request={}, result size={}", request, page.getTotal());
-        return page;
+        PageResult<UserInfo> pageResult = new PageResult<>(userList, entityPage.getTotal(),
+                entityPage.getPageNum(), entityPage.getPageSize());
+
+        LOGGER.debug("success to list users for request={}, result size={}", request, pageResult.getTotal());
+        return pageResult;
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java
index a37c5138a..cb56b72e0 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java
@@ -17,18 +17,18 @@
 
 package org.apache.inlong.manager.service.workflow;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.common.enums.ProcessName;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.workflow.ProcessCountRequest;
+import org.apache.inlong.manager.pojo.workflow.ProcessCountResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessDetailResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessRequest;
 import org.apache.inlong.manager.pojo.workflow.ProcessResponse;
-import org.apache.inlong.manager.pojo.workflow.ProcessCountRequest;
-import org.apache.inlong.manager.pojo.workflow.ProcessCountResponse;
 import org.apache.inlong.manager.pojo.workflow.TaskCountRequest;
+import org.apache.inlong.manager.pojo.workflow.TaskCountResponse;
 import org.apache.inlong.manager.pojo.workflow.TaskLogRequest;
 import org.apache.inlong.manager.pojo.workflow.TaskRequest;
 import org.apache.inlong.manager.pojo.workflow.TaskResponse;
-import org.apache.inlong.manager.pojo.workflow.TaskCountResponse;
 import org.apache.inlong.manager.pojo.workflow.WorkflowExecuteLog;
 import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
 import org.apache.inlong.manager.pojo.workflow.form.process.ProcessForm;
@@ -127,7 +127,7 @@ public interface WorkflowService {
      * @param query Query conditions.
      * @return Process list.
      */
-    PageInfo<ProcessResponse> listProcess(ProcessRequest query);
+    PageResult<ProcessResponse> listProcess(ProcessRequest query);
 
     /**
      * Get task list
@@ -135,7 +135,7 @@ public interface WorkflowService {
      * @param query Query conditions
      * @return List
      */
-    PageInfo<TaskResponse> listTask(TaskRequest query);
+    PageResult<TaskResponse> listTask(TaskRequest query);
 
     /**
      * Get process statistics
@@ -159,6 +159,6 @@ public interface WorkflowService {
      * @param query Query conditions
      * @return Execution log
      */
-    PageInfo<WorkflowExecuteLog> listTaskLogs(TaskLogRequest query);
+    PageResult<WorkflowExecuteLog> listTaskLogs(TaskLogRequest query);
 
 }
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImpl.java
index ec20712dd..d3d6bac9a 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImpl.java
@@ -27,6 +27,7 @@ import org.apache.inlong.manager.common.enums.TaskStatus;
 import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.dao.entity.WorkflowProcessEntity;
 import org.apache.inlong.manager.dao.entity.WorkflowTaskEntity;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.workflow.EventLogRequest;
 import org.apache.inlong.manager.pojo.workflow.ListenerExecuteLog;
 import org.apache.inlong.manager.pojo.workflow.ProcessCountRequest;
@@ -131,7 +132,7 @@ public class WorkflowServiceImpl implements WorkflowService {
     }
 
     @Override
-    public PageInfo<ProcessResponse> listProcess(ProcessRequest query) {
+    public PageResult<ProcessResponse> listProcess(ProcessRequest query) {
         PageHelper.startPage(query.getPageNum(), query.getPageSize());
         Page<WorkflowProcessEntity> result = (Page<WorkflowProcessEntity>) queryService.listProcessEntity(query);
         PageInfo<ProcessResponse> pageInfo = result.toPageInfo(entity -> {
@@ -142,7 +143,8 @@ public class WorkflowServiceImpl implements WorkflowService {
             return response;
         });
 
-        pageInfo.setTotal(result.getTotal());
+        PageResult<ProcessResponse> pageResult = new PageResult<>(pageInfo.getList(),
+                pageInfo.getTotal(), pageInfo.getPageNum(), pageInfo.getPageSize());
 
         if (query.getIncludeCurrentTask()) {
             TaskRequest taskQuery = TaskRequest.builder()
@@ -150,20 +152,20 @@ public class WorkflowServiceImpl implements WorkflowService {
                     .statusSet(Collections.singleton(TaskStatus.PENDING))
                     .build();
             PageHelper.startPage(0, 100);
-            pageInfo.getList().forEach(this.addCurrentTask(taskQuery));
+            pageResult.getList().forEach(this.addCurrentTask(taskQuery));
         }
-        return pageInfo;
+        return pageResult;
     }
 
     @Override
-    public PageInfo<TaskResponse> listTask(TaskRequest query) {
+    public PageResult<TaskResponse> listTask(TaskRequest query) {
         PageHelper.startPage(query.getPageNum(), query.getPageSize());
         Page<WorkflowTaskEntity> result = (Page<WorkflowTaskEntity>) queryService.listTaskEntity(query);
+
         PageInfo<TaskResponse> pageInfo = result.toPageInfo(WorkflowUtils::getTaskResponse);
         addShowInListForEachTask(pageInfo.getList());
-        pageInfo.setTotal(result.getTotal());
 
-        return pageInfo;
+        return new PageResult<>(pageInfo.getList(), pageInfo.getTotal(), pageInfo.getPageNum(), pageInfo.getPageSize());
     }
 
     @Override
@@ -177,7 +179,7 @@ public class WorkflowServiceImpl implements WorkflowService {
     }
 
     @Override
-    public PageInfo<WorkflowExecuteLog> listTaskLogs(TaskLogRequest query) {
+    public PageResult<WorkflowExecuteLog> listTaskLogs(TaskLogRequest query) {
         Preconditions.checkNotNull(query, "task execute log query params cannot be null");
 
         String groupId = query.getInlongGroupId();
@@ -229,8 +231,9 @@ public class WorkflowServiceImpl implements WorkflowService {
         }
 
         LOGGER.info("success to page list task execute logs for " + query);
-        pageInfo.setTotal(entityPage.getTotal());
-        return pageInfo;
+
+        return new PageResult<>(pageInfo.getList(), pageInfo.getTotal(), pageInfo.getPageNum(),
+                pageInfo.getPageSize());
     }
 
     private Consumer<ProcessResponse> addCurrentTask(TaskRequest query) {
diff --git a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceTest.java b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceTest.java
index 4d3e9bbdf..a7249e866 100644
--- a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceTest.java
+++ b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceTest.java
@@ -17,11 +17,10 @@
 
 package org.apache.inlong.manager.service.cluster;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.common.pojo.dataproxy.DataProxyNodeInfo;
 import org.apache.inlong.common.pojo.dataproxy.DataProxyNodeResponse;
-import org.apache.inlong.manager.common.enums.ClusterType;
 import org.apache.inlong.manager.common.consts.MQType;
+import org.apache.inlong.manager.common.enums.ClusterType;
 import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.ClusterNodeRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterNodeResponse;
@@ -29,6 +28,7 @@ import org.apache.inlong.manager.pojo.cluster.ClusterPageRequest;
 import org.apache.inlong.manager.pojo.cluster.dataproxy.DataProxyClusterRequest;
 import org.apache.inlong.manager.pojo.cluster.pulsar.PulsarClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.pulsar.PulsarClusterRequest;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.service.ServiceBaseTest;
 import org.junit.jupiter.api.Assertions;
@@ -75,7 +75,7 @@ public class InlongClusterServiceTest extends ServiceBaseTest {
     /**
      * List clusters by page.
      */
-    public PageInfo<ClusterInfo> listCluster(String type, String clusterTag) {
+    public PageResult<ClusterInfo> listCluster(String type, String clusterTag) {
         ClusterPageRequest request = new ClusterPageRequest();
         request.setType(type);
         request.setClusterTag(clusterTag);
@@ -118,7 +118,7 @@ public class InlongClusterServiceTest extends ServiceBaseTest {
     /**
      * List cluster nodes by page.
      */
-    public PageInfo<ClusterNodeResponse> listClusterNode(String type, String keyword, Integer parentId) {
+    public PageResult<ClusterNodeResponse> listClusterNode(String type, String keyword, Integer parentId) {
         ClusterPageRequest request = new ClusterPageRequest();
         request.setType(type);
         request.setKeyword(keyword);
@@ -159,7 +159,7 @@ public class InlongClusterServiceTest extends ServiceBaseTest {
         Assertions.assertNotNull(id);
 
         // list cluster
-        PageInfo<ClusterInfo> listCluster = this.listCluster(ClusterType.PULSAR, clusterTag);
+        PageResult<ClusterInfo> listCluster = this.listCluster(ClusterType.PULSAR, clusterTag);
         Assertions.assertTrue(listCluster.getList().size() > 0);
         ClusterInfo clusterInfo = listCluster.getList().get(0);
         PulsarClusterInfo pulsarCluster = (PulsarClusterInfo) clusterInfo;
@@ -181,7 +181,7 @@ public class InlongClusterServiceTest extends ServiceBaseTest {
         Assertions.assertNotNull(nodeId);
 
         // list cluster node
-        PageInfo<ClusterNodeResponse> listNode = this.listClusterNode(ClusterType.PULSAR, ip, id);
+        PageResult<ClusterNodeResponse> listNode = this.listClusterNode(ClusterType.PULSAR, ip, id);
         Assertions.assertEquals(listNode.getTotal(), 1);
 
         // update cluster node
diff --git a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/impl/DataNodeServiceTest.java b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/impl/DataNodeServiceTest.java
index 41936336b..428dd4f63 100644
--- a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/impl/DataNodeServiceTest.java
+++ b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/impl/DataNodeServiceTest.java
@@ -17,8 +17,8 @@
 
 package org.apache.inlong.manager.service.core.impl;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.common.consts.DataNodeType;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.node.DataNodeInfo;
 import org.apache.inlong.manager.pojo.node.DataNodePageRequest;
 import org.apache.inlong.manager.pojo.node.hive.HiveDataNodeRequest;
@@ -56,7 +56,7 @@ public class DataNodeServiceTest extends ServiceBaseTest {
     /**
      * Get data node list info.
      */
-    public PageInfo<DataNodeInfo> listOpt(String type, String name) {
+    public PageResult<DataNodeInfo> listOpt(String type, String name) {
         DataNodePageRequest request = new DataNodePageRequest();
         request.setType(type);
         request.setName(name);
@@ -104,7 +104,7 @@ public class DataNodeServiceTest extends ServiceBaseTest {
         Assertions.assertEquals(type, dataNodeInfo.getType());
 
         // test get data node list
-        PageInfo<DataNodeInfo> listDataNode = this.listOpt(type, nodeName);
+        PageResult<DataNodeInfo> listDataNode = this.listOpt(type, nodeName);
         Assertions.assertEquals(listDataNode.getTotal(), 1);
 
         // test update data node
diff --git a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowApproverServiceImplTest.java b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowApproverServiceImplTest.java
index 59e762f00..1bbc4cd26 100644
--- a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowApproverServiceImplTest.java
+++ b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowApproverServiceImplTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.workflow;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.workflow.ApproverPageRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverResponse;
 import org.apache.inlong.manager.service.ServiceBaseTest;
@@ -37,9 +37,9 @@ public class WorkflowApproverServiceImplTest extends ServiceBaseTest {
     @Test
     public void testListAndGet() {
         // The workflow approvers was init by SQL file.
-        PageInfo<ApproverResponse> approverList = workflowApproverService.listByCondition(
+        PageResult<ApproverResponse> approverList = workflowApproverService.listByCondition(
                 ApproverPageRequest.builder().build());
-        Assertions.assertTrue(approverList.getSize() > 0);
+        Assertions.assertTrue(approverList.getList().size() > 0);
 
         Integer id = approverList.getList().get(0).getId();
         ApproverResponse approverResponse = workflowApproverService.get(id);
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/ConsumptionController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/ConsumptionController.java
index 56c3660c7..7207ce726 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/ConsumptionController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/ConsumptionController.java
@@ -17,11 +17,11 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionInfo;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionListVo;
@@ -64,7 +64,7 @@ public class ConsumptionController {
 
     @GetMapping("/consumption/list")
     @ApiOperation(value = "List data consumptions")
-    public Response<PageInfo<ConsumptionListVo>> list(ConsumptionQuery query) {
+    public Response<PageResult<ConsumptionListVo>> list(ConsumptionQuery query) {
         query.setUsername(LoginUserUtils.getLoginUser().getName());
         return Response.success(consumptionService.list(query));
     }
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/DataNodeController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/DataNodeController.java
index 802181c00..bd2d81933 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/DataNodeController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/DataNodeController.java
@@ -17,12 +17,12 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
 import org.apache.inlong.manager.common.validation.UpdateValidation;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.node.DataNodeInfo;
 import org.apache.inlong.manager.pojo.node.DataNodePageRequest;
@@ -71,7 +71,7 @@ public class DataNodeController {
 
     @PostMapping(value = "/node/list")
     @ApiOperation(value = "List data node")
-    public Response<PageInfo<DataNodeInfo>> list(@RequestBody DataNodePageRequest request) {
+    public Response<PageResult<DataNodeInfo>> list(@RequestBody DataNodePageRequest request) {
         return Response.success(dataNodeService.list(request));
     }
 
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/HeartbeatController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/HeartbeatController.java
index cf420ebf9..e39be0181 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/HeartbeatController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/HeartbeatController.java
@@ -17,9 +17,9 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.heartbeat.ComponentHeartbeatResponse;
 import org.apache.inlong.manager.pojo.heartbeat.GroupHeartbeatResponse;
@@ -64,21 +64,21 @@ public class HeartbeatController {
 
     @RequestMapping(value = "/heartbeat/component/list", method = RequestMethod.POST)
     @ApiOperation(value = "List component heartbeats")
-    public Response<PageInfo<ComponentHeartbeatResponse>> listComponentHeartbeat(
+    public Response<PageResult<ComponentHeartbeatResponse>> listComponentHeartbeat(
             @RequestBody HeartbeatPageRequest request) {
         return Response.success(heartbeatService.listComponentHeartbeat(request));
     }
 
     @RequestMapping(value = "/heartbeat/group/list", method = RequestMethod.POST)
     @ApiOperation(value = "List group heartbeats")
-    public Response<PageInfo<GroupHeartbeatResponse>> listGroupHeartbeat(@RequestBody HeartbeatPageRequest request) {
+    public Response<PageResult<GroupHeartbeatResponse>> listGroupHeartbeat(@RequestBody HeartbeatPageRequest request) {
         return Response.success(heartbeatService.listGroupHeartbeat(request));
     }
 
     @RequestMapping(value = "/heartbeat/stream/list", method = RequestMethod.POST)
     @ApiOperation(value = "List stream heartbeats")
-    public Response<PageInfo<StreamHeartbeatResponse>> listStreamHeartbeat(@RequestBody HeartbeatPageRequest request) {
-        return Response.success(heartbeatService.listStreamHeartbeat(request));
+    public Response<PageResult<StreamHeartbeatResponse>> listStreamHeartbeat(@RequestBody HeartbeatPageRequest req) {
+        return Response.success(heartbeatService.listStreamHeartbeat(req));
     }
 
 }
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
index 35d3f3313..99a529593 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
@@ -17,11 +17,11 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
+import org.apache.inlong.manager.common.validation.UpdateValidation;
 import org.apache.inlong.manager.pojo.cluster.BindTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.ClusterNodeRequest;
@@ -31,8 +31,8 @@ import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
-import org.apache.inlong.manager.common.validation.UpdateValidation;
 import org.apache.inlong.manager.pojo.user.UserRoleCode;
 import org.apache.inlong.manager.service.cluster.InlongClusterService;
 import org.apache.inlong.manager.service.operationlog.OperationLog;
@@ -79,7 +79,7 @@ public class InlongClusterController {
 
     @PostMapping(value = "/cluster/tag/list")
     @ApiOperation(value = "List cluster tags")
-    public Response<PageInfo<ClusterTagResponse>> listTag(@RequestBody ClusterTagPageRequest request) {
+    public Response<PageResult<ClusterTagResponse>> listTag(@RequestBody ClusterTagPageRequest request) {
         request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
         return Response.success(clusterService.listTag(request));
     }
@@ -120,7 +120,7 @@ public class InlongClusterController {
 
     @PostMapping(value = "/cluster/list")
     @ApiOperation(value = "List clusters")
-    public Response<PageInfo<ClusterInfo>> list(@RequestBody ClusterPageRequest request) {
+    public Response<PageResult<ClusterInfo>> list(@RequestBody ClusterPageRequest request) {
         return Response.success(clusterService.list(request));
     }
 
@@ -167,7 +167,7 @@ public class InlongClusterController {
 
     @PostMapping(value = "/cluster/node/list")
     @ApiOperation(value = "List cluster nodes")
-    public Response<PageInfo<ClusterNodeResponse>> listNode(@RequestBody ClusterPageRequest request) {
+    public Response<PageResult<ClusterNodeResponse>> listNode(@RequestBody ClusterPageRequest request) {
         String currentUser = LoginUserUtils.getLoginUser().getName();
         return Response.success(clusterService.listNode(request, currentUser));
     }
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java
index 078ab48ff..057dc8623 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java
@@ -17,14 +17,14 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
 import org.apache.inlong.manager.common.enums.UserTypeEnum;
-import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.common.validation.UpdateValidation;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupCountResponse;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
@@ -76,7 +76,7 @@ public class InlongGroupController {
 
     @RequestMapping(value = "/group/list", method = RequestMethod.POST)
     @ApiOperation(value = "Get inlong group list by paginating")
-    public Response<PageInfo<InlongGroupBriefInfo>> listBrief(@RequestBody InlongGroupPageRequest request) {
+    public Response<PageResult<InlongGroupBriefInfo>> listBrief(@RequestBody InlongGroupPageRequest request) {
         request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
         request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserTypeEnum.ADMIN.name()));
         return Response.success(groupService.listBrief(request));
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongStreamController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongStreamController.java
index df57e3a6c..cff3a1f46 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongStreamController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongStreamController.java
@@ -17,12 +17,12 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.stream.InlongStreamBriefInfo;
 import org.apache.inlong.manager.pojo.stream.InlongStreamInfo;
@@ -85,7 +85,7 @@ public class InlongStreamController {
 
     @RequestMapping(value = "/stream/list", method = RequestMethod.POST)
     @ApiOperation(value = "Get inlong stream brief info by paginating")
-    public Response<PageInfo<InlongStreamBriefInfo>> listByCondition(@RequestBody InlongStreamPageRequest request) {
+    public Response<PageResult<InlongStreamBriefInfo>> listByCondition(@RequestBody InlongStreamPageRequest request) {
         request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
         request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserRoleCode.ADMIN));
         return Response.success(streamService.listBrief(request));
@@ -93,7 +93,7 @@ public class InlongStreamController {
 
     @RequestMapping(value = "/stream/listAll", method = RequestMethod.POST)
     @ApiOperation(value = "Get inlong stream with all sources and sinks by paginating")
-    public Response<PageInfo<InlongStreamInfo>> listAllWithGroupId(@RequestBody InlongStreamPageRequest request) {
+    public Response<PageResult<InlongStreamInfo>> listAllWithGroupId(@RequestBody InlongStreamPageRequest request) {
         request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
         request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserRoleCode.ADMIN));
         return Response.success(streamService.listAll(request));
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSinkController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSinkController.java
index de2291aaa..3ed3b94ee 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSinkController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSinkController.java
@@ -17,13 +17,13 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
-import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.common.validation.UpdateValidation;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.sink.SinkPageRequest;
 import org.apache.inlong.manager.pojo.sink.SinkRequest;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
@@ -65,7 +65,7 @@ public class StreamSinkController {
 
     @RequestMapping(value = "/sink/list", method = RequestMethod.GET)
     @ApiOperation(value = "Get stream sink list by paginating")
-    public Response<PageInfo<? extends StreamSink>> listByCondition(SinkPageRequest request) {
+    public Response<PageResult<? extends StreamSink>> listByCondition(SinkPageRequest request) {
         return Response.success(sinkService.listByCondition(request));
     }
 
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSourceController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSourceController.java
index 99bae8524..1a297fd71 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSourceController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSourceController.java
@@ -17,13 +17,13 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
-import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.common.validation.UpdateValidation;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.source.SourcePageRequest;
 import org.apache.inlong.manager.pojo.source.SourceRequest;
 import org.apache.inlong.manager.pojo.source.StreamSource;
@@ -65,7 +65,7 @@ public class StreamSourceController {
 
     @RequestMapping(value = "/source/list", method = RequestMethod.GET)
     @ApiOperation(value = "Get stream source list by paginating")
-    public Response<PageInfo<? extends StreamSource>> listByCondition(SourcePageRequest request) {
+    public Response<PageResult<? extends StreamSource>> listByCondition(SourcePageRequest request) {
         return Response.success(sourceService.listByCondition(request));
     }
 
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/UserController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/UserController.java
index cc54953ae..1aacb11f5 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/UserController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/UserController.java
@@ -17,9 +17,9 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.user.UserInfo;
 import org.apache.inlong.manager.pojo.user.UserRequest;
@@ -73,7 +73,7 @@ public class UserController {
 
     @PostMapping("/user/listAll")
     @ApiOperation(value = "List all users")
-    public Response<PageInfo<UserInfo>> list(@RequestBody UserRequest request) {
+    public Response<PageResult<UserInfo>> list(@RequestBody UserRequest request) {
         return Response.success(userService.list(request));
     }
 
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowApproverController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowApproverController.java
index 05d739af8..6b0ddb3f4 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowApproverController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowApproverController.java
@@ -17,12 +17,12 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
 import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.ApproverPageRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverRequest;
@@ -66,7 +66,7 @@ public class WorkflowApproverController {
 
     @GetMapping("/workflow/approver/list")
     @ApiOperation(value = "List workflow approvers")
-    public Response<PageInfo<ApproverResponse>> listByCondition(ApproverPageRequest request) {
+    public Response<PageResult<ApproverResponse>> listByCondition(ApproverPageRequest request) {
         request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
         request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserTypeEnum.ADMIN.name()));
         return Response.success(workflowApproverService.listByCondition(request));
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowController.java
index 10648f771..38cef3733 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowController.java
@@ -17,13 +17,13 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.inlong.manager.common.enums.OperationType;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.ProcessCountRequest;
 import org.apache.inlong.manager.pojo.workflow.ProcessCountResponse;
@@ -36,11 +36,11 @@ import org.apache.inlong.manager.pojo.workflow.TaskLogRequest;
 import org.apache.inlong.manager.pojo.workflow.TaskRequest;
 import org.apache.inlong.manager.pojo.workflow.TaskResponse;
 import org.apache.inlong.manager.pojo.workflow.WorkflowApprovalRequest;
+import org.apache.inlong.manager.pojo.workflow.WorkflowExecuteLog;
+import org.apache.inlong.manager.pojo.workflow.WorkflowOperationRequest;
 import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
 import org.apache.inlong.manager.service.operationlog.OperationLog;
 import org.apache.inlong.manager.service.user.LoginUserUtils;
-import org.apache.inlong.manager.pojo.workflow.WorkflowExecuteLog;
-import org.apache.inlong.manager.pojo.workflow.WorkflowOperationRequest;
 import org.apache.inlong.manager.service.workflow.WorkflowService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -141,14 +141,14 @@ public class WorkflowController {
 
     @GetMapping("/workflow/listProcess")
     @ApiOperation(value = "Get process list by paginating")
-    public Response<PageInfo<ProcessResponse>> listProcess(ProcessRequest query) {
+    public Response<PageResult<ProcessResponse>> listProcess(ProcessRequest query) {
         query.setApplicant(LoginUserUtils.getLoginUser().getName());
         return Response.success(workflowService.listProcess(query));
     }
 
     @GetMapping("/workflow/listTask")
     @ApiOperation(value = "Get task list by paginating")
-    public Response<PageInfo<TaskResponse>> listTask(TaskRequest query) {
+    public Response<PageResult<TaskResponse>> listTask(TaskRequest query) {
         query.setApprover(LoginUserUtils.getLoginUser().getName());
         return Response.success(workflowService.listTask(query));
     }
@@ -169,7 +169,7 @@ public class WorkflowController {
 
     @GetMapping("/workflow/listTaskLogs")
     @ApiOperation(value = "Get task execution logs")
-    public Response<PageInfo<WorkflowExecuteLog>> listTaskLogs(TaskLogRequest query) {
+    public Response<PageResult<WorkflowExecuteLog>> listTaskLogs(TaskLogRequest query) {
         return Response.success(workflowService.listTaskLogs(query));
     }
 
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowEventController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowEventController.java
index 31c59e628..5d1d513d9 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowEventController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowEventController.java
@@ -17,13 +17,13 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.apache.inlong.manager.common.enums.OperationType;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.EventLogRequest;
 import org.apache.inlong.manager.pojo.workflow.EventLogResponse;
@@ -59,7 +59,7 @@ public class WorkflowEventController {
 
     @GetMapping("/workflow/event/list")
     @ApiOperation(value = "Get event list by paginating")
-    public Response<PageInfo<EventLogResponse>> list(EventLogRequest query) {
+    public Response<PageResult<EventLogResponse>> list(EventLogRequest query) {
         return Response.success(workflowEventService.list(query));
     }
 
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenClusterController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenClusterController.java
index 71688eef9..8bee04869 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenClusterController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenClusterController.java
@@ -17,12 +17,12 @@
 
 package org.apache.inlong.manager.web.controller.openapi;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.ClusterPageRequest;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.service.cluster.InlongClusterService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -53,7 +53,7 @@ public class OpenClusterController {
 
     @PostMapping(value = "/cluster/list")
     @ApiOperation(value = "Get clusters by paginating")
-    public Response<PageInfo<ClusterInfo>> list(@RequestBody ClusterPageRequest request) {
+    public Response<PageResult<ClusterInfo>> list(@RequestBody ClusterPageRequest request) {
         return Response.success(clusterService.list(request));
     }
 


[inlong] 03/09: [INLONG-5675][Agent] Support custom fixed ip for Agent (#5677)

Posted by do...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch release-1.3.0
in repository https://gitbox.apache.org/repos/asf/inlong.git

commit 9e4d9296e9ff250d3600892a96b6b66c48b174a6
Author: ganfengtan <Ga...@users.noreply.github.com>
AuthorDate: Thu Aug 25 10:14:59 2022 +0800

    [INLONG-5675][Agent] Support custom fixed ip for Agent (#5677)
---
 .../main/java/org/apache/inlong/agent/constant/AgentConstants.java  | 2 ++
 .../src/main/java/org/apache/inlong/agent/utils/AgentUtils.java     | 4 ++++
 .../test/java/org/apache/inlong/agent/common/TestAgentUtils.java    | 6 ++++++
 inlong-agent/agent-common/src/test/resources/agent.properties       | 1 +
 inlong-agent/agent-docker/agent-docker.sh                           | 1 +
 inlong-agent/conf/agent.properties                                  | 1 +
 6 files changed, 15 insertions(+)

diff --git a/inlong-agent/agent-common/src/main/java/org/apache/inlong/agent/constant/AgentConstants.java b/inlong-agent/agent-common/src/main/java/org/apache/inlong/agent/constant/AgentConstants.java
index 2c1380f52..6af336097 100755
--- a/inlong-agent/agent-common/src/main/java/org/apache/inlong/agent/constant/AgentConstants.java
+++ b/inlong-agent/agent-common/src/main/java/org/apache/inlong/agent/constant/AgentConstants.java
@@ -169,6 +169,8 @@ public class AgentConstants {
     public static final String AGENT_LOCAL_IP = "agent.local.ip";
     public static final String DEFAULT_LOCAL_IP = "127.0.0.1";
 
+    public static final String CUSTOM_FIXED_IP = "agent.custom.fixed.ip";
+
     public static final String AGENT_CLUSTER_NAME = "agent.cluster.name";
     public static final String AGENT_CLUSTER_TAG = "agent.cluster.tag";
     public static final String AGENT_CLUSTER_IN_CHARGES = "agent.cluster.inCharges";
diff --git a/inlong-agent/agent-common/src/main/java/org/apache/inlong/agent/utils/AgentUtils.java b/inlong-agent/agent-common/src/main/java/org/apache/inlong/agent/utils/AgentUtils.java
index 20ef03e31..8aa8cbdcd 100644
--- a/inlong-agent/agent-common/src/main/java/org/apache/inlong/agent/utils/AgentUtils.java
+++ b/inlong-agent/agent-common/src/main/java/org/apache/inlong/agent/utils/AgentUtils.java
@@ -55,6 +55,7 @@ import static org.apache.inlong.agent.constant.AgentConstants.AGENT_ENABLE_OOM_E
 import static org.apache.inlong.agent.constant.AgentConstants.AGENT_LOCAL_IP;
 import static org.apache.inlong.agent.constant.AgentConstants.AGENT_LOCAL_UUID;
 import static org.apache.inlong.agent.constant.AgentConstants.AGENT_LOCAL_UUID_OPEN;
+import static org.apache.inlong.agent.constant.AgentConstants.CUSTOM_FIXED_IP;
 import static org.apache.inlong.agent.constant.AgentConstants.DEFAULT_AGENT_LOCAL_UUID_OPEN;
 import static org.apache.inlong.agent.constant.AgentConstants.DEFAULT_ENABLE_OOM_EXIT;
 import static org.apache.inlong.agent.constant.AgentConstants.DEFAULT_LOCAL_IP;
@@ -348,6 +349,9 @@ public class AgentUtils {
      * Check agent ip from manager
      */
     public static String fetchLocalIp() {
+        if (StringUtils.isNoneBlank(AgentConfiguration.getAgentConf().get(CUSTOM_FIXED_IP, null))) {
+            return AgentConfiguration.getAgentConf().get(CUSTOM_FIXED_IP);
+        }
         return AgentConfiguration.getAgentConf().get(AGENT_LOCAL_IP, getLocalIp());
     }
 
diff --git a/inlong-agent/agent-common/src/test/java/org/apache/inlong/agent/common/TestAgentUtils.java b/inlong-agent/agent-common/src/test/java/org/apache/inlong/agent/common/TestAgentUtils.java
index 2c9f92137..abc41410f 100755
--- a/inlong-agent/agent-common/src/test/java/org/apache/inlong/agent/common/TestAgentUtils.java
+++ b/inlong-agent/agent-common/src/test/java/org/apache/inlong/agent/common/TestAgentUtils.java
@@ -89,4 +89,10 @@ public class TestAgentUtils {
         Assert.assertNotEquals("127.0.0.1", AgentUtils.fetchLocalIp());
         LOGGER.info("local ip is {}", AgentUtils.fetchLocalIp());
     }
+
+    @Test
+    public void testCustomFixedIp() {
+        String ip = AgentUtils.fetchLocalIp();
+        Assert.assertNotEquals("127.0.0.1",ip);
+    }
 }
diff --git a/inlong-agent/agent-common/src/test/resources/agent.properties b/inlong-agent/agent-common/src/test/resources/agent.properties
index fee62f02f..fa95d663e 100755
--- a/inlong-agent/agent-common/src/test/resources/agent.properties
+++ b/inlong-agent/agent-common/src/test/resources/agent.properties
@@ -23,6 +23,7 @@ job.thread.running.core=10
 agent.manager.vip.http.host=127.0.0.1
 agent.manager.vip.http.port=8083
 agent.fetcher.classname=org.apache.inlong.agent.plugin.fetcher.ManagerFetcher
+agent.custom.fixed.ip=
 
 # metrics
 metricDomains=Agent
diff --git a/inlong-agent/agent-docker/agent-docker.sh b/inlong-agent/agent-docker/agent-docker.sh
index 12e419b2a..f6ecc9a21 100644
--- a/inlong-agent/agent-docker/agent-docker.sh
+++ b/inlong-agent/agent-docker/agent-docker.sh
@@ -38,6 +38,7 @@ agent.cluster.name=$CLUSTER_NAME
 agent.cluster.inCharges=$CLUSTER_IN_CHARGES
 agent.manager.auth.secretId=$MANAGER_OPENAPI_AUTH_ID
 agent.manager.auth.secretKey=$MANAGER_OPENAPI_AUTH_KEY
+agent.custom.fixed.ip=$CUSTOM_FIXED_IP
 EOF
 # start
 bash +x ${file_path}/bin/agent.sh start
diff --git a/inlong-agent/conf/agent.properties b/inlong-agent/conf/agent.properties
index 8f68e8276..dc6785f32 100755
--- a/inlong-agent/conf/agent.properties
+++ b/inlong-agent/conf/agent.properties
@@ -51,6 +51,7 @@ agent.local.ip=127.0.0.1
 agent.local.uuid=
 agent.local.uuid.open=false
 agent.enable.oom.exit=false
+agent.custom.fixed.ip=
 
 ###########################
 # job/job manager config


[inlong] 08/09: [INLONG-5691][Manager] Remove the append operation for agent IPs (#5692)

Posted by do...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch release-1.3.0
in repository https://gitbox.apache.org/repos/asf/inlong.git

commit 1f97f202108731d7bf31381d3f3e404fd46fabc2
Author: woofyzhao <49...@qq.com>
AuthorDate: Thu Aug 25 16:04:36 2022 +0800

    [INLONG-5691][Manager] Remove the append operation for agent IPs (#5692)
---
 .../manager/dao/mapper/StreamSourceEntityMapper.java |  2 --
 .../resources/mappers/StreamSourceEntityMapper.xml   |  5 -----
 .../manager/service/core/impl/AgentServiceImpl.java  | 20 ++++++++------------
 .../src/main/resources/h2/apache_inlong_manager.sql  |  5 +++--
 .../manager-web/sql/apache_inlong_manager.sql        |  5 +++--
 5 files changed, 14 insertions(+), 23 deletions(-)

diff --git a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/StreamSourceEntityMapper.java b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/StreamSourceEntityMapper.java
index eabd61220..3b0144d3d 100644
--- a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/StreamSourceEntityMapper.java
+++ b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/StreamSourceEntityMapper.java
@@ -129,8 +129,6 @@ public interface StreamSourceEntityMapper {
 
     int updateSnapshot(StreamSourceEntity entity);
 
-    int appendAgentIp(@Param("id") Integer id, @Param("agentIp") String agentIp);
-
     /**
      * Physical delete stream sources.
      */
diff --git a/inlong-manager/manager-dao/src/main/resources/mappers/StreamSourceEntityMapper.xml b/inlong-manager/manager-dao/src/main/resources/mappers/StreamSourceEntityMapper.xml
index 32f8c56ef..c1b955f57 100644
--- a/inlong-manager/manager-dao/src/main/resources/mappers/StreamSourceEntityMapper.xml
+++ b/inlong-manager/manager-dao/src/main/resources/mappers/StreamSourceEntityMapper.xml
@@ -390,11 +390,6 @@
             modify_time = modify_time
         where id = #{id,jdbcType=INTEGER}
     </update>
-    <update id="appendAgentIp">
-        update stream_source
-        set agent_ip = IF(agent_ip is NULL or agent_ip = '', #{agentIp,jdbcType=VARCHAR}, CONCAT(agent_ip, ',', #{agentIp}))
-        where id = #{id,jdbcType=INTEGER}
-    </update>
 
     <delete id="deleteByRelatedId">
         delete
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/AgentServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/AgentServiceImpl.java
index 94ec64d61..91b3f7238 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/AgentServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/AgentServiceImpl.java
@@ -30,12 +30,12 @@ import org.apache.inlong.common.pojo.agent.DataConfig;
 import org.apache.inlong.common.pojo.agent.TaskRequest;
 import org.apache.inlong.common.pojo.agent.TaskResult;
 import org.apache.inlong.common.pojo.agent.TaskSnapshotRequest;
-import org.apache.inlong.manager.common.consts.InlongConstants;
 import org.apache.inlong.manager.common.consts.SourceType;
 import org.apache.inlong.manager.common.enums.SourceStatus;
 import org.apache.inlong.manager.common.exceptions.BusinessException;
 import org.apache.inlong.manager.common.util.CommonBeanUtils;
 import org.apache.inlong.manager.common.util.JsonUtils;
+import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.dao.entity.InlongStreamEntity;
 import org.apache.inlong.manager.dao.entity.StreamSourceEntity;
 import org.apache.inlong.manager.dao.mapper.DataSourceCmdConfigEntityMapper;
@@ -212,6 +212,8 @@ public class AgentServiceImpl implements AgentService {
         final String agentIp = taskRequest.getAgentIp();
         final String agentClusterName = taskRequest.getClusterName();
         final String uuid = taskRequest.getUuid();
+        Preconditions.checkTrue(StringUtils.isNotBlank(agentIp) || StringUtils.isNotBlank(agentClusterName),
+                "both agent ip and cluster name are blank when fetching file task");
         List<StreamSourceEntity> sourceEntities = sourceMapper.selectByAgentIpOrCluster(needAddStatusList,
                 Lists.newArrayList(SourceType.FILE), agentIp, agentClusterName,TASK_FETCH_SIZE * 10);
         List<DataConfig> fileTasks = Lists.newArrayList();
@@ -235,18 +237,15 @@ public class AgentServiceImpl implements AgentService {
                 continue;
             }
 
-            // Cluster name is not blank, split task if necessary
-            // The agent ip field of the entity holds the ip list of the agents that has already been issued
+            // Cluster name is not blank, split subtask if necessary
+            // The template task's id is assigned to the subtask's template id field
             if (StringUtils.isNotBlank(destClusterName) && destClusterName.equals(agentClusterName)
                     && Objects.isNull(sourceEntity.getTemplateId())) {
 
                 // Is the task already fetched by this agent ?
-                if (StringUtils.isNotBlank(sourceEntity.getAgentIp())) {
-                    if (Arrays.asList(sourceEntity.getAgentIp().split(InlongConstants.COMMA)).contains(agentIp)) {
-                        LOGGER.debug("Task={} has already been fetched by agentIP={}", sourceEntity.getExtParams(),
-                                agentIp);
-                        continue;
-                    }
+                List<StreamSourceEntity> subSources = sourceMapper.selectByTemplateId(sourceEntity.getId());
+                if (subSources.stream().anyMatch(subSource -> subSource.getAgentIp().equals(agentIp))) {
+                    continue;
                 }
 
                 // If not, clone a sub task for the new agent
@@ -264,9 +263,6 @@ public class AgentServiceImpl implements AgentService {
                 if (sourceMapper.insert(fileEntity) > 0) {
                     fileTasks.add(getDataConfig(fileEntity, op));
                 }
-
-                // Append new agent ip
-                sourceMapper.appendAgentIp(sourceEntity.getId(), agentIp);
             }
             if (fileTasks.size() >= TASK_FETCH_SIZE) {
                 break;
diff --git a/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql b/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
index 2d7753dfb..99a22413c 100644
--- a/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
+++ b/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
@@ -382,7 +382,7 @@ CREATE TABLE IF NOT EXISTS `stream_source`
     `source_name`         varchar(128) NOT NULL DEFAULT '' COMMENT 'source_name',
     `source_type`         varchar(20)           DEFAULT '0' COMMENT 'Source type, including: FILE, DB, etc',
     `template_id`         int(11)      DEFAULT NULL COMMENT 'Id of the template task this agent belongs to',
-    `agent_ip`            varchar(40)           DEFAULT NULL COMMENT 'Ip of the agent running the task',
+    `agent_ip`            varchar(40)           DEFAULT NULL COMMENT 'Ip of the agent running the task, NULL if this is a template task',
     `uuid`                varchar(30)           DEFAULT NULL COMMENT 'Mac uuid of the agent running the task',
     `data_node_name`      varchar(128)          DEFAULT NULL COMMENT 'Node name, which links to data_node table',
     `inlong_cluster_name` varchar(128)          DEFAULT NULL COMMENT 'Cluster name of the agent running the task',
@@ -401,7 +401,8 @@ CREATE TABLE IF NOT EXISTS `stream_source`
     PRIMARY KEY (`id`),
     UNIQUE KEY `unique_source_name` (`inlong_group_id`, `inlong_stream_id`, `source_name`, `is_deleted`),
     KEY `source_status_index` (`status`, `is_deleted`),
-    KEY `source_agent_ip_index` (`agent_ip`, `is_deleted`)
+    KEY `source_agent_ip_index` (`agent_ip`, `is_deleted`),
+    KEY `template_id_index` (`template_id`)
 );
 
 -- ----------------------------
diff --git a/inlong-manager/manager-web/sql/apache_inlong_manager.sql b/inlong-manager/manager-web/sql/apache_inlong_manager.sql
index 0c249a2ff..e7bbf585b 100644
--- a/inlong-manager/manager-web/sql/apache_inlong_manager.sql
+++ b/inlong-manager/manager-web/sql/apache_inlong_manager.sql
@@ -403,7 +403,7 @@ CREATE TABLE IF NOT EXISTS `stream_source`
     `source_name`         varchar(128) NOT NULL DEFAULT '' COMMENT 'source_name',
     `source_type`         varchar(20)           DEFAULT '0' COMMENT 'Source type, including: FILE, DB, etc',
     `template_id`         int(11)      DEFAULT NULL COMMENT 'Id of the template task this agent belongs to',
-    `agent_ip`            varchar(40)           DEFAULT NULL COMMENT 'Ip of the agent running the task',
+    `agent_ip`            varchar(40)           DEFAULT NULL COMMENT 'Ip of the agent running the task, NULL if this is a template task',
     `uuid`                varchar(30)           DEFAULT NULL COMMENT 'Mac uuid of the agent running the task',
     `data_node_name`      varchar(128)          DEFAULT NULL COMMENT 'Node name, which links to data_node table',
     `inlong_cluster_name` varchar(128)          DEFAULT NULL COMMENT 'Cluster name of the agent running the task',
@@ -422,7 +422,8 @@ CREATE TABLE IF NOT EXISTS `stream_source`
     PRIMARY KEY (`id`),
     UNIQUE KEY `unique_source_name` (`inlong_group_id`, `inlong_stream_id`, `source_name`, `is_deleted`),
     KEY `source_status_index` (`status`, `is_deleted`),
-    KEY `source_agent_ip_index` (`agent_ip`, `is_deleted`)
+    KEY `source_agent_ip_index` (`agent_ip`, `is_deleted`),
+    KEY `template_id_index` (`template_id`)
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COMMENT ='Stream source table';
 


[inlong] 05/09: [INLONG-5685][Dashboard] Fix the error of setting approvers params (#5686)

Posted by do...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch release-1.3.0
in repository https://gitbox.apache.org/repos/asf/inlong.git

commit 323d4a31d70a1ab5537335c37303dc0f81a1260a
Author: Daniel <le...@apache.org>
AuthorDate: Thu Aug 25 11:18:11 2022 +0800

    [INLONG-5685][Dashboard] Fix the error of setting approvers params (#5686)
---
 inlong-dashboard/src/pages/ProcessManagement/DetailModal.tsx | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/inlong-dashboard/src/pages/ProcessManagement/DetailModal.tsx b/inlong-dashboard/src/pages/ProcessManagement/DetailModal.tsx
index 757bcf3fd..0cc176f34 100644
--- a/inlong-dashboard/src/pages/ProcessManagement/DetailModal.tsx
+++ b/inlong-dashboard/src/pages/ProcessManagement/DetailModal.tsx
@@ -59,6 +59,10 @@ const Comp: React.FC<Props> = ({ id, ...modalProps }) => {
     }),
     {
       manual: true,
+      formatResult: result => ({
+        ...result,
+        approvers: result.approvers?.split(','),
+      }),
       onSuccess: result => {
         form.setFieldsValue(result);
       },
@@ -72,11 +76,13 @@ const Comp: React.FC<Props> = ({ id, ...modalProps }) => {
       values.id = id;
       values.version = savedData?.version;
     }
-    console.log(values, 'values');
     await request({
       url: isUpdate ? '/workflow/approver/update' : '/workflow/approver/save',
       method: 'POST',
-      data: values,
+      data: {
+        ...values,
+        approvers: values.approvers?.join(','),
+      },
     });
     await modalProps?.onOk(values);
     message.success(i18n.t('basic.OperatingSuccess'));


[inlong] 07/09: [INLONG-5680][Manager][Sort] Fix field relation object generate error (#5693)

Posted by do...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch release-1.3.0
in repository https://gitbox.apache.org/repos/asf/inlong.git

commit 34cbdfab0db0894a0b53ebed0183ef4f3c526bfc
Author: Xin Gong <ge...@gmail.com>
AuthorDate: Thu Aug 25 15:06:46 2022 +0800

    [INLONG-5680][Manager][Sort] Fix field relation object generate error (#5693)
---
 .../manager/pojo/sort/util/FieldRelationUtils.java | 24 ++++++++++------------
 .../manager/pojo/sort/util/LoadNodeUtils.java      | 11 +++++-----
 .../inlong/sort/parser/impl/FlinkSqlParser.java    |  8 +++-----
 3 files changed, 19 insertions(+), 24 deletions(-)

diff --git a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/FieldRelationUtils.java b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/FieldRelationUtils.java
index 870ad42ee..4f8df5f14 100644
--- a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/FieldRelationUtils.java
+++ b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/FieldRelationUtils.java
@@ -20,9 +20,9 @@ package org.apache.inlong.manager.pojo.sort.util;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
-import java.util.Objects;
 import org.apache.inlong.manager.common.enums.FieldType;
 import org.apache.inlong.manager.common.enums.TransformType;
+import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.pojo.stream.StreamField;
 import org.apache.inlong.manager.pojo.transform.TransformDefinition;
 import org.apache.inlong.manager.pojo.transform.TransformResponse;
@@ -33,7 +33,6 @@ import org.apache.inlong.manager.pojo.transform.replacer.StringReplacerDefinitio
 import org.apache.inlong.manager.pojo.transform.replacer.StringReplacerDefinition.ReplaceRule;
 import org.apache.inlong.manager.pojo.transform.splitter.SplitterDefinition;
 import org.apache.inlong.manager.pojo.transform.splitter.SplitterDefinition.SplitRule;
-import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.sort.formats.common.FormatInfo;
 import org.apache.inlong.sort.formats.common.StringTypeInfo;
 import org.apache.inlong.sort.protocol.FieldInfo;
@@ -50,6 +49,7 @@ import org.apache.inlong.sort.protocol.transformation.function.SplitIndexFunctio
 
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -84,9 +84,9 @@ public class FieldRelationUtils {
                         preNodes, constantFieldMap);
             case DE_DUPLICATION:
             case FILTER:
-                return createFieldRelations(fieldList, transformName, constantFieldMap);
+                return createFieldRelations(fieldList, constantFieldMap);
             case JOINER:
-                return createJoinerFieldRelations(fieldList, transformName, constantFieldMap);
+                return createJoinerFieldRelations(fieldList, constantFieldMap);
             default:
                 throw new UnsupportedOperationException(
                         String.format("Unsupported transformType=%s", transformType));
@@ -96,7 +96,7 @@ public class FieldRelationUtils {
     /**
      * Create relation of fields.
      */
-    private static List<FieldRelation> createFieldRelations(List<StreamField> fieldList, String transformName,
+    private static List<FieldRelation> createFieldRelations(List<StreamField> fieldList,
             Map<String, StreamField> constantFieldMap) {
         return fieldList.stream()
                 .map(FieldInfoUtils::parseStreamField)
@@ -115,8 +115,7 @@ public class FieldRelationUtils {
                         inputField = new FieldInfo(fieldInfo.getName(), fieldInfo.getNodeId(),
                                 fieldInfo.getFormatInfo());
                     }
-                    FieldInfo outputField = new FieldInfo(fieldInfo.getName(), transformName,
-                            fieldInfo.getFormatInfo());
+                    FieldInfo outputField = new FieldInfo(fieldInfo.getName(), fieldInfo.getFormatInfo());
                     return new FieldRelation(inputField, outputField);
                 }).collect(Collectors.toList());
     }
@@ -124,7 +123,7 @@ public class FieldRelationUtils {
     /**
      * Create relation of fields in join function.
      */
-    private static List<FieldRelation> createJoinerFieldRelations(List<StreamField> fieldList, String transformName,
+    private static List<FieldRelation> createJoinerFieldRelations(List<StreamField> fieldList,
             Map<String, StreamField> constantFieldMap) {
         return fieldList.stream()
                 .map(streamField -> {
@@ -144,8 +143,7 @@ public class FieldRelationUtils {
                         inputField = new FieldInfo(streamField.getOriginFieldName(),
                                 streamField.getOriginNodeName(), formatInfo);
                     }
-                    FieldInfo outputField = new FieldInfo(streamField.getFieldName(),
-                            transformName, formatInfo);
+                    FieldInfo outputField = new FieldInfo(streamField.getFieldName(), formatInfo);
                     return new FieldRelation(inputField, outputField);
                 }).collect(Collectors.toList());
     }
@@ -170,7 +168,7 @@ public class FieldRelationUtils {
         List<StreamField> filteredFieldList = fieldList.stream()
                 .filter(streamFieldInfo -> !splitFields.contains(streamFieldInfo.getFieldName()))
                 .collect(Collectors.toList());
-        fieldRelations.addAll(createFieldRelations(filteredFieldList, transformName, constantFieldMap));
+        fieldRelations.addAll(createFieldRelations(filteredFieldList, constantFieldMap));
         return fieldRelations;
     }
 
@@ -190,7 +188,7 @@ public class FieldRelationUtils {
         List<StreamField> filteredFieldList = fieldList.stream()
                 .filter(streamFieldInfo -> !replaceFields.contains(streamFieldInfo.getFieldName()))
                 .collect(Collectors.toList());
-        fieldRelations.addAll(createFieldRelations(filteredFieldList, transformName, constantFieldMap));
+        fieldRelations.addAll(createFieldRelations(filteredFieldList, constantFieldMap));
         return fieldRelations;
     }
 
@@ -209,7 +207,7 @@ public class FieldRelationUtils {
         List<StreamField> filteredFieldList = fieldList.stream()
                 .filter(streamFieldInfo -> !encryptFields.contains(streamFieldInfo.getFieldName()))
                 .collect(Collectors.toList());
-        fieldRelations.addAll(createFieldRelations(filteredFieldList, transformName, constantFieldMap));
+        fieldRelations.addAll(createFieldRelations(filteredFieldList, constantFieldMap));
         return fieldRelations;
     }
 
diff --git a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/LoadNodeUtils.java b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/LoadNodeUtils.java
index 6e96d7bfd..bd1b83bfb 100644
--- a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/LoadNodeUtils.java
+++ b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/LoadNodeUtils.java
@@ -21,8 +21,8 @@ import com.google.common.collect.Lists;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.common.enums.DataTypeEnum;
-import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
 import org.apache.inlong.manager.common.consts.SinkType;
+import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
 import org.apache.inlong.manager.common.enums.FieldType;
 import org.apache.inlong.manager.common.exceptions.BusinessException;
 import org.apache.inlong.manager.pojo.sink.SinkField;
@@ -71,12 +71,12 @@ import org.apache.inlong.sort.protocol.transformation.ConstantParam;
 import org.apache.inlong.sort.protocol.transformation.FieldRelation;
 import org.apache.inlong.sort.protocol.transformation.FunctionParam;
 import org.apache.inlong.sort.protocol.transformation.StringConstantParam;
+import org.apache.inlong.sort.protocol.transformation.function.CustomFunction;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
-import org.apache.inlong.sort.protocol.transformation.function.CustomFunction;
 
 /**
  * Util for load node info.
@@ -102,8 +102,7 @@ public class LoadNodeUtils {
         List<FieldInfo> fieldInfos = streamSink.getSinkFieldList().stream()
                 .map(field -> FieldInfoUtils.parseSinkFieldInfo(field, streamSink.getSinkName()))
                 .collect(Collectors.toList());
-        List<FieldRelation> fieldRelations = parseSinkFields(streamSink.getSinkFieldList(),
-                streamSink.getSinkName(), constantFieldMap);
+        List<FieldRelation> fieldRelations = parseSinkFields(streamSink.getSinkFieldList(), constantFieldMap);
         Map<String, String> properties = streamSink.getProperties().entrySet().stream()
                 .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().toString()));
         String sinkType = streamSink.getSinkType();
@@ -497,7 +496,7 @@ public class LoadNodeUtils {
     /**
      * Parse information field of data sink.
      */
-    public static List<FieldRelation> parseSinkFields(List<SinkField> fieldList, String sinkName,
+    public static List<FieldRelation> parseSinkFields(List<SinkField> fieldList,
             Map<String, StreamField> constantFieldMap) {
         if (CollectionUtils.isEmpty(fieldList)) {
             return Lists.newArrayList();
@@ -505,7 +504,7 @@ public class LoadNodeUtils {
         return fieldList.stream()
                 .filter(sinkField -> StringUtils.isNotEmpty(sinkField.getSourceFieldName()))
                 .map(field -> {
-                    FieldInfo outputField = new FieldInfo(field.getFieldName(), sinkName,
+                    FieldInfo outputField = new FieldInfo(field.getFieldName(),
                             FieldInfoUtils.convertFieldFormat(field.getFieldType(), field.getFieldFormat()));
                     FunctionParam inputField;
                     String fieldKey = String.format("%s-%s", field.getOriginNodeName(), field.getSourceFieldName());
diff --git a/inlong-sort/sort-core/src/main/java/org/apache/inlong/sort/parser/impl/FlinkSqlParser.java b/inlong-sort/sort-core/src/main/java/org/apache/inlong/sort/parser/impl/FlinkSqlParser.java
index 02722a9c5..3cc166601 100644
--- a/inlong-sort/sort-core/src/main/java/org/apache/inlong/sort/parser/impl/FlinkSqlParser.java
+++ b/inlong-sort/sort-core/src/main/java/org/apache/inlong/sort/parser/impl/FlinkSqlParser.java
@@ -338,17 +338,15 @@ public class FlinkSqlParser implements Parser {
         // Generate mapping for output field to FieldRelation
         fieldRelations.forEach(s -> {
             // All field relations of input nodes will be the same if the node id of output field is blank.
-            // Currently, the node id in the output file is used to distinguish which field of the node in the upstream
-            // of the union the field comes from. A better way is through the upstream input field,
+            // Currently, the node id in the output field is used to distinguish which field of the node in the
+            // upstream of the union the field comes from. A better way is through the upstream input field,
             // but this abstraction does not yet have the ability to set node ids for all upstream input fields.
             // todo optimize the implementation of this block in the future
             String nodeId = s.getOutputField().getNodeId();
             if (StringUtils.isBlank(nodeId)) {
                 nodeId = unionRelation.getInputs().get(0);
             }
-            Map<String, FieldRelation> subRelationMap = fieldRelationMap
-                    .computeIfAbsent(nodeId, k -> new HashMap<>());
-            subRelationMap.put(s.getOutputField().getName(), s);
+            fieldRelationMap.computeIfAbsent(nodeId, k -> new HashMap<>()).put(s.getOutputField().getName(), s);
         });
         StringBuilder sb = new StringBuilder();
         sb.append(genUnionSingleSelectSql(unionRelation.getInputs().get(0),


[inlong] 01/09: [INLONG-5657][Release] Change the tag of Docker images to 1.3.0 (#5661)

Posted by do...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch release-1.3.0
in repository https://gitbox.apache.org/repos/asf/inlong.git

commit f19f9eaa66344d9ced1334e5a33694c1f8a84fea
Author: Schnapps <zp...@connect.ust.hk>
AuthorDate: Wed Aug 24 16:47:04 2022 +0800

    [INLONG-5657][Release] Change the tag of Docker images to 1.3.0 (#5661)
---
 conf/inlong.conf                                 |  2 +-
 docker/docker-compose/docker-compose.yml         | 10 +++++-----
 inlong-agent/agent-docker/README.md              |  2 +-
 inlong-audit/audit-docker/README.md              |  2 +-
 inlong-dataproxy/dataproxy-docker/README.md      |  2 +-
 inlong-manager/manager-docker/README.md          |  2 +-
 inlong-tubemq/tubemq-docker/tubemq-all/README.md |  2 +-
 7 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/conf/inlong.conf b/conf/inlong.conf
index 9b49a1fa0..c64e29779 100644
--- a/conf/inlong.conf
+++ b/conf/inlong.conf
@@ -35,7 +35,7 @@ tube_manager_url=127.0.0.1:8080
 
 ############## Dashboard Configuration ##############
 # dashboard docker image
-dashboard_docker_image=inlong/dashboard:latest
+dashboard_docker_image=inlong/dashboard:1.3.0
 # dashboard service port
 dashboard_mapping_port=80
 
diff --git a/docker/docker-compose/docker-compose.yml b/docker/docker-compose/docker-compose.yml
index 6124afcbb..e03fb2d69 100644
--- a/docker/docker-compose/docker-compose.yml
+++ b/docker/docker-compose/docker-compose.yml
@@ -43,7 +43,7 @@ services:
     command: bin/pulsar standalone
 
   manager:
-    image: inlong/manager
+    image: inlong/manager:1.3.0
     container_name: manager
     depends_on:
       mysql:
@@ -60,7 +60,7 @@ services:
       - AUDIT_PROXY_URL=audit:10081
 
   webisite:
-    image: inlong/dashboard
+    image: inlong/dashboard:1.3.0
     container_name: dashboard
     depends_on:
       - manager
@@ -70,7 +70,7 @@ services:
       - MANAGER_API_ADDRESS=manager:8083
 
   dataproxy:
-    image: inlong/dataproxy:latest
+    image: inlong/dataproxy:1.3.0
     container_name: dataproxy
     depends_on:
       - manager
@@ -83,7 +83,7 @@ services:
       - MQ_TYPE=pulsar
 
   agent:
-    image: inlong/agent:latest
+    image: inlong/agent:1.3.0
     container_name: agent
     depends_on:
       - manager
@@ -100,7 +100,7 @@ services:
       - ./collect-data:/data/collect-data
 
   audit:
-    image: inlong/audit:latest
+    image: inlong/audit:1.3.0
     container_name: audit
     depends_on:
       mysql:
diff --git a/inlong-agent/agent-docker/README.md b/inlong-agent/agent-docker/README.md
index 5cf1d9d53..d54a27332 100644
--- a/inlong-agent/agent-docker/README.md
+++ b/inlong-agent/agent-docker/README.md
@@ -3,7 +3,7 @@ InLong Agent is available for development and experience.
 
 ##### Pull Image
 ```
-docker pull inlong/agent:latest
+docker pull inlong/agent:1.3.0
 ```
 
 ##### Start Container
diff --git a/inlong-audit/audit-docker/README.md b/inlong-audit/audit-docker/README.md
index 3bd9d8818..59d959e4d 100644
--- a/inlong-audit/audit-docker/README.md
+++ b/inlong-audit/audit-docker/README.md
@@ -3,7 +3,7 @@ InLong Audit is available for development and experience.
 
 ##### Pull Image
 ```
-docker pull inlong/audit:latest
+docker pull inlong/audit:1.3.0
 ```
 
 ##### Start Container
diff --git a/inlong-dataproxy/dataproxy-docker/README.md b/inlong-dataproxy/dataproxy-docker/README.md
index 6ae82baec..cac638e22 100644
--- a/inlong-dataproxy/dataproxy-docker/README.md
+++ b/inlong-dataproxy/dataproxy-docker/README.md
@@ -3,7 +3,7 @@ InLong DataProxy is available for development and experience.
 
 ##### Pull Image
 ```
-docker pull inlong/dataproxy:latest
+docker pull inlong/dataproxy:1.3.0
 ```
 
 ##### Start Container
diff --git a/inlong-manager/manager-docker/README.md b/inlong-manager/manager-docker/README.md
index af3c04201..e1edad3f1 100644
--- a/inlong-manager/manager-docker/README.md
+++ b/inlong-manager/manager-docker/README.md
@@ -5,7 +5,7 @@ InLong Manager is available for development and experience.
 ### Pull Image
 
 ```
-docker pull inlong/manager:latest
+docker pull inlong/manager:1.3.0
 ```
 
 ### Start Container
diff --git a/inlong-tubemq/tubemq-docker/tubemq-all/README.md b/inlong-tubemq/tubemq-docker/tubemq-all/README.md
index 9d5e45911..e6de79102 100644
--- a/inlong-tubemq/tubemq-docker/tubemq-all/README.md
+++ b/inlong-tubemq/tubemq-docker/tubemq-all/README.md
@@ -3,7 +3,7 @@ TubeMQ standalone is available for development and experience.
 
 ##### Pull Image
 ```
-docker pull inlong/tubemq-all:latest
+docker pull inlong/tubemq-all:1.3.0
 ```
 
 ##### Start Standalone Container


[inlong] 06/09: [INLONG-5681][TubeMQ] The C++ SDK does not switch after the active Master node hangs up (#5682)

Posted by do...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch release-1.3.0
in repository https://gitbox.apache.org/repos/asf/inlong.git

commit f63ebf9f3044798928432a63b74d094299821798
Author: Goson Zhang <46...@qq.com>
AuthorDate: Thu Aug 25 11:54:13 2022 +0800

    [INLONG-5681][TubeMQ] The C++ SDK does not switch after the active Master node hangs up (#5682)
---
 .../tubemq-client-cpp/src/baseconsumer.cc                | 16 +++++++++++++---
 .../tubemq-client-cpp/src/const_config.h                 |  2 ++
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/inlong-tubemq/tubemq-client-twins/tubemq-client-cpp/src/baseconsumer.cc b/inlong-tubemq/tubemq-client-twins/tubemq-client-cpp/src/baseconsumer.cc
index 3012fe2d2..25001de2b 100644
--- a/inlong-tubemq/tubemq-client-twins/tubemq-client-cpp/src/baseconsumer.cc
+++ b/inlong-tubemq/tubemq-client-twins/tubemq-client-cpp/src/baseconsumer.cc
@@ -526,6 +526,15 @@ void BaseConsumer::heartBeat2Master() {
           master_sh_retry_cnt_++;
           LOG_WARN("[CONSUMER] heartBeat2Master failue to (%s:%d) : %s, client=%s",
                    target_ip.c_str(), target_port, error.Message().c_str(), client_uuid_.c_str());
+          if (master_sh_retry_cnt_ >= tb_config::kMaxMasterHBRetryCount) {
+              LOG_WARN("[CONSUMER] heartBeat2Master found over max-hb-retry(%d), client=%s",
+                       master_sh_retry_cnt_, client_uuid_.c_str());
+              master_sh_retry_cnt_ = 0;
+              is_master_actived_.Set(false);
+              asyncRegister2Master(true);
+              master_hb_status_.CompareAndSet(1, 0);
+              return;
+          }
         } else {
           // process response
           auto rsp = any_cast<TubeMQCodec::RspProtocolPtr>(response_context.rsp_);
@@ -540,9 +549,10 @@ void BaseConsumer::heartBeat2Master() {
             if (error_code == err_code::kErrHbNoNode ||
                 error_info.find("StandbyException") != string::npos) {
               is_master_actived_.Set(false);
-              LOG_WARN("[CONSUMER] hb2master found no-node or standby, re-register, client=%s",
-                       client_uuid_.c_str());
-              asyncRegister2Master(!(error_code == err_code::kErrHbNoNode));
+              bool need_change = !(error_code == err_code::kErrHbNoNode);
+              LOG_WARN("[CONSUMER] heartBeat2Master found no-node or standby, client=%s, change=%d",
+                       client_uuid_.c_str(), need_change);
+              asyncRegister2Master(need_change);
               master_hb_status_.CompareAndSet(1, 0);
               return;
             }
diff --git a/inlong-tubemq/tubemq-client-twins/tubemq-client-cpp/src/const_config.h b/inlong-tubemq/tubemq-client-twins/tubemq-client-cpp/src/const_config.h
index c854548e8..e6e4bf371 100644
--- a/inlong-tubemq/tubemq-client-twins/tubemq-client-cpp/src/const_config.h
+++ b/inlong-tubemq/tubemq-client-twins/tubemq-client-cpp/src/const_config.h
@@ -59,6 +59,8 @@ static const int32_t kRpcTimoutMinMs = 8000;
 static const int32_t kHeartBeatPeriodDefMs = 10000;
 static const int32_t kHeartBeatFailRetryTimesDef = 5;
 static const int32_t kHeartBeatSleepPeriodDefMs = 60000;
+// default max master hb retry count
+static const int32_t kMaxMasterHBRetryCount = 8;
 // max masterAddrInfo length
 static const int32_t kMasterAddrInfoMaxLength = 1024;