I have a Java component designed to write documents using Vespa. It was working fine with Vespa version 7.113.28, but after upgrading to version 8.357.16, I encounter a LinkageError
. Below is the relevant part of my code:
Instant instant = Instant.ofEpochSecond(timestamp);
ZoneId timeZone = ZoneId.of("UTC+8");
LocalDateTime dateTime = LocalDateTime.ofInstant(instant, timeZone);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDate = dateTime.format(formatter);
DocumentAccess access = DocumentAccess.createForNonContainer();
AsyncSession session = access.createAsyncSession(new AsyncParameters());
DocumentType type = access.getDocumentTypeManager().getDocumentType("QATracker");
DocumentId id = new DocumentId("id:my-search:QATracker::" + custAcctID + "_" + timestamp);
Document docIn = new Document(type, id);
DocumentPut put = new DocumentPut(docIn);
Document document = put.getDocument();
document.setFieldValue("responseDate", formattedDate);
document.setFieldValue("responseDateTime", timestamp);
document.setFieldValue("content", content);
document.setFieldValue("custAcctID", custAcctID);
session.put(docIn);
Error message:
[2024-07-01 14:04:13.698] ERROR container Container.com.yahoo.jrt.Transport
fatal error in com.yahoo.jrt.TransportThread@6982fc54
exception=
java.lang.LinkageError: loader constraint violation: when resolving method 'void com.yahoo.component.Version.<init>(com.yahoo.text.Utf8Array)' the class loader org.apache.felix.framework.BundleWiringImpl$BundleClassLoader @37baddde of the current class, com/yahoo/messagebus/network/rpc/RPCTarget, and the class loader org.apache.felix.framework.BundleWiringImpl$BundleClassLoader @23bff419 for the method's defining class, com/yahoo/component/Version, have different Class objects for the type com/yahoo/text/Utf8Array used in the signature (com.yahoo.messagebus.network.rpc.RPCTarget is in unnamed module of loader org.apache.felix.framework.BundleWiringImpl$BundleClassLoader @37baddde, parent loader 'bootstrap'; com.yahoo.component.Version is in unnamed module of loader org.apache.felix.framework.BundleWiringImpl$BundleClassLoader @23bff419, parent loader 'bootstrap')
at com.yahoo.messagebus.network.rpc.RPCTarget.handleRequestDone(RPCTarget.java:141)
at com.yahoo.jrt.InvocationClient.handleReply(InvocationClient.java:61)
at com.yahoo.jrt.Connection.handlePackets(Connection.java:280)
at com.yahoo.jrt.Connection.read(Connection.java:295)
at com.yahoo.jrt.Connection.handleReadEvent(Connection.java:311)
at com.yahoo.jrt.TransportThread.handleIOEvents(TransportThread.java:150)
at com.yahoo.jrt.TransportThread.run(TransportThread.java:329)
at com.yahoo.jrt.TransportThread$Run.run(TransportThread.java:24)
at java.base/java.lang.Thread.run(Thread.java:840)
pom.xml Configuration:
<dependency>
<groupId>com.yahoo.vespa</groupId>
<artifactId>documentapi</artifactId>
<version>8.357.16</version> <!-- Find latest version at search.maven.org/search?q=g:com.yahoo.vespa%20a:documentapi -->
</dependency>
What could be causing this LinkageError after upgrading Vespa?
How can I resolve this issue to ensure compatibility with the new Vespa version?
Any insights or suggestions would be greatly appreciated!
New contributor
jiajia.liu is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.