You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by zi...@apache.org on 2022/04/24 07:27:02 UTC

[pulsar] branch master updated: [fix] Set sinkType in config file (#15174)

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

zike pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new ba854a1bebf [fix] Set sinkType in config file (#15174)
ba854a1bebf is described below

commit ba854a1bebf9b19775f395f9ac7d810dab77ce90
Author: HuangWei <hu...@apache.org>
AuthorDate: Sun Apr 24 15:26:54 2022 +0800

    [fix] Set sinkType in config file (#15174)
    
    ### Motivation
    
    The sink config file doesn't support set 'sinkType', e.g. https://github.com/apache/pulsar/blob/a19a30a5e89bfd2c2da5460db6120c8e0a48d8f7/site2/docs/io-jdbc-sink.md?plain=1#L51
    
    ### Modifications
    
    Add 'sinkType' to class `SinkConfig`. If no cmd arg '--sink-type' and 'sinkType' exists in config file, we will try to use the 'sinkType' built-in sink.
---
 .../src/main/java/org/apache/pulsar/common/io/SinkConfig.java  |  2 ++
 .../src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java    |  2 ++
 .../test/java/org/apache/pulsar/admin/cli/TestCmdSinks.java    | 10 ++++++++++
 3 files changed, 14 insertions(+)

diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/SinkConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/SinkConfig.java
index 0fe37ae47a2..5bd9227ca1b 100644
--- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/SinkConfig.java
+++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/SinkConfig.java
@@ -77,6 +77,8 @@ public class SinkConfig {
     private Boolean autoAck;
     private Long timeoutMs;
     private Long negativeAckRedeliveryDelayMs;
+
+    private String sinkType;
     private String archive;
     // Whether the subscriptions the functions created/used should be deleted when the functions is deleted
     private Boolean cleanupSubscription;
diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java
index 67526da83be..21a7c3a7877 100644
--- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java
+++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java
@@ -518,6 +518,8 @@ public class CmdSinks extends CmdBase {
 
             if (sinkType != null) {
                 sinkConfig.setArchive(validateSinkType(sinkType));
+            } else if (sinkConfig.getSinkType() != null) {
+                sinkConfig.setArchive(validateSinkType(sinkConfig.getSinkType()));
             }
 
             Resources resources = sinkConfig.getResources();
diff --git a/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSinks.java b/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSinks.java
index 1b67b18a210..7a00f0429fc 100644
--- a/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSinks.java
+++ b/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSinks.java
@@ -478,6 +478,16 @@ public class TestCmdSinks {
         testCmdSinkConfigFile(testSinkConfig, expectedSinkConfig);
     }
 
+    @Test(expectedExceptions = ParameterException.class, expectedExceptionsMessageRegExp = "Invalid sink type 'foo' " +
+            "-- Available sinks are: \\[\\]")
+    public void testCmdSinkConfigFileInvalidSinkType() throws Exception {
+        SinkConfig testSinkConfig = getSinkConfig();
+        // sinkType is prior than archive
+        testSinkConfig.setSinkType("foo");
+
+        testCmdSinkConfigFile(testSinkConfig, null);
+    }
+
     private void testCmdSinkConfigFile(SinkConfig testSinkConfig, SinkConfig expectedSinkConfig) throws Exception {
 
         File file = Files.createTempFile("", "").toFile();