Skip to content

Conversation

@okumin
Copy link
Contributor

@okumin okumin commented Oct 28, 2025

What changes were proposed in this pull request?

Remove the com.codahale.metrics.Counter dependency from metastore-rest-catalog.

Why are the changes needed?

A complicated dependency management can result in NoSuchMethodError.

https://issues.apache.org/jira/browse/HIVE-29145

Does this PR introduce any user-facing change?

Yes if a user is retrieving metrics. As the REST API is still developing, I'd say the impact isn't severe.

How was this patch tested?

Reproduction with 4.1.0.

$ docker run --rm --env SERVICE_NAME=metastore -p 9001:9001 -v ./standalone-metastore/packaging/src/docker/conf/metastore-site.xml:/opt/hive/conf/metastore-site.xml apache/hive:4.1.0
$ curl -i 'http://localhost:9001/iceberg/v1/config'
HTTP/1.1 500 Server Error
Cache-Control: must-revalidate,no-cache,no-store
Content-Type: text/html;charset=iso-8859-1
Content-Length: 3932
Connection: close

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
<title>Error 500 java.lang.NoSuchMethodError: &apos;com.codahale.metrics.Counter org.apache.hadoop.hive.metastore.metrics.Metrics.getOrCreateCounter(java.lang.String)&apos;</title>
</head>
<body><h2>HTTP ERROR 500 java.lang.NoSuchMethodError: &apos;com.codahale.metrics.Counter org.apache.hadoop.hive.metastore.metrics.Metrics.getOrCreateCounter(java.lang.String)&apos;</h2>
<table>
<tr><th>URI:</th><td>/iceberg/v1/config</td></tr>
<tr><th>STATUS:</th><td>500</td></tr>
<tr><th>MESSAGE:</th><td>java.lang.NoSuchMethodError: &apos;com.codahale.metrics.Counter org.apache.hadoop.hive.metastore.metrics.Metrics.getOrCreateCounter(java.lang.String)&apos;</td></tr>
<tr><th>SERVLET:</th><td>org.apache.iceberg.rest.HMSCatalogServlet-7bc2bb58</td></tr>
<tr><th>CAUSED BY:</th><td>java.lang.NoSuchMethodError: &apos;com.codahale.metrics.Counter org.apache.hadoop.hive.metastore.metrics.Metrics.getOrCreateCounter(java.lang.String)&apos;</td></tr>
</table>
<h3>Caused by:</h3><pre>java.lang.NoSuchMethodError: &apos;com.codahale.metrics.Counter org.apache.hadoop.hive.metastore.metrics.Metrics.getOrCreateCounter(java.lang.String)&apos;
	at org.apache.iceberg.rest.HMSCatalogAdapter.handleRequest(HMSCatalogAdapter.java:538)
	at org.apache.iceberg.rest.HMSCatalogAdapter.execute(HMSCatalogAdapter.java:632)
	at org.apache.iceberg.rest.HMSCatalogServlet.service(HMSCatalogServlet.java:80)

Tested this patch.

$ mvn clean install -Pdist -DskipTests -Dmaven.javadoc.skip=true
$ ./packaging/src/docker/build.sh
...
 => => naming to docker.io/apache/hive:4.2.0-SNAPSHOT
$ docker run --rm --env SERVICE_NAME=metastore -p 9001:9001 -v ./standalone-metastore/packaging/src/docker/conf/metastore-site.xml:/opt/hive/conf/metastore-site.xml apache/hive:4.2.0-SNAPSHOT
...
$ curl -i 'http://localhost:9001/iceberg/v1/config'
HTTP/1.1 200 OK
Date: Tue, 28 Oct 2025 09:25:57 GMT
Content-Type: application/json
Vary: Accept-Encoding, User-Agent
Content-Length: 1184

{"defaults":{},"overrides":{},"endpoints":["GET v1/config","GET /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces","HEAD /v1/{prefix}/namespaces/{namespace}","GET /v1/{prefix}/namespaces/{namespace}","DELETE /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces/{namespace}/properties","GET /v1/{prefix}/namespaces/{namespace}/tables","POST /v1/{prefix}/namespaces/{namespace}/tables","HEAD /v1/{prefix}/namespaces/{namespace}/tables/{table}","GET /v1/{prefix}/namespaces/{namespace}/tables/{table}","POST /v1/{prefix}/namespaces/{namespace}/register","POST /v1/{prefix}/namespaces/{namespace}/tables/{table}","DELETE /v1/{prefix}/namespaces/{namespace}/tables/{table}","POST /v1/{prefix}/tables/rename","POST /v1/{prefix}/namespaces/{namespace}/tables/{table}/metrics","POST /v1/{prefix}/transactions/commit","GET /v1/{prefix}/namespaces/{namespace}/views","HEAD /v1/{prefix}/namespaces/{namespace}/views/{view}","GET /v1/{prefix}/namespaces/{namespace}/views/{view}","POST /v1/{prefix}/namespaces/{namespace}/views","POST /v1/{prefix}/namespaces/{namespace}/views/{view}","POST /v1/{prefix}/views/rename","DELETE /v1/{prefix}/namespaces/{namespace}/views/{view}"]}

@sonarqubecloud
Copy link

@okumin okumin marked this pull request as ready for review October 28, 2025 12:07
@okumin okumin changed the title [WIP] HIVE-29145: HMS Iceberg REST fails on common HMS HIVE-29145: HMS Iceberg REST fails on common HMS Oct 28, 2025
Copy link
Member

@deniskuzZ deniskuzZ left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants