macpie opened a new issue, #8704:
URL: https://github.com/apache/gravitino/issues/8704
### Version
main branch
### Describe what's wrong
I have been playing with image `apache/gravitino-iceberg-rest:1.0.0` locally
(Mac OS M1) with no issue.
When I tried to run the same setup on my Ubuntu server, the iceberg rest
server would not start.
Going back to 0.9.1 fixed the issue.
### Error message and/or stacktrace
```
cat
/root/gravitino-iceberg-rest-server/logs/gravitino-iceberg-rest-server.out
2025-09-26T19:17:53.846005134Z main ERROR Unable to create Lookup for ctx
java.lang.NoSuchMethodError: 'java.util.stream.Stream
org.apache.logging.log4j.util.ServiceLoaderUtil.loadServices(java.lang.Class,
java.lang.invoke.MethodHandles$Lookup, boolean)'
at
org.apache.logging.log4j.core.impl.ThreadContextDataInjector.getServiceProviders(ThreadContextDataInjector.java:77)
at
org.apache.logging.log4j.core.impl.ThreadContextDataInjector.<clinit>(ThreadContextDataInjector.java:64)
at
org.apache.logging.log4j.core.impl.ThreadContextDataInjector$ForDefaultThreadContextMap.<init>(ThreadContextDataInjector.java:93)
at
org.apache.logging.log4j.core.impl.ContextDataInjectorFactory.createDefaultInjector(ContextDataInjectorFactory.java:91)
at
org.apache.logging.log4j.core.impl.ContextDataInjectorFactory.createInjector(ContextDataInjectorFactory.java:71)
at
org.apache.logging.log4j.core.lookup.ContextMapLookup.<init>(ContextMapLookup.java:34)
at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at
java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at
org.apache.logging.log4j.core.util.ReflectionUtil.instantiate(ReflectionUtil.java:189)
at
org.apache.logging.log4j.core.lookup.Interpolator.<init>(Interpolator.java:86)
at
org.apache.logging.log4j.core.lookup.Interpolator.<init>(Interpolator.java:105)
at
org.apache.logging.log4j.core.config.AbstractConfiguration.<init>(AbstractConfiguration.java:135)
at
org.apache.logging.log4j.core.config.NullConfiguration.<init>(NullConfiguration.java:32)
at
org.apache.logging.log4j.core.LoggerContext.<clinit>(LoggerContext.java:74)
at
org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.createContext(ClassLoaderContextSelector.java:254)
at
org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:218)
at
org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:136)
at
org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:123)
at
org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:117)
at
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:150)
at
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:138)
at
org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:136)
at
org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:58)
at
org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:46)
at
org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:32)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:447)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:472)
at
org.apache.gravitino.iceberg.server.GravitinoIcebergRESTServer.<clinit>(GravitinoIcebergRESTServer.java:32)
Exception in thread "main" java.lang.NoSuchMethodError:
'java.util.stream.Stream
org.apache.logging.log4j.util.ServiceLoaderUtil.loadServices(java.lang.Class,
java.lang.invoke.MethodHandles$Lookup, boolean)'
at
org.apache.logging.log4j.core.util.WatchManager.<init>(WatchManager.java:137)
at
org.apache.logging.log4j.core.config.AbstractConfiguration.<init>(AbstractConfiguration.java:142)
at
org.apache.logging.log4j.core.config.NullConfiguration.<init>(NullConfiguration.java:32)
at
org.apache.logging.log4j.core.LoggerContext.<clinit>(LoggerContext.java:74)
at
org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.createContext(ClassLoaderContextSelector.java:254)
at
org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:218)
at
org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:136)
at
org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:123)
at
org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:117)
at
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:150)
at
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:138)
at
org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:136)
at
org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:58)
at
org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:46)
at
org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:32)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:447)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:472)
at
org.apache.gravitino.iceberg.server.GravitinoIcebergRESTServer.<clinit>(GravitinoIcebergRESTServer.java:32)
```
### How to reproduce
Docker image `apache/gravitino-iceberg-rest:1.0.0` on Ubuntu
### Additional context
Compose used
```
postgres:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
ports:
- 5432:5432
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d postgres"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
gravitino:
build:
context: .
dockerfile: Dockerfile
image: local/gravitino
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
- GRAVITINO_AUX_SERVICES=iceberg-rest
- GRAVITINO_IO_IMPL=org.apache.iceberg.aws.s3.S3FileIO
- GRAVITINO_WAREHOUSE=${AWS_BUCKET}
- GRAVITINO_CREDENTIAL_PROVIDERS=s3-secret-key
- GRAVITINO_S3_ACCESS_KEY=${AWS_ACCESS_KEY_ID}
- GRAVITINO_S3_SECRET_KEY=${AWS_SECRET_ACCESS_KEY}
- GRAVITINO_S3_REGION=${AWS_REGION}
- GRAVITINO_CATALOG_BACKEND=jdbc
- GRAVITINO_URI=jdbc:postgresql://postgres:5432/postgres
- GRAVITINO_JDBC_DRIVER=org.postgresql.Driver
- GRAVITINO_JDBC_USER=${POSTGRES_USER}
- GRAVITINO_JDBC_PASSWORD=${POSTGRES_PASSWORD}
ports:
- 9001:9001
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:9001/iceberg/v1/config
|| exit 1"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
```
and Image
```
FROM apache/gravitino-iceberg-rest:0.9.1
WORKDIR /root/gravitino-iceberg-rest-server/libs
RUN curl -L -o iceberg-aws-bundle-1.9.2.jar \
https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-aws-bundle/1.9.2/iceberg-aws-bundle-1.9.2.jar
&& \
curl -L -o postgresql-42.7.8.jar \
https://repo1.maven.org/maven2/org/postgresql/postgresql/42.7.8/postgresql-42.7.8.jar
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]