leesf commented on a change in pull request #1727:
URL: https://github.com/apache/hudi/pull/1727#discussion_r439719225
##########
File path:
hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/AbstractHoodieWriteClient.java
##########
@@ -0,0 +1,537 @@
+package org.apache.hudi.client;
+
+import com.codahale.metrics.Timer;
+import org.apache.hudi.avro.model.HoodieCleanMetadata;
+import org.apache.hudi.avro.model.HoodieCompactionPlan;
+import org.apache.hudi.avro.model.HoodieRestoreMetadata;
+import org.apache.hudi.avro.model.HoodieRollbackMetadata;
+import org.apache.hudi.client.embedded.AbstractEmbeddedTimelineService;
+import org.apache.hudi.common.HoodieEngineContext;
+import org.apache.hudi.common.model.*;
+import org.apache.hudi.common.table.HoodieTableMetaClient;
+import org.apache.hudi.common.table.timeline.HoodieActiveTimeline;
+import org.apache.hudi.common.table.timeline.HoodieInstant;
+import org.apache.hudi.common.table.timeline.HoodieTimeline;
+import org.apache.hudi.common.util.Option;
+import org.apache.hudi.common.util.ValidationUtils;
+import org.apache.hudi.config.HoodieCompactionConfig;
+import org.apache.hudi.config.HoodieWriteConfig;
+import org.apache.hudi.exception.*;
+import org.apache.hudi.index.AbstractHoodieIndex;
+import org.apache.hudi.metrics.HoodieMetrics;
+import org.apache.hudi.table.AbstractHoodieTable;
+import org.apache.hudi.table.HoodieTimelineArchiveLog;
+import org.apache.hudi.table.UserDefinedBulkInsertPartitioner;
+import org.apache.hudi.table.action.HoodieWriteMetadata;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.text.ParseException;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author xianghu.wang
+ * @time 2020/6/10
+ * @description
+ */
+public abstract class AbstractHoodieWriteClient<T extends
HoodieRecordPayload<T>, I, K, O, P> extends AbstractHoodieClient {
+
+ private static final Logger LOG =
LoggerFactory.getLogger(AbstractHoodieWriteClient.class);
+ private static final long serialVersionUID = 1L;
+ private final transient HoodieMetrics metrics;
+ private final transient AbstractHoodieIndex<T, I, K, O, P> index;
+ private final transient AbstractHoodieTable<T, I, K, O, P> table;
+ private transient Timer.Context writeContext = null;
+ private transient WriteOperationType operationType;
+
+ private static final String LOOKUP_STR = "lookup";
+ private final boolean rollbackPending;
+ private transient Timer.Context compactionTimer;
+
+
+ public void setOperationType(WriteOperationType operationType) {
+ this.operationType = operationType;
+ }
+
+ public WriteOperationType getOperationType() {
+ return this.operationType;
+ }
+
+ public AbstractHoodieWriteClient(HoodieEngineContext context,
AbstractHoodieIndex<T, I, K, O, P> index,
+ AbstractHoodieTable<T, I, K, O, P>
table,HoodieWriteConfig clientConfig) {
+ this(context, index, table,clientConfig, Option.empty());
+ }
+
+ protected AbstractHoodieWriteClient(HoodieEngineContext context,
AbstractHoodieIndex<T, I, K, O, P> index,
+ AbstractHoodieTable<T, I, K, O, P>
table,HoodieWriteConfig clientConfig,
+ Option<AbstractEmbeddedTimelineService>
timelineServer) {
+ this(context, index, table,clientConfig, timelineServer, false);
+ }
+
+ public AbstractHoodieWriteClient(HoodieEngineContext context,
AbstractHoodieIndex<T, I, K, O, P> index,AbstractHoodieTable<T, I, K, O, P>
table,
+ HoodieWriteConfig clientConfig,
Option<AbstractEmbeddedTimelineService> timelineServer, boolean
rollbackPending) {
+ super(context, clientConfig, timelineServer);
+ this.index = index;
+ this.table = table;
+ this.metrics = new HoodieMetrics(config, config.getTableName());
+ this.rollbackPending = rollbackPending;
+ }
+
+ public abstract I filterExists(I hoodieRecords);
+
+ public abstract O upsert(I records, final String instantTime);
+
+ public abstract O upsertPreppedRecords(I preppedRecords, final String
instantTime);
+
+ public abstract O insert(I records, final String instantTime);
+
+ public abstract O insertPreppedRecords(I preppedRecords, final String
instantTime);
Review comment:
these are methods from HoodieWriteClient, and users would use
HoodieWriteClient to upsert/insert records directly using the APIs, right now
the HoodieWriteClient has been removed, so it breaks the compatibility.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]