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

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


The following commit(s) were added to refs/heads/master by this push:
     new 140bebd40 [ISSUE #4133]Optimize OpenFunctionSourceConnector poll
     new 006a36d6f Merge pull request #4134 from mxsm/eventmesh-4133
140bebd40 is described below

commit 140bebd40363c4318547600891b940bc1e2e02f7
Author: mxsm <[email protected]>
AuthorDate: Sun Jun 18 23:23:34 2023 +0800

    [ISSUE #4133]Optimize OpenFunctionSourceConnector poll
---
 .../connector/OpenFunctionSourceConnector.java      | 21 +++++++++++++++++----
 .../apache/eventmesh/openconnect/SourceWorker.java  | 12 ++++++++----
 2 files changed, 25 insertions(+), 8 deletions(-)

diff --git 
a/eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/source/connector/OpenFunctionSourceConnector.java
 
b/eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/source/connector/OpenFunctionSourceConnector.java
index 4e79a56d9..c25948575 100644
--- 
a/eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/source/connector/OpenFunctionSourceConnector.java
+++ 
b/eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/source/connector/OpenFunctionSourceConnector.java
@@ -26,12 +26,15 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
 
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
 public class OpenFunctionSourceConnector implements Source {
 
+    private static final int DEFAULT_BATCH_SIZE = 10;
+
     private OpenFunctionSourceConfig sourceConfig;
 
     private BlockingQueue<ConnectRecord> queue;
@@ -74,10 +77,20 @@ public class OpenFunctionSourceConnector implements Source {
 
     @Override
     public List<ConnectRecord> poll() {
-        List<ConnectRecord> connectRecords = new ArrayList<>();
-        ConnectRecord connectRecord = queue.poll();
-        if (connectRecord != null) {
-            connectRecords.add(connectRecord);
+
+        List<ConnectRecord> connectRecords = new 
ArrayList<>(DEFAULT_BATCH_SIZE);
+
+        for (int count = 0; count < DEFAULT_BATCH_SIZE; ++count) {
+            try {
+                ConnectRecord connectRecord = queue.poll(3, TimeUnit.SECONDS);
+                if (connectRecord == null) {
+                    break;
+                }
+                connectRecords.add(connectRecord);
+            } catch (InterruptedException e) {
+                // nothing to do
+                break;
+            }
         }
         return connectRecords;
     }
diff --git 
a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/SourceWorker.java
 
b/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/SourceWorker.java
index 91e494a33..0f0c2f478 100644
--- 
a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/SourceWorker.java
+++ 
b/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/SourceWorker.java
@@ -29,6 +29,8 @@ import 
org.apache.eventmesh.openconnect.api.config.SourceConfig;
 import org.apache.eventmesh.openconnect.api.data.ConnectRecord;
 import org.apache.eventmesh.openconnect.api.source.Source;
 
+import org.apache.commons.collections4.CollectionUtils;
+
 import java.net.URI;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
@@ -120,7 +122,7 @@ public class SourceWorker implements ConnectorWorker {
             try {
                 connectRecord = queue.poll(5, TimeUnit.SECONDS);
             } catch (InterruptedException e) {
-                e.printStackTrace();
+                Thread.currentThread().interrupt();
                 log.error("poll connect record error", e);
             }
             if (connectRecord == null) {
@@ -136,8 +138,11 @@ public class SourceWorker implements ConnectorWorker {
         source.start();
         while (isRunning) {
             List<ConnectRecord> connectorRecordList = source.poll();
-            for (ConnectRecord connectRecord : connectorRecordList) {
-                queue.put(connectRecord);
+            if (CollectionUtils.isEmpty(connectorRecordList)) {
+                continue;
+            }
+            for (ConnectRecord record : connectorRecordList) {
+                queue.put(record);
             }
         }
     }
@@ -175,7 +180,6 @@ public class SourceWorker implements ConnectorWorker {
         try {
             eventMeshTCPClient.close();
         } catch (Exception e) {
-            e.printStackTrace();
             log.error("event mesh client close error", e);
         }
         log.info("source worker stopped");


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to