Skip to content

Commit

Permalink
Reduce Iceberg metrics reporting verbosity in logs
Browse files Browse the repository at this point in the history
Iceberg's new feature, metrics reporting, by default logs quite long log
lines at INFO level for every table scanned in the query. This is quite
verbose, potentially affecting log rotation on production installations
and affecting Trino CI Github Actions logs.

Move the metrics reporting to DEBUG log level, at least for table
instances instantiated directly in Trino code.
  • Loading branch information
findepi authored and losipiuk committed Dec 22, 2022
1 parent 652664c commit a681efb
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@
import static io.trino.plugin.iceberg.IcebergTableProperties.getTableLocation;
import static io.trino.plugin.iceberg.PartitionFields.parsePartitionFields;
import static io.trino.plugin.iceberg.PartitionFields.toPartitionFields;
import static io.trino.plugin.iceberg.TrinoMetricsReporter.TRINO_METRICS_REPORTER;
import static io.trino.plugin.iceberg.TypeConverter.toIcebergType;
import static io.trino.plugin.iceberg.TypeConverter.toTrinoType;
import static io.trino.plugin.iceberg.util.Timestamps.timestampTzFromMicros;
Expand Down Expand Up @@ -172,7 +173,7 @@ public static Table loadIcebergTable(TrinoCatalog catalog, IcebergTableOperation
table.getTableName(),
Optional.empty(),
Optional.empty());
return new BaseTable(operations, quotedTableName(table));
return new BaseTable(operations, quotedTableName(table), TRINO_METRICS_REPORTER);
}

public static Table getIcebergTableWithMetadata(
Expand All @@ -190,7 +191,7 @@ public static Table getIcebergTableWithMetadata(
Optional.empty(),
Optional.empty());
operations.initializeFromMetadata(tableMetadata);
return new BaseTable(operations, quotedTableName(table));
return new BaseTable(operations, quotedTableName(table), TRINO_METRICS_REPORTER);
}

public static Map<String, Object> getIcebergTableProperties(Table icebergTable)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/*
* 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 io.trino.plugin.iceberg;

import io.airlift.log.Logger;
import org.apache.iceberg.metrics.LoggingMetricsReporter;
import org.apache.iceberg.metrics.MetricsReport;
import org.apache.iceberg.metrics.MetricsReporter;

/**
* Trino default {@link MetricsReporter} implementation.
* <p>
* Similar to Iceberg's default {@link MetricsReporter} implementation,
* the {@link LoggingMetricsReporter}, but does not log at {@code INFO} level,
* just eliminating log file size impact.
*
* @see LoggingMetricsReporter
*/
public enum TrinoMetricsReporter
implements MetricsReporter
{
TRINO_METRICS_REPORTER;

private static final Logger log = Logger.get(TrinoMetricsReporter.class);

@Override
public void report(MetricsReport report)
{
log.debug("Received metrics report: %s", report);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@
import static io.trino.plugin.iceberg.IcebergUtil.getIcebergTableWithMetadata;
import static io.trino.plugin.iceberg.IcebergUtil.quotedTableName;
import static io.trino.plugin.iceberg.IcebergUtil.validateTableCanBeDropped;
import static io.trino.plugin.iceberg.TrinoMetricsReporter.TRINO_METRICS_REPORTER;
import static io.trino.plugin.iceberg.catalog.glue.GlueIcebergUtil.getMaterializedViewTableInput;
import static io.trino.plugin.iceberg.catalog.glue.GlueIcebergUtil.getTableInput;
import static io.trino.plugin.iceberg.catalog.glue.GlueIcebergUtil.getViewTableInput;
Expand Down Expand Up @@ -330,7 +331,7 @@ public Table loadTable(ConnectorSession session, SchemaTableName table)
table.getTableName(),
Optional.empty(),
Optional.empty());
return new BaseTable(operations, quotedTableName(table)).operations().current();
return new BaseTable(operations, quotedTableName(table), TRINO_METRICS_REPORTER).operations().current();
});

return getIcebergTableWithMetadata(
Expand Down

0 comments on commit a681efb

Please sign in to comment.