Not able to add polaris catalog as datasource

Hi Team,

I am trying to add polaris catalog in dremio add source.

my dremio setup is running on k8s on my local , and polaris is backed by minio which is runing on my local

on Dremio home page → Add source → Add catalog → Iceberg Polaris catalog

I entered catalog name
url → http://:/api/catalog

checked vended crendential

but I am seeing this error in dremio-master

Exception while creating source.

com.dremio.common.exceptions.UserException: Could not connect to test1catalog, check your connection information and credentials

at com.dremio.common.exceptions.UserException$Builder.build(UserException.java:987)

at com.dremio.exec.catalog.ManagedStoragePlugin.postSourceModify(ManagedStoragePlugin.java:752)

at com.dremio.exec.catalog.ManagedStoragePlugin.createOrUpdateSource(ManagedStoragePlugin.java:595)

at com.dremio.exec.catalog.ManagedStoragePlugin.createSource(ManagedStoragePlugin.java:493)

at com.dremio.exec.catalog.ManagedStoragePluginsManager.create(ManagedStoragePluginsManager.java:205)

at com.dremio.exec.catalog.CatalogServiceImpl.createPlugin(CatalogServiceImpl.java:507)

at com.dremio.exec.catalog.CatalogServiceImpl$SourceModifier.createSource(CatalogServiceImpl.java:1128)

at com.dremio.exec.catalog.CatalogImpl.createSource(CatalogImpl.java:2865)

at com.dremio.exec.catalog.DelegatingCatalog.createSource(DelegatingCatalog.java:505)

at com.dremio.exec.catalog.EnterpriseCatalogImpl.createSource(EnterpriseCatalogImpl.java:1399)

at com.dremio.exec.catalog.UserContextualizedCatalogImpl.lambda$createSource$132(UserContextualizedCatalogImpl.java:1118)

at com.dremio.context.RequestContext.run(RequestContext.java:112)

at com.dremio.exec.catalog.UserContextualizedCatalogImpl.createSource(UserContextualizedCatalogImpl.java:1118)

at com.dremio.exec.catalog.SourceAccessChecker.createSource(SourceAccessChecker.java:534)

at com.dremio.exec.catalog.DelegatingCatalog.createSource(DelegatingCatalog.java:505)

at com.dremio.dac.service.source.SourceService.registerSourceWithRuntimeInternal(SourceService.java:224)

at com.dremio.dac.service.source.SourceService.registerSourceWithRuntime(SourceService.java:191)

at com.dremio.dac.resource.EnterprisePutSourceResource.putSource(EnterprisePutSourceResource.java:146)

at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)

at java.base/java.lang.reflect.Method.invoke(Method.java:580)

at com.dremio.dac.server.EnterpriseContextualizedResourceMethodInvocationHandlerProvider.lambda$create$0(EnterpriseContextualizedResourceMethodInvocationHandlerProvider.java:55)

at com.dremio.context.RequestContext.call(RequestContext.java:213)

at com.dremio.dac.server.EnterpriseContextualizedResourceMethodInvocationHandlerProvider.lambda$create$1(EnterpriseContextualizedResourceMethodInvocationHandlerProvider.java:55)

at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)

at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)

at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219)

at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)

at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)

at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)

at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)

at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256)

at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)

at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)

at org.glassfish.jersey.internal.Errors.process(Errors.java:292)

at org.glassfish.jersey.internal.Errors.process(Errors.java:274)

at org.glassfish.jersey.internal.Errors.process(Errors.java:244)

at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)

at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)

at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684)

at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398)

at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350)

at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:379)

at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312)

at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)

at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)

at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)

at com.dremio.dac.server.GenericResponseHeadersFilter.doFilter(GenericResponseHeadersFilter.java:44)

at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)

at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)

at com.dremio.dac.server.SecurityHeadersFilter.doFilter(SecurityHeadersFilter.java:71)

at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)

at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)

at com.dremio.dac.server.DisableHttpMethodsFilter.doFilter(DisableHttpMethodsFilter.java:49)

at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)

at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)

at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552)

at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)

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.gzip.GzipHandler.handle(GzipHandler.java:722)

at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:54)

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.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)

at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)

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(Thread.java:1583)

Caused by: java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke “java.lang.Throwable.getMessage()” because the return value of “java.lang.Exception.getCause()” is null

at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)

at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096)

at com.dremio.exec.catalog.ManagedStoragePlugin.replacePlugin(ManagedStoragePlugin.java:1867)

at com.dremio.exec.catalog.ManagedStoragePlugin.createOrUpdateSource(ManagedStoragePlugin.java:560)

… 79 common frames omitted

Caused by: java.lang.NullPointerException: Cannot invoke “java.lang.Throwable.getMessage()” because the return value of “java.lang.Exception.getCause()” is null

at com.dremio.exec.catalog.ManagedStoragePlugin.tryGetState(ManagedStoragePlugin.java:1790)

at com.dremio.exec.catalog.ManagedStoragePlugin.initPlugin(ManagedStoragePlugin.java:1678)

at com.dremio.exec.catalog.ManagedStoragePlugin.setLocals(ManagedStoragePlugin.java:1639)

at com.dremio.exec.catalog.ManagedStoragePlugin.lambda$newStartSupplier$4(ManagedStoragePlugin.java:1029)

at com.dremio.exec.catalog.ManagedStoragePlugin.lambda$nameSupplier$6(ManagedStoragePlugin.java:1108)

at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)

at com.dremio.context.RequestContext.run(RequestContext.java:112)

at com.dremio.common.concurrent.ContextMigratingExecutorService.lambda$decorate$4(ContextMigratingExecutorService.java:246)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)

what am I missing?

Please help

I tried curl from dremio-master pod to get polaris credential it worked from pod but not able to add catalog

Hey there. Could you share a bit more information about your setup and how you are hitting this? It would be useful to have the version you are hitting this on (Enterprise SW + version being used or Dremio Cloud) and some screenshots of how you are configuring your source.

If you are trying to connect to a Polaris catalog hosted outside of Dremio, it can be reached via the Iceberg REST Catalog source present in Dremio Cloud and Enterprise SW. We have some example configurations captured in our documentation here Iceberg REST Catalog | Dremio Documentation

Hi @danh ,
i am using enterprise latest edition and dremio on k8s running on my local.

Getting this error:
Getting an S3V2Client in S3FileSystem:2061391022

2026-01-25 12:50:21,948 [dremio-metadata-io-pool-4] ERROR c.d.plugins.s3.store.S3FileSystem - Error while listing S3 buckets

software.amazon.awssdk.services.s3.model.S3Exception: The Access Key Id you provided does not exist in our records. (Service: S3, Status Code: 403, Request ID: 188DFA49700D7ADA, Extended Request ID: dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8) (SDK Attempt Count: 1)

at software.amazon.awssdk.services.s3.model.S3Exception$BuilderImpl.build(S3Exception.java:113)

at software.amazon.awssdk.services.s3.model.S3Exception$BuilderImpl.build(S3Exception.java:61)

at software.amazon.awssdk.core.internal.http.pipeline.stages.utils.RetryableStageHelper.retryPolicyDisallowedRetryException(RetryableStageHelper.java:168)

at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:73)

at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:36)

at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)

at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:53)

at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:35)

credentials works fine in my local

Can you give us some information about your layout here?

What is your storage backend for your Polaris catalog server? It would be good to ensure that all tables in the catalog point to the expected location. Seeing credentials not be recognized can sometimes indicate that a table can’t be reached because the credentials tie to one storage location while the table is actually in a different location.

Also, can you confirm that you are able to reach your Polaris and MinIO deployments from your k8s environment from Dremio? I just want to be sure we rule out anything that could be networking related as well.