Shohei Okumiya created HIVE-29563:
-------------------------------------
Summary: Iceberg REST Catalog's error logs are too verbose
Key: HIVE-29563
URL: https://issues.apache.org/jira/browse/HIVE-29563
Project: Hive
Issue Type: Improvement
Components: Iceberg integration, Standalone Metastore
Affects Versions: 4.2.0
Reporter: Shohei Okumiya
Assignee: Shohei Okumiya
The current REST Catalog implementation logs details even for user-side errors.
h1. Reproduction
First, we will launch a metastore.
{code:text}
$ docker run --rm --name hive-standalone-metastore \
-p 9083:9083 \
-p 9001:9001 \
apache/hive:standalone-metastore-nightly
{code}
Then, we will trigger a 404 error.
{code:text}
$ curl -i
http://localhost:9001/iceberg/v1/namespaces/default/tables/does_not_exist
HTTP/1.1 404 Not Found
Date: Sun, 12 Apr 2026 10:12:58 GMT
Content-Type: application/json
Content-Length: 2884
{"error":{"message":"Table does not exist: default.does_not_exist
{code}
We can see a long stack trace on the HMS container.
{code:text}
2026-04-12T10:12:58,766 ERROR [qtp2013205710-64] rest.HMSCatalogServlet: Error
processing REST request
org.apache.iceberg.exceptions.RESTException: Unhandled error:
ErrorResponse(code=404, type=NoSuchTableException, message=Table does not
exist: default.does_not_exist)
org.apache.iceberg.exceptions.NoSuchTableException: Table does not exist:
default.does_not_exist
at
org.apache.iceberg.BaseMetastoreCatalog.loadTable(BaseMetastoreCatalog.java:55)
at
org.apache.iceberg.rest.CatalogHandlers.loadTable(CatalogHandlers.java:329)
at
org.apache.iceberg.rest.HMSCatalogAdapter.loadTable(HMSCatalogAdapter.java:297)
at
org.apache.iceberg.rest.HMSCatalogAdapter.handleRequest(HMSCatalogAdapter.java:447)
at
org.apache.iceberg.rest.HMSCatalogAdapter.execute(HMSCatalogAdapter.java:506)
at
org.apache.iceberg.rest.HMSCatalogServlet.service(HMSCatalogServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
at
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:554)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at
org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:772)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)
at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:516)
at
org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
at
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
at
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
at java.base/java.lang.Thread.run(Unknown Source)
at
org.apache.iceberg.rest.HMSCatalogAdapter.execute(HMSCatalogAdapter.java:519)
at
org.apache.iceberg.rest.HMSCatalogServlet.service(HMSCatalogServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
at
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:554)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at
org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:772)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)
at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:516)
at
org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
at
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
at
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
at java.base/java.lang.Thread.run(Unknown Source)
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)