[HUDI-1292] Created a config to enable/disable syncing of metadata table. (#3427)
* [HUDI-1292] Created a config to enable/disable syncing of metadata table. - Metadata Table should only be synced from a single pipeline to prevent conflicts. - Skip syncing metadata table for clustering and compaction - Renamed useFileListingMetadata Co-authored-by: Vinoth Chandar <vinoth@apache.org>
This commit is contained in:
@@ -403,7 +403,9 @@ public abstract class AbstractHoodieWriteClient<T extends HoodieRecordPayload, I
|
||||
.isPresent()
|
||||
? Option.of(lastCompletedTxnAndMetadata.get().getLeft()) : Option.empty());
|
||||
try {
|
||||
syncTableMetadata();
|
||||
if (writeOperationType != WriteOperationType.CLUSTER && writeOperationType != WriteOperationType.COMPACT) {
|
||||
syncTableMetadata();
|
||||
}
|
||||
} finally {
|
||||
this.txnManager.endTransaction();
|
||||
}
|
||||
@@ -436,7 +438,9 @@ public abstract class AbstractHoodieWriteClient<T extends HoodieRecordPayload, I
|
||||
HoodieTimelineArchiveLog archiveLog = new HoodieTimelineArchiveLog(config, table);
|
||||
archiveLog.archiveIfRequired(context);
|
||||
autoCleanOnCommit();
|
||||
syncTableMetadata();
|
||||
if (operationType != null && operationType != WriteOperationType.CLUSTER && operationType != WriteOperationType.COMPACT) {
|
||||
syncTableMetadata();
|
||||
}
|
||||
} catch (IOException ioe) {
|
||||
throw new HoodieIOException(ioe.getMessage(), ioe);
|
||||
} finally {
|
||||
|
||||
@@ -1265,8 +1265,8 @@ public class HoodieWriteConfig extends HoodieConfig {
|
||||
/**
|
||||
* File listing metadata configs.
|
||||
*/
|
||||
public boolean useFileListingMetadata() {
|
||||
return metadataConfig.useFileListingMetadata();
|
||||
public boolean isMetadataTableEnabled() {
|
||||
return metadataConfig.enabled();
|
||||
}
|
||||
|
||||
public boolean getFileListingMetadataVerify() {
|
||||
|
||||
@@ -97,7 +97,7 @@ public abstract class HoodieBackedTableMetadataWriter implements HoodieTableMeta
|
||||
this.engineContext = engineContext;
|
||||
this.hadoopConf = new SerializableConfiguration(hadoopConf);
|
||||
|
||||
if (writeConfig.useFileListingMetadata()) {
|
||||
if (writeConfig.isMetadataTableEnabled()) {
|
||||
this.tableName = writeConfig.getTableName() + METADATA_TABLE_NAME_SUFFIX;
|
||||
this.metadataWriteConfig = createMetadataWriteConfig(writeConfig);
|
||||
enabled = true;
|
||||
@@ -107,7 +107,7 @@ public abstract class HoodieBackedTableMetadataWriter implements HoodieTableMeta
|
||||
ValidationUtils.checkArgument(!this.metadataWriteConfig.inlineCompactionEnabled(), "Compaction is controlled internally for metadata table.");
|
||||
// Metadata Table cannot have metadata listing turned on. (infinite loop, much?)
|
||||
ValidationUtils.checkArgument(this.metadataWriteConfig.shouldAutoCommit(), "Auto commit is required for Metadata Table");
|
||||
ValidationUtils.checkArgument(!this.metadataWriteConfig.useFileListingMetadata(), "File listing cannot be used for Metadata Table");
|
||||
ValidationUtils.checkArgument(!this.metadataWriteConfig.isMetadataTableEnabled(), "File listing cannot be used for Metadata Table");
|
||||
|
||||
initRegistry();
|
||||
HoodieTableMetaClient datasetMetaClient = HoodieTableMetaClient.builder().setConf(hadoopConf).setBasePath(datasetWriteConfig.getBasePath()).build();
|
||||
|
||||
@@ -202,7 +202,7 @@ public class HoodieTimelineArchiveLog<T extends HoodieAvroPayload, I, K, O> {
|
||||
|
||||
// If metadata table is enabled, do not archive instants which are more recent that the latest synced
|
||||
// instant on the metadata table. This is required for metadata table sync.
|
||||
if (config.useFileListingMetadata()) {
|
||||
if (config.isMetadataTableEnabled()) {
|
||||
try (HoodieTableMetadata tableMetadata = HoodieTableMetadata.create(table.getContext(), config.getMetadataConfig(),
|
||||
config.getBasePath(), FileSystemViewStorageConfig.FILESYSTEM_VIEW_SPILLABLE_DIR.defaultValue())) {
|
||||
Option<String> lastSyncedInstantTime = tableMetadata.getSyncedInstantTime();
|
||||
|
||||
Reference in New Issue
Block a user