[
https://issues.apache.org/jira/browse/HIVE-26793?focusedWorklogId=837429&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-837429
]
ASF GitHub Bot logged work on HIVE-26793:
-----------------------------------------
Author: ASF GitHub Bot
Created on: 06/Jan/23 08:14
Start Date: 06/Jan/23 08:14
Worklog Time Spent: 10m
Work Description: kokila-19 commented on code in PR #3822:
URL: https://github.com/apache/hive/pull/3822#discussion_r1063224968
##########
standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/utils/MetaStoreUtils.java:
##########
@@ -1143,15 +1143,26 @@ public static TableName getTableNameFor(Table table) {
/**
* Because TABLE_NO_AUTO_COMPACT was originally assumed to be
NO_AUTO_COMPACT and then was moved
* to no_auto_compact, we need to check it in both cases.
+ * Check the database level no_auto_compact , if present it is given
priority else table level no_auto_compact is considered.
*/
- public static boolean isNoAutoCompactSet(Map<String, String> parameters) {
- String noAutoCompact =
- parameters.get(hive_metastoreConstants.TABLE_NO_AUTO_COMPACT);
+ public static boolean isNoAutoCompactSet(Map<String, String> dbParameters,
Map<String, String> tblParameters) {
+ String dbNoAutoCompact = getNoAutoCompact(dbParameters);
+ if (dbNoAutoCompact == null) {
+ LOG.debug("Using table configuration '" +
hive_metastoreConstants.TABLE_NO_AUTO_COMPACT + "' for compaction");
+ String noAutoCompact = getNoAutoCompact(tblParameters);
+ return noAutoCompact != null && noAutoCompact.equalsIgnoreCase("true");
+ }
+ LOG.debug("Using database configuration '" +
hive_metastoreConstants.TABLE_NO_AUTO_COMPACT + "' for compaction");
+ return dbNoAutoCompact.equalsIgnoreCase("true");
+ }
+
+ // Get no_auto_compact property by checking in both lower and upper cases
+ private static String getNoAutoCompact(Map<String, String> parameters) {
Review Comment:
Actually no ., when db level NO_AUTO_COMPACT is not set which is null(so i
need null to check), we consider the table level ., this method is common to
get config for both db and table level .,
Issue Time Tracking
-------------------
Worklog Id: (was: 837429)
Time Spent: 2h 40m (was: 2.5h)
> Create a new configuration to override "no compaction" for tables
> -----------------------------------------------------------------
>
> Key: HIVE-26793
> URL: https://issues.apache.org/jira/browse/HIVE-26793
> Project: Hive
> Issue Type: Improvement
> Reporter: Kokila N
> Assignee: Kokila N
> Priority: Major
> Labels: pull-request-available
> Time Spent: 2h 40m
> Remaining Estimate: 0h
>
> Currently a simple user can create a table with
> {color:#6a8759}no_auto_compaction=true{color} table property and create an
> aborted write transaction writing to this table. This way a malicious user
> can prevent cleaning up data for the aborted transaction, creating
> performance degradation.
> This configuration should be allowed to overridden on a database level:
> adding {color:#6a8759}no_auto_compaction=false{color} should override the
> table level setting forcing the initiator to schedule compaction for all
> tables.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)