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

lzljs3620320 pushed a commit to branch release-0.2
in repository https://gitbox.apache.org/repos/asf/flink-table-store.git


The following commit(s) were added to refs/heads/release-0.2 by this push:
     new db55ca64 [FLINK-29098] StoreWriteOperator#prepareCommit should let 
logSinkFunction flush pending records before fetching offset
db55ca64 is described below

commit db55ca641654a75e69f56ae3c34ccc08ec90f205
Author: Jane Chan <[email protected]>
AuthorDate: Mon Aug 29 13:21:38 2022 +0800

    [FLINK-29098] StoreWriteOperator#prepareCommit should let logSinkFunction 
flush pending records before fetching offset
    
    This closes #279
---
 .../flink/table/store/connector/sink/StoreWriteOperator.java       | 5 +++++
 .../org/apache/flink/table/store/table/sink/LogSinkFunction.java   | 3 +++
 .../java/org/apache/flink/table/store/kafka/KafkaSinkFunction.java | 7 ++++++-
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git 
a/flink-table-store-connector/src/main/java/org/apache/flink/table/store/connector/sink/StoreWriteOperator.java
 
b/flink-table-store-connector/src/main/java/org/apache/flink/table/store/connector/sink/StoreWriteOperator.java
index 1c14ec0b..dd332979 100644
--- 
a/flink-table-store-connector/src/main/java/org/apache/flink/table/store/connector/sink/StoreWriteOperator.java
+++ 
b/flink-table-store-connector/src/main/java/org/apache/flink/table/store/connector/sink/StoreWriteOperator.java
@@ -192,6 +192,11 @@ public class StoreWriteOperator extends 
PrepareCommitOperator {
         }
 
         if (logCallback != null) {
+            try {
+                logSinkFunction.flush();
+            } catch (Exception e) {
+                throw new IOException(e);
+            }
             logCallback
                     .offsets()
                     .forEach(
diff --git 
a/flink-table-store-core/src/main/java/org/apache/flink/table/store/table/sink/LogSinkFunction.java
 
b/flink-table-store-core/src/main/java/org/apache/flink/table/store/table/sink/LogSinkFunction.java
index 82d28146..b484b4d5 100644
--- 
a/flink-table-store-core/src/main/java/org/apache/flink/table/store/table/sink/LogSinkFunction.java
+++ 
b/flink-table-store-core/src/main/java/org/apache/flink/table/store/table/sink/LogSinkFunction.java
@@ -25,6 +25,9 @@ public interface LogSinkFunction extends 
SinkFunction<SinkRecord> {
 
     void setWriteCallback(WriteCallback writeCallback);
 
+    /** Flush pending records. */
+    void flush() throws Exception;
+
     /**
      * A callback interface that the user can implement to know the offset of 
the bucket when the
      * request is complete.
diff --git 
a/flink-table-store-kafka/src/main/java/org/apache/flink/table/store/kafka/KafkaSinkFunction.java
 
b/flink-table-store-kafka/src/main/java/org/apache/flink/table/store/kafka/KafkaSinkFunction.java
index 587a1813..afea2367 100644
--- 
a/flink-table-store-kafka/src/main/java/org/apache/flink/table/store/kafka/KafkaSinkFunction.java
+++ 
b/flink-table-store-kafka/src/main/java/org/apache/flink/table/store/kafka/KafkaSinkFunction.java
@@ -19,10 +19,10 @@
 package org.apache.flink.table.store.kafka;
 
 import org.apache.flink.configuration.Configuration;
+import org.apache.flink.streaming.connectors.kafka.FlinkKafkaException;
 import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer;
 import org.apache.flink.streaming.connectors.kafka.KafkaSerializationSchema;
 import org.apache.flink.table.store.table.sink.LogSinkFunction;
-import org.apache.flink.table.store.table.sink.LogSinkFunction.WriteCallback;
 import org.apache.flink.table.store.table.sink.SinkRecord;
 
 import org.apache.kafka.clients.producer.Callback;
@@ -77,4 +77,9 @@ public class KafkaSinkFunction extends 
FlinkKafkaProducer<SinkRecord> implements
                     baseCallback.onCompletion(metadata, exception);
                 };
     }
+
+    @Override
+    public void flush() throws FlinkKafkaException {
+        super.preCommit(super.currentTransaction());
+    }
 }

Reply via email to