Opened 5 weeks ago

Last modified 3 weeks ago

#2775 accepted defect

Can't view any emails (Susimail NoSuchMethodError)

Reported by: writtenblound27 Owned by: zzz
Priority: major Milestone: undecided
Component: apps/susimail Version: 0.9.47
Keywords: Cc:
Parent Tickets: Sensitive: no

Description (last modified by zzz)

On loading any emails in susimail, this error page is presented:

 Error 500: /susimail/ java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;

java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;
     at i2p.susi.util.DecodingOutputStream.decodeAndWrite(DecodingOutputStream.java:68)
     at i2p.susi.util.DecodingOutputStream.flush(DecodingOutputStream.java:94)
     at java.io.FilterOutputStream.flush(FilterOutputStream.java:140)
     at java.io.FilterOutputStream.close(FilterOutputStream.java:158)
     at i2p.susi.util.OutputStreamBuffer.writeComplete(OutputStreamBuffer.java:43)
     at i2p.susi.webmail.encoding.QuotedPrintable.decode(QuotedPrintable.java:199)
     at i2p.susi.webmail.MailPart.decode(MailPart.java:334)
     at i2p.susi.webmail.WebMail.showPart(WebMail.java:583)
     at i2p.susi.webmail.WebMail.showMessage(WebMail.java:3488)
     at i2p.susi.webmail.WebMail.processRequest(WebMail.java:2451)
     at i2p.susi.webmail.WebMail.doGet(WebMail.java:2934)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:873)
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1623)
     at net.i2p.servlet.filters.XSSFilter.doFilter(XSSFilter.java:30)
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
     at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1701)
     at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
     at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
     at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1668)
     at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
     at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
     at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:753)
     at net.i2p.router.web.HostCheckHandler.handle(HostCheckHandler.java:118)
     at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
     at org.eclipse.jetty.server.Server.handle(Server.java:502)
     at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
     at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
     at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
     at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
     at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
     at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
     at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
     at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
     at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
     at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
     at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
     at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
     at java.lang.Thread.run(Thread.java:748)
     Suppressed: java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;
     at i2p.susi.util.DecodingOutputStream.decodeAndWrite(DecodingOutputStream.java:68)
     at i2p.susi.util.DecodingOutputStream.close(DecodingOutputStream.java:100)
     at java.io.FilterOutputStream.close(FilterOutputStream.java:159)
     ... 46 more

I2P version: 0.9.47-0-1ubuntu1
Java version: AdoptOpenJDK 1.8.0_265 (OpenJDK Runtime Environment 1.8.0_265-b01)
Wrapper version: 3.5.30
Server version: 9.4.15.v20190215
Platform: Linux amd64 4.19.0-10-amd64

System has Jetty9 installed, i2p was installed via your debian repo on Buster

Subtickets

Change History (2)

comment:1 Changed 5 weeks ago by zzz

Description: modified (diff)
Status: newaccepted

Thanks for the report.

Our Debian/Ubuntu? packages are built assuming that you're using the java packages also. In practice, this means you need to use Java 11 or higher if you're using our packages on a recent Debian/Ubuntu?. I know our docs claim Java 8 or higher but the packages are a special case in that we assume you aren't downgrading from the package java to an older alternative java.

It's a little odd that you're using AdoptOpenJDK but it should work if you switch to 11 or higher. So that's the workaround.

There's some things we could do to make this less likely to occur, we need to set some more build flags, but it's tricky. Leaving the ticket open for investigation.

comment:2 Changed 3 weeks ago by zzz

Set the release flag for compilation in a1b3f0b25adfe414621cfd21a6f003c8d5df7148 0.9.47-6.

For our standalone builds, setting it to 8.
For our package builds, setting it to 11, so you will still not be able to go back to 8.

Leaving ticket open to look at documentation changes to tell people to use 11+ with packages.

Note: See TracTickets for help on using tickets.