Hi Henrik,

Thanks for reporting the problem.
org.apache.ratis.metrics.MetricsReporting imports
org.apache.hadoop.metrics2.lib.DefaultMetricsSystem,  I guess it is
causing the ClassNotFoundException.  It is a bug. Do you want to file
a JIRA?

Tsz-Wo

On Mon, Sep 30, 2019 at 2:23 AM Henrik Hegardt
<[email protected]> wrote:
>
> Hi everyone,
>
> I'm getting this error while running Ratis:
>
> Caused by: java.io.IOException: java.lang.NoClassDefFoundError:
> org/apache/hadoop/metrics2/lib/DefaultMetricsSystem
>      at org.apache.ratis.util.IOUtils.asIOException(IOUtils.java:54)
>      at org.apache.ratis.util.IOUtils.toIOException(IOUtils.java:61)
>      at org.apache.ratis.util.IOUtils.getFromFuture(IOUtils.java:70)
>      at
> org.apache.ratis.server.impl.RaftServerProxy.getImpls(RaftServerProxy.java:284)
>      at
> org.apache.ratis.server.impl.RaftServerProxy.start(RaftServerProxy.java:296)
>      at test.cluster.ClusterSevice.start(ClusterSevice.java:85)
>      ... 65 more
> Caused by: java.lang.NoClassDefFoundError:
> org/apache/hadoop/metrics2/lib/DefaultMetricsSystem
>      at
> org.apache.ratis.metrics.MetricsReporting.<clinit>(MetricsReporting.java:42)
>      at
> org.apache.ratis.server.metrics.RatisMetrics.<clinit>(RatisMetrics.java:39)
>      at
> org.apache.ratis.server.raftlog.segmented.SegmentedRaftLogWorker.<init>(SegmentedRaftLogWorker.java:176)
>      at
> org.apache.ratis.server.raftlog.segmented.SegmentedRaftLog.<init>(SegmentedRaftLog.java:197)
>      at
> org.apache.ratis.server.raftlog.segmented.SegmentedRaftLog.<init>(SegmentedRaftLog.java:183)
>      at
> org.apache.ratis.server.impl.ServerState.initRaftLog(ServerState.java:188)
>      at
> org.apache.ratis.server.impl.ServerState.<init>(ServerState.java:120)
>      at
> org.apache.ratis.server.impl.RaftServerImpl.<init>(RaftServerImpl.java:110)
>      at
> org.apache.ratis.server.impl.RaftServerProxy.lambda$newRaftServerImpl$2(RaftServerProxy.java:208)
>      at
> java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
>      at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>      at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>      at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: java.lang.ClassNotFoundException:
> org.apache.hadoop.metrics2.lib.DefaultMetricsSystem
>      at
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
>      at
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
>      at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>      ... 13 more
>
> AFAICT this is a class in the dependency
> org.apache.hadoop:hadoop-common:3.1.1. I'm running with the dependencies
> and Ratis 0.4.0
>
>         <dependency>
>              <artifactId>ratis-server</artifactId>
>              <groupId>org.apache.ratis</groupId>
>
>              <exclusions>
>                  <exclusion>
>                      <groupId>log4j</groupId>
>                      <artifactId>log4j</artifactId>
>                  </exclusion>
>                  <exclusion>
>                      <groupId>org.slf4j</groupId>
> <artifactId>slf4j-log4j12</artifactId>
>                  </exclusion>
>              </exclusions>
>          </dependency>
>          <dependency>
>              <artifactId>ratis-grpc</artifactId>
>              <groupId>org.apache.ratis</groupId>
>          </dependency>
>
> And which should be enough according to the documentation. While it's
> possible to include this dependency, it pulls in a lot of other
> dependencies. While org.apache.ratis.metrics.MetricsReporting class does
> have a dependency on the
> org.apache.hadoop.metrics2.lib.DefaultMetricsSystem class, ratis-metrics
> doesn't define a dependency to org.apache.hadoop:hadoop-common:3.1.1 in
> its pom. Is this intended or am I missing something?
>
> Thank you for all your efforts.
>
> /Henrik
>
>
>
>

Reply via email to