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

rong pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/dev/1.3 by this push:
     new c1ab85f82d9 Pipe: Fixed the ttl privilege logic at receiver side 
(#15135) (#15145)
c1ab85f82d9 is described below

commit c1ab85f82d913d1993b3483048de025f219d81ed
Author: Caideyipi <[email protected]>
AuthorDate: Tue Mar 25 10:18:19 2025 +0800

    Pipe: Fixed the ttl privilege logic at receiver side (#15135) (#15145)
---
 .../receiver/protocol/IoTDBConfigNodeReceiver.java | 28 +++++++++++++++++-----
 1 file changed, 22 insertions(+), 6 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/receiver/protocol/IoTDBConfigNodeReceiver.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/receiver/protocol/IoTDBConfigNodeReceiver.java
index 87ba3affef1..0986e50b31a 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/receiver/protocol/IoTDBConfigNodeReceiver.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/receiver/protocol/IoTDBConfigNodeReceiver.java
@@ -22,6 +22,7 @@ package 
org.apache.iotdb.confignode.manager.pipe.receiver.protocol;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.commons.auth.entity.PrivilegeType;
 import org.apache.iotdb.commons.conf.CommonDescriptor;
+import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.path.PathPatternTree;
 import 
org.apache.iotdb.commons.pipe.connector.payload.airgap.AirGapPseudoTPipeTransferRequest;
@@ -283,12 +284,27 @@ public class IoTDBConfigNodeReceiver extends 
IoTDBFileReceiver {
                 PrivilegeType.WRITE_SCHEMA.ordinal())
             .getStatus();
       case SetTTL:
-        return configManager
-            .checkUserPrivileges(
-                username,
-                Collections.singletonList(new PartialPath(((SetTTLPlan) 
plan).getPathPattern())),
-                PrivilegeType.WRITE_SCHEMA.ordinal())
-            .getStatus();
+        return Objects.equals(
+                configManager
+                    .getTTLManager()
+                    .getAllTTL()
+                    .get(
+                        String.join(
+                            String.valueOf(IoTDBConstant.PATH_SEPARATOR),
+                            ((SetTTLPlan) plan).getPathPattern())),
+                ((SetTTLPlan) plan).getTTL())
+            ? StatusUtils.OK
+            : configManager
+                .checkUserPrivileges(
+                    username,
+                    ((SetTTLPlan) plan).isDataBase()
+                        ? Collections.emptyList()
+                        : Collections.singletonList(
+                            new PartialPath(((SetTTLPlan) 
plan).getPathPattern())),
+                    ((SetTTLPlan) plan).isDataBase()
+                        ? PrivilegeType.MANAGE_DATABASE.ordinal()
+                        : PrivilegeType.WRITE_SCHEMA.ordinal())
+                .getStatus();
       case UpdateTriggerStateInTable:
       case DeleteTriggerInTable:
         return configManager

Reply via email to