Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ElasticsearchLogsRetriever: ClassCastException: class org.glassfish.json.JsonProviderImpl cannot be cast to class jakarta.json.spi.JsonProvider #322

Closed
cyrille-leclerc opened this issue Feb 19, 2022 · 5 comments
Labels
bug Something isn't working
Milestone

Comments

@cyrille-leclerc
Copy link
Contributor

cyrille-leclerc commented Feb 19, 2022

Jenkins and plugins versions report

Environment
Paste the output here

What Operating System are you using (both controller, and any agents involved in the problem)?

Latest

Reproduction steps

  • Enabled "Store Logs in Elastic and display logs through Elastic and Jenkins"
  • Trigger a build
  • Navigate to the logs console of the build

Expected Results

PAge renders retrieving logs from Elasticsearch

Actual Results

java.lang.ClassCastException: class org.glassfish.json.JsonProviderImpl cannot be cast to class jakarta.json.spi.JsonProvider (org.glassfish.json.JsonProviderImpl and jakarta.json.spi.JsonProvider are in unnamed module of loader jenkins.util.AntClassLoader @7571737)
	at jakarta.json.spi.JsonProvider.provider(JsonProvider.java:73)
Caused: jakarta.json.JsonException: Provider org.glassfish.json.JsonProviderImpl could not be instantiated
	at jakarta.json.spi.JsonProvider.provider(JsonProvider.java:78)
	at co.elastic.clients.json.jackson.JsonValueParser.<init>(JsonValueParser.java:39)
	at co.elastic.clients.json.jackson.JacksonJsonpParser.getValue(JacksonJsonpParser.java:233)
	at co.elastic.clients.json.JsonpDeserializerBase$8.deserialize(JsonpDeserializerBase.java:255)
	at co.elastic.clients.json.JsonpDeserializerBase$8.deserialize(JsonpDeserializerBase.java:249)
	at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:75)
	at co.elastic.clients.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:72)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:176)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:137)
	at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:75)
	at co.elastic.clients.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:79)
	at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:43)
	at co.elastic.clients.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:72)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:176)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:137)
	at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:75)
	at co.elastic.clients.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:79)
	at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:43)
	at co.elastic.clients.transport.endpoints.EndpointWithResponseMapperAttr$1.deserialize(EndpointWithResponseMapperAttr.java:56)
	at co.elastic.clients.transport.rest_client.RestClientTransport.decodeResponse(RestClientTransport.java:328)
	at co.elastic.clients.transport.rest_client.RestClientTransport.getHighLevelResponse(RestClientTransport.java:294)
	at co.elastic.clients.transport.rest_client.RestClientTransport.performRequest(RestClientTransport.java:147)
	at co.elastic.clients.elasticsearch.ElasticsearchClient.search(ElasticsearchClient.java:1526)
	at io.jenkins.plugins.opentelemetry.backend.elastic.ElasticsearchLogStorageRetriever.overallLog(ElasticsearchLogStorageRetriever.java:170)
	at io.jenkins.plugins.opentelemetry.backend.elastic.ElasticsearchLogStorageRetriever.overallLog(ElasticsearchLogStorageRetriever.java:64)
	at io.jenkins.plugins.opentelemetry.job.log.OtelLogStorage.overallLog(OtelLogStorage.java:134)
	at org.jenkinsci.plugins.workflow.job.WorkflowRun.getLogText(WorkflowRun.java:1065)
	at ...

Anything else?

No response

@cyrille-leclerc cyrille-leclerc added the bug Something isn't working label Feb 19, 2022
@cyrille-leclerc
Copy link
Contributor Author

cyrille-leclerc commented Feb 19, 2022

Jenkins Groovy console script

ArrayList classesToLocate =[
  "jakarta.json.spi.JsonProvider", 
  "javax.json.spi.JsonProvider", 
  "org.glassfish.json.JsonProviderImpl"]

for (String classToLocate: classesToLocate) {
  try {
     println(classToLocate + ": " + Class.forName(classToLocate).getProtectionDomain().getCodeSource().getLocation().getPath())
  } catch (ClassNotFoundException e) {
         println(classToLocate + ": " + e)
  }
}

@cyrille-leclerc
Copy link
Contributor Author

See elastic/elasticsearch-java#55

@cyrille-leclerc
Copy link
Contributor Author

When I remove the dependency org.glassfish:javax.json:1.1.4, I get a

java.lang.ClassNotFoundException: org.glassfish.json.JsonProviderImpl
	at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1417)
	at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1372)
	at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1127)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:315)
	at jakarta.json.spi.JsonProvider.provider(JsonProvider.java:72)
Caused: jakarta.json.JsonException: Provider org.glassfish.json.JsonProviderImpl not found
	at jakarta.json.spi.JsonProvider.provider(JsonProvider.java:75)
	at co.elastic.clients.json.jackson.JsonValueParser.<init>(JsonValueParser.java:39)
        ...

@cyrille-leclerc cyrille-leclerc added this to the 2.0.0 milestone Feb 20, 2022
@kuisathaverat
Copy link
Contributor

In the SAML plugin, I have faced a similar issue that I resolved here https://github.com/jenkinsci/saml-plugin/blob/main/src/main/java/org/jenkinsci/plugins/saml/OpenSAMLWrapper.java#L58-L77

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants