[HUDI-2151] Part3 Enabling marker based rollback as default rollback strategy (#3950)
* Enabling timeline server based markers * Enabling timeline server based markers and marker based rollback * Removing constraint that timeline server can be enabled only for hdfs * Fixing tests
This commit is contained in:
committed by
GitHub
parent
04eb5fdc65
commit
ce7d233307
@@ -120,9 +120,9 @@ public class HoodieWriteConfig extends HoodieConfig {
|
||||
|
||||
public static final ConfigProperty<String> ROLLBACK_USING_MARKERS_ENABLE = ConfigProperty
|
||||
.key("hoodie.rollback.using.markers")
|
||||
.defaultValue("false")
|
||||
.defaultValue("true")
|
||||
.withDocumentation("Enables a more efficient mechanism for rollbacks based on the marker files generated "
|
||||
+ "during the writes. Turned off by default.");
|
||||
+ "during the writes. Turned on by default.");
|
||||
|
||||
public static final ConfigProperty<String> TIMELINE_LAYOUT_VERSION_NUM = ConfigProperty
|
||||
.key("hoodie.timeline.layout.version")
|
||||
|
||||
@@ -45,6 +45,7 @@ import org.apache.hudi.common.table.HoodieTableMetaClient;
|
||||
import org.apache.hudi.common.table.log.HoodieLogFormat;
|
||||
import org.apache.hudi.common.table.log.block.HoodieDeleteBlock;
|
||||
import org.apache.hudi.common.table.log.block.HoodieLogBlock.HeaderMetadataType;
|
||||
import org.apache.hudi.common.table.marker.MarkerType;
|
||||
import org.apache.hudi.common.table.timeline.HoodieInstant;
|
||||
import org.apache.hudi.common.table.timeline.HoodieTimeline;
|
||||
import org.apache.hudi.common.table.timeline.versioning.TimelineLayoutVersion;
|
||||
@@ -180,6 +181,8 @@ public abstract class HoodieBackedTableMetadataWriter implements HoodieTableMeta
|
||||
.withAutoCommit(true)
|
||||
.withAvroSchemaValidate(true)
|
||||
.withEmbeddedTimelineServerEnabled(false)
|
||||
.withMarkersType(MarkerType.DIRECT.name())
|
||||
.withRollbackUsingMarkers(false)
|
||||
.withPath(HoodieTableMetadata.getMetadataTableBasePath(writeConfig.getBasePath()))
|
||||
.withSchema(HoodieMetadataRecord.getClassSchema().toString())
|
||||
.forTable(tableName)
|
||||
|
||||
@@ -18,8 +18,6 @@
|
||||
|
||||
package org.apache.hudi.table.marker;
|
||||
|
||||
import org.apache.hudi.common.fs.FSUtils;
|
||||
import org.apache.hudi.common.fs.StorageSchemes;
|
||||
import org.apache.hudi.common.table.marker.MarkerType;
|
||||
import org.apache.hudi.exception.HoodieException;
|
||||
import org.apache.hudi.table.HoodieTable;
|
||||
@@ -45,12 +43,6 @@ public class WriteMarkersFactory {
|
||||
case DIRECT:
|
||||
return new DirectWriteMarkers(table, instantTime);
|
||||
case TIMELINE_SERVER_BASED:
|
||||
String basePath = table.getMetaClient().getBasePath();
|
||||
if (StorageSchemes.HDFS.getScheme().equals(
|
||||
FSUtils.getFs(basePath, table.getContext().getHadoopConf().newCopy()).getScheme())) {
|
||||
throw new HoodieException("Timeline-server-based markers are not supported for HDFS: "
|
||||
+ "base path " + basePath);
|
||||
}
|
||||
return new TimelineServerBasedWriteMarkers(table, instantTime);
|
||||
default:
|
||||
throw new HoodieException("The marker type \"" + markerType.name() + "\" is not supported.");
|
||||
|
||||
Reference in New Issue
Block a user