All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.netflix.metacat.common.server.properties.Config Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2016 Netflix, Inc.
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *        http://www.apache.org/licenses/LICENSE-2.0
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

package com.netflix.metacat.common.server.properties;

import com.netflix.metacat.common.QualifiedName;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Property configurations.
 */
public interface Config {
    /**
     * Default type converter.
     *
     * @return Default type converter
     */
    String getDefaultTypeConverter();

    /**
     * Enable elastic search.
     *
     * @return true if elastic search is enabled
     */
    boolean isElasticSearchEnabled();

    /**
     * If true, a table update should trigger updating data metadata of all table documents containing the same uri.
     *
     * @return true, if data metadata of all table documents needs to be updated if their uri is the same
     * as the updated table.
     */
    boolean isElasticSearchUpdateTablesWithSameUriEnabled();

    /**
     * Enable publishing partitions to elastic search.
     *
     * @return true if publishing partitions to elastic search is enabled
     */
    boolean isElasticSearchPublishPartitionEnabled();

    /**
     * Enable publishing metacat es error logs to elastic search.
     *
     * @return true if publishing metacat es error logs to elastic search is enabled
     */
    boolean isElasticSearchPublishMetacatLogEnabled();

    /**
     * Elastic search cluster name.
     *
     * @return cluster name
     */
    String getElasticSearchClusterName();

    /**
     * Comm aseparated list of elastic search cluster nodes.
     *
     * @return String
     */
    String getElasticSearchClusterNodes();

    /**
     * Elastic search cluster port.
     *
     * @return cluster port
     */
    int getElasticSearchClusterPort();

    /**
     * Elastic search fetch size.
     *
     * @return elastic search fetch size
     */
    int getElasticSearchScrollFetchSize();

    /**
     * Elastic search scroll timeout.
     *
     * @return elastic search scroll timeout
     */
    int getElasticSearchScrollTimeout();

    /**
     * Elastic search call timeout.
     *
     * @return elastic search call timeout
     */
    long getElasticSearchCallTimeout();

    /**
     * Elastic search bulk call timeout.
     *
     * @return elastic search bulk call timeout
     */
    long getElasticSearchBulkCallTimeout();

    /**
     * Names to exclude when refreshing elastic search.
     *
     * @return Names to exclude when refreshing elastic search
     */
    List getElasticSearchRefreshExcludeQualifiedNames();

    /**
     * Catalogs to include when refreshing elastic search.
     *
     * @return Catalogs to include when refreshing elastic search
     */
    String getElasticSearchRefreshIncludeCatalogs();

    /**
     * Databases to include when refreshing elastic search.
     *
     * @return Databases to include when refreshing elastic search
     */
    List getElasticSearchRefreshIncludeDatabases();

    /**
     * Catalogs to include when refreshing elastic search partitions.
     *
     * @return Catalogs to include when refreshing elastic search partitions
     */
    String getElasticSearchRefreshPartitionsIncludeCatalogs();

    /**
     * Threshold no. of databases to delete.
     *
     * @return Threshold no. of databases to delete
     */
    int getElasticSearchThresholdUnmarkedDatabasesDelete();

    /**
     * Threshold no. of tables to delete.
     *
     * @return Threshold no. of tables to delete
     */
    int getElasticSearchThresholdUnmarkedTablesDelete();

    /**
     * Thread count.
     *
     * @return thread count
     */
    int getEventBusExecutorThreadCount();

    /**
     * Event bus thread count.
     *
     * @return thread count
     */
    int getEventBusThreadCount();

    /**
     * Hive partition white list pattern.
     *
     * @return pattern
     */
    String getHivePartitionWhitelistPattern();


    /**
     * If true, will escape partition names when filtering partitions.
     *
     * @return Whether to escape partition names when filtering partitions
     */
    boolean escapePartitionNameOnFilter();

    /**
     * Number of records to fetch in one call from Hive Metastore.
     *
     * @return fetch size
     */
    int getHiveMetastoreFetchSize();

    /**
     * Number of records to save in one call to Hive Metastore.
     *
     * @return batch size
     */
    int getHiveMetastoreBatchSize();

    /**
     * Lookup service admin user name.
     *
     * @return user name
     */
    String getLookupServiceUserAdmin();

    /**
     * Metacat version.
     *
     * @return metacat version
     */
    String getMetacatVersion();

    /**
     * Config location.
     *
     * @return config location
     */
    String getPluginConfigLocation();

    /**
     * Tag service admin username.
     *
     * @return username
     */
    String getTagServiceUserAdmin();

    /**
     * Thrift server max worker threads.
     *
     * @return Thrift server max worker threads
     */
    int getThriftServerMaxWorkerThreads();

    /**
     * Thrift server client timeout.
     *
     * @return Thrift server client timeout
     */
    int getThriftServerSocketClientTimeoutInSeconds();

    /**
     * Epoch.
     *
     * @return epoch
     */
    boolean isEpochInSeconds();

    /**
     * Do we use pig types.
     *
     * @return Do we use pig types
     */
    boolean isUsePigTypes();

    /**
     * Max. number of threads for service.
     *
     * @return Max. number of threads for service
     */
    int getServiceMaxNumberOfThreads();

    /**
     * List of names for which the partition listing show throw error when no filter is specified.
     *
     * @return list of names
     */
    List getNamesToThrowErrorOnListPartitionsWithNoFilter();

    /**
     * Threshold for list of partitions returned.
     *
     * @return Threshold for list of partitions returned
     */
    int getMaxPartitionsThreshold();

    /**
     * Threshold for list of partitions to be added.
     *
     * @return Threshold for list of partitions to be added
     */
    int getMaxAddedPartitionsThreshold();

    /**
     * Threshold for list of partitions to be deleted.
     *
     * @return Threshold for list of partitions to be deleted
     */
    int getMaxDeletedPartitionsThreshold();

    /**
     * Elastic search index.
     *
     * @return elastic search index name
     */
    String getEsIndex();

    /**
     * Elastic search index.
     *
     * @return elastic search merge index name that's the new index to migrate to
     */
    String getMergeEsIndex();

    /**
     * Lifetime.
     *
     * @return lifetime
     */
    int getDataMetadataDeleteMarkerLifetimeInDays();

    /**
     * soft delete data metadata.
     *
     * @return true if we can delete data metadata
     */
    boolean canSoftDeleteDataMetadata();

    /**
     * cascade view and metadata delete on table delete.
     *
     * @return true if cascade
     */
    boolean canCascadeViewsMetadataOnTableDelete();

    /**
     * Max. number of in clause items in user metadata service queries.
     *
     * @return Max. number of in clause items in user metadata service queries
     */
    int getUserMetadataMaxInClauseItems();

    /**
     * Whether or not notifications should be published to SNS. If this is enabled the table topic ARN and
     * partition topic arn must also exist or SNS won't be enabled.
     *
     * @return Whether SNS notifications should be enabled
     */
    boolean isSnsNotificationEnabled();

    /**
     * Get the AWS ARN for the SNS topic to publish to for table related notifications.
     *
     * @return The table topic ARN or null if no property set
     */
    String getSnsTopicTableArn();

    /**
     * Get the AWS ARN for the SNS topic to publish to for partition related notifications.
     *
     * @return The partition topic ARN or null if no property set
     */
    String getSnsTopicPartitionArn();

    /**
     * Get the fallback AWS ARN for the SNS topic to publish to for table related notifications.
     *
     * @return The table topic ARN or null if no property set
     */
    String getFallbackSnsTopicTableArn();

    /**
     * Get the fallback AWS ARN for the SNS topic to publish to for partition related notifications.
     *
     * @return The partition topic ARN or null if no property set
     */
    String getFallbackSnsTopicPartitionArn();

    /**
     * Whether or not notifications should be published to SNS Partition topic. If this is enabled, the
     * partition topic arn must also exist or SNS won't be enabled.
     *
     * @return Whether SNS notifications to partitions topic should be enabled
     */
    boolean isSnsNotificationTopicPartitionEnabled();

    /**
     * Enable attaching the partition ids in the payload.
     *
     * @return whether the partition ids in the payload.
     */
    boolean isSnsNotificationAttachPartitionIdsEnabled();

    /**
     * The number of max partition ids in the payload.
     *
     * @return The number of max partition ids in the payload.
     */
    int getSnsNotificationAttachPartitionIdMax();

    /**
     * Whether or not to delete definition metadata for tables.
     *
     * @return Whether or not to delete definition metadata for tables.
     */
    boolean canDeleteTableDefinitionMetadata();

    /**
     * List of names for which the table definition metadata will be deleted.
     *
     * @return list of names
     */
    Set getNamesEnabledForDefinitionMetadataDelete();

    /**
     * Enable cache.
     *
     * @return true if cache is enabled
     */
    boolean isCacheEnabled();

    /**
     * Enable authorization.
     *
     * @return true if authorization is enabled
     */
    boolean isAuthorizationEnabled();

    /**
     * Get the metacat create acl property.
     *
     * @return The metacat create acl property
     */
    Map> getMetacatCreateAcl();

    /**
     * Get the metacat delete acl property.
     *
     * @return The metacat delete acl property
     */
    Map> getMetacatDeleteAcl();

    /**
     * get Iceberg Table Summary Fetch Size.
     *
     * @return Iceberg Table Summary Fetch Size
     */
    int getIcebergTableSummaryFetchSize();
    /**
     * Enable iceberg table processing.
     *
     * @return true if iceberg table processing is enabled
     */
    boolean isIcebergEnabled();
    /**
     * Enable iceberg table cache.
     *
     * @return true if iceberg table cache is enabled
     */
    boolean isIcebergCacheEnabled();
    /**
     * Enable iceberg table TableMetadata cache.
     *
     * @return true if iceberg table cache is enabled
     */
    boolean isIcebergTableMetadataCacheEnabled();

    /**
     * Enable common view processing.
     *
     * @return true if common view processing is enabled
     */
    boolean isCommonViewEnabled();

    /**
     * Whether the underlying storage table should be deleted
     * for a materialized common view.
     *
     * @return true if the storage table should be deleted when the common view is.
     */
    boolean deleteCommonViewStorageTable();

    /**
     * get Iceberg table refresh metadata location retry number.
     *
     * @return Refresh metadata location retry number.
     */
    int getIcebergRefreshFromMetadataLocationRetryNumber();

    /**
     * get Iceberg table max metadata file size allowed in metacat.
     *
     * @return Refresh Iceberg table max metadata file size.
     */
    long getIcebergMaxMetadataFileSize();

    /**
     * get Iceberg partition uri scheme.
     *
     * @return Iceberg table partition uri scheme.
     */
    String getIcebergPartitionUriScheme();

    /**
     * Whether the table alias is enabled.
     *
     * @return True if it is.
     */
    boolean isTableAliasEnabled();

    /**
     * Set of tags that disable table delete.
     *
     * @return set of tags
     */
    Set getNoTableDeleteOnTags();

    /**
     * Set of tags that disable table rename.
     *
     * @return set of tags
     */
    Set getNoTableRenameOnTags();

    /**
     * Set of tags that disable table update.
     *
     * @return set of tags
     */
    Set getNoTableUpdateOnTags();

    /**
     * Whether the rate limiter is enabled.
     *
     * @return True if it is.
     */
    boolean isRateLimiterEnabled();

    /**
     * Whether the rate limiter is enforced
     * and rejecting requests.
     *
     * @return True if it is.
     */
    boolean isRateLimiterEnforced();

    /**
     * Whether the update iceberg table post event handler
     * is enabled.
     *
     * @return True if it is.
     */
    boolean isUpdateIcebergTableAsyncPostEventEnabled();

    /**
     * Whether to list table names by default on getDatabase request call.
     *
     * @return True if it is.
     */
    boolean listTableNamesByDefaultOnGetDatabase();

    /**
     * Whether to list database names by default on getCatalog request call.
     *
     * @return True if it is.
     */
    boolean listDatabaseNameByDefaultOnGetCatalog();

    /**
     * Get the page size when listing table entities.
     *
     * @return True if it is.
     */
    int getListTableEntitiesPageSize();

    /**
     * Get the page size when listing table names.
     *
     * @return True if it is.
     */
    int getListTableNamesPageSize();

    /**
     * Metadata query timeout in seconds.
     *
     * @return Metadata query timeout in seconds
     */
    int getMetadataQueryTimeout();

    /**
     * Whether to check the existence of the iceberg metadata location before updating the table.
     *
     * @return Whether to check the existence of the iceberg metadata location before updating the table
     */
    boolean isIcebergPreviousMetadataLocationCheckEnabled();

    /**
     * Whether partition definition metadata should be disabled.
     *
     * @return True if it should be blocked.
     */
    boolean disablePartitionDefinitionMetadata();

    /**
     * Whether the request flag to only fetch the iceberg metadata location should be respected.
     *
     * @return True if it should be.
     */
    boolean shouldFetchOnlyMetadataLocationEnabled();
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy