Hello leaf-team,
I have setup a custom service-registry following the leaf-documentation. Due to project limitations, I had to build a 3.5 data service and upgrade to 3.6. See here
The issue is I am getting this error in the logs.
13:17:55.280 [qtp2005232837-42] e[32mINFO e[m c.l.f.l.LeafBaseDataServiceApplication - LEAF traceId=611032bb142e4bb8b10b863787ddaeaa, OpenTracing traceId=, OpenTracing spanId=, username=AnonymousSystemUser called IDataObjectService.loadByQuery with arguments (dataObjectQuery = DataObjectQuery [name=<Unnamed Query>, id=null]) which returned [Falc2onService (OpenskyService) { }]
2022-11-01 13:17:55,810 qtp2005232837-43 ERROR An exception occurred processing Appender Console org.apache.logging.log4j.core.appender.AppenderLoggingException: java.lang.NoSuchMethodError: 'java.util.Stack org.apache.logging.log4j.util.StackLocatorUtil.getCurrentStackTrace()'
at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:165)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:134)
at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:125)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:89)
at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:542)
at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:500)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:483)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142)
at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2017)
at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
at org.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:750)
at com.leidos.leaf.hooked.default_.hooks.LogHook.lambda$hookInvoker$2(LogHook.java:176)
at com.leidos.leaf.hooked.IMethod.invoke(IMethod.java:125)
at com.leidos.leaf.hooked.default_.hooks.TimeLimiterHook.lambda$hookInvoker$1(TimeLimiterHook.java:95)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromCallable.subscribeActual(MaybeFromCallable.java:47)
at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5375)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeTimeoutMaybe.subscribeActual(MaybeTimeoutMaybe.java:50)
at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5375)
at io.reactivex.rxjava3.core.Maybe.blockingGet(Maybe.java:2859)
at com.leidos.leaf.hooked.default_.hooks.TimeLimiterHook.lambda$hookInvoker$2(TimeLimiterHook.java:97)
at com.leidos.leaf.hooked.BaseExtensibleService.invoke(BaseExtensibleService.java:129)
at com.leidos.leaf.dataobject.service.DataObjectServiceExtensible.load(DataObjectServiceExtensible.java:888)
at com.leidos.leaf.platform.servicediscovery.ServiceRegistry.loadRegisteredService(ServiceRegistry.java:132)
at com.leidos.leaf.platform.servicediscovery.ServiceRegistry.registerService(ServiceRegistry.java:56)
at com.leidos.leaf.platform.servicediscovery.rest.ServiceRegistryRestResource.registerService(ServiceRegistryRestResource.java:92)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:170)
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:130)
at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:660)
at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:524)
at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:474)
at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)
at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:476)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:434)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:408)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:69)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:492)
at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:261)
at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:161)
at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)
at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:164)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:247)
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:249)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:60)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:763)
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:59)
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:400)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:645)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:392)
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:829)
Caused by: java.lang.NoSuchMethodError: 'java.util.Stack org.apache.logging.log4j.util.StackLocatorUtil.getCurrentStackTrace()'
at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:111)
at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:96)
at org.apache.logging.log4j.core.impl.Log4jLogEvent.getThrownProxy(Log4jLogEvent.java:629)
at org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter.format(ExtendedThrowablePatternConverter.java:63)
at org.apache.logging.log4j.core.layout.PatternLayout$NoFormatPatternSerializer.toSerializable(PatternLayout.java:343)
at org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:241)
at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:226)
at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:60)
at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:197)
at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:190)
at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:181)
at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161)
... 81 more
It doesn’t seem to break anything as the service-registry is deployed and is discovering all the services. This is my build.gradle
plugins {
id "application"
id "com.google.cloud.tools.jib" version "3.1.4"
id "eclipse"
id "com.leidos.leaf.base" version "3.6.0"
id "com.leidos.leaf.metadata" version "3.6.0"
id 'java-library'
id "com.github.hierynomus.license" version "0.15.0"
id 'maven-publish'
id 'maven'
id 'jacoco'
id 'org.sonarqube'
id 'com.palantir.git-version'
id 'org.owasp.dependencycheck'
id 'org.cyclonedx.bom'
}
apply from: "$rootDir/gradle/integrationTest.gradle"
apply from: "$rootDir/gradle/jacocoConfiguration.gradle"
apply from: "$rootDir/gradle/sonarqube.gradle"
apply from: "$rootDir/gradle/publishing.gradle"
apply from: "$rootDir/gradle/licensing.gradle"
apply from: "$rootDir/gradle/dependencyCheck.gradle"
generateMetadataConstants {
dependsOn 'licenseFormat'
}
version = "0.1.0"
group = "com.leidos.falc2on.services.serviceregistry"
repositories {
leafMavenRepo()
mavenLocal()
}
leaf {
frameworkVersion = "3.6.1"
platformVersion = "3.6.0"
metadata {
dirs = [
"src/main/resources/service_registry/beanmetadata":
"${buildDir}/generated/src/main/java/${project.group.replace('.', '/')}/generated/metadata"
]
lookupListDirs = [
"src/main/resources/service_registry/lookuplists":
"${buildDir}/generated/src/main/java/${project.group.replace('.', '/')}/generated/lookuplists"
]
jar {
enabled = true
}
}
}
ext {
versions = [
jettyMetrics: "4.1.0",
jettyServlet: "9.4.44.v20210927",
jettyWebsocket: "9.4.44.v20210927",
restEasy: "4.6.1.Final",
prometheus: "0.8.0",
log4j2: "2.17.0",
junit: "5.7.1"
]
}
configurations {
all*.exclude group: 'log4j', module: 'log4j'
all*.exclude group: 'org.slf4j', module: 'slf4j-log4j12'
}
dependencies {
api "com.leidos.falc2on.base:leaf-app-base:[4.0, 5.0)"
implementation "com.leidos.leaf:framework-services-rest-easy"
implementation "com.leidos.leaf:framework-services-kafka"
implementation "com.leidos.leaf:framework-services-mongo"
implementation "com.leidos.leaf:framework-services-hibernate"
implementation "com.leidos.leaf:framework-services-metrics"
implementation "com.leidos.leaf:framework-services-prometheus"
implementation "org.apache.logging.log4j:log4j-core:${versions.log4j2}"
implementation "org.apache.logging.log4j:log4j-slf4j-impl:${versions.log4j2}"
implementation "org.apache.logging.log4j:log4j-1.2-api:${versions.log4j2}"
implementation "com.leidos.leaf:platform-services-message-handling"
implementation "com.leidos.leaf:platform-services-service-discovery"
implementation "io.prometheus:simpleclient_hotspot:${versions.prometheus}"
implementation "io.prometheus:simpleclient_dropwizard:${versions.prometheus}"
implementation "io.prometheus:simpleclient_servlet:${versions.prometheus}"
implementation "io.dropwizard.metrics:metrics-jetty9:${versions.jettyMetrics}"
implementation "org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final"
implementation "org.eclipse.jetty:jetty-servlet:${versions.jettyServlet}"
implementation "org.eclipse.jetty.websocket:javax-websocket-server-impl:${versions.jettyWebsocket}"
implementation "org.jboss.resteasy:resteasy-wadl:${versions.restEasy}"
implementation "io.swagger.core.v3:swagger-jaxrs2:2.1.9"
implementation "org.aeonbits.owner:owner:1.0.12"
implementation "com.github.ben-manes.caffeine:jcache:2.8.5"
runtimeOnly "com.h2database:h2:1.4.200"
testImplementation "org.junit.jupiter:junit-jupiter-api:${versions.junit}"
testImplementation "org.mockito:mockito-core:3.5.0"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${versions.junit}"
constraints {
implementation("org.apache.logging.log4j:log4j-core:${versions.log4j2}") {
because 'previous versions have a potential vulnerability impacting this application'
}
implementation("org.apache.logging.log4j:log4j-slf4j-impl:${versions.log4j2}") {
because 'previous versions have a potential vulnerability impacting this application'
}
implementation("org.apache.logging.log4j:log4j-1.2-api:${versions.log4j2}") {
because 'previous versions have a potential vulnerability impacting this application'
}
}
}
application {
mainClassName = 'com.leidos.falc2on.services.serviceregistry.ServiceRegistryApplication'
}
test {
useJUnitPlatform()
}
jib {
from {
//The original location of this image can be found here: registry1.dso.mil/ironbank/redhat/openjdk/openjdk11
image 'docker-group.leidos-leaf.com/ironbank/redhat/openjdk/openjdk11:1.11'
}
container {
creationTime = 'USE_CURRENT_TIMESTAMP'
jvmFlags = ['-XX:+HeapDumpOnOutOfMemoryError', '-XX:HeapDumpPath=/tmp/']
}
}
Any ideas on what is causing that exception in the logs?