You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We detected the following error in our production server logs:
ERROR [com.vaadin.flow.shared.BrowserDetails] (http-nio-8080-exec-150,user=,reqId=365337) OS major version parsing failed for: "api 33"
With userAgent: duckduckgo/5 (com.duckduckgo.mobile.android; android api 33)
the relevant stack trace is attached below.
To be honest, I have no idea what this is. Probably some DuckDuckGo bot trying to index Vaadin Flow page?
In any case, I do not think that BrowserDetails parser should produce errors like this -> the parser is obviously expecting some "userAgent format", but as far as I know there is nothing like that... and the userAgent string can be actually anything.
at java.lang.Thread.getStackTrace(Thread.java:1619)
at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:85)
at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:272)
at ch.qos.logback.classic.Logger.callAppenders(Logger.java:259)
at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:426)
at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:386)
at ch.qos.logback.classic.Logger.error(Logger.java:527)
at com.vaadin.flow.server.WebBrowser$1.log(WebBrowser.java:73)
at com.vaadin.flow.shared.BrowserDetails.parseVersionPart(BrowserDetails.java:466)
at com.vaadin.flow.shared.BrowserDetails.parseOsVersion(BrowserDetails.java:399)
at com.vaadin.flow.shared.BrowserDetails.parseAndroidVersion(BrowserDetails.java:379)
at com.vaadin.flow.shared.BrowserDetails.<init>(BrowserDetails.java:260)
at com.vaadin.flow.server.WebBrowser$1.<init>(WebBrowser.java:70)
at com.vaadin.flow.server.WebBrowser.<init>(WebBrowser.java:70)
at com.vaadin.flow.server.VaadinService.createAndRegisterSession(VaadinService.java:1015)
at com.vaadin.flow.server.VaadinService.doFindOrCreateVaadinSession(VaadinService.java:979)
at com.vaadin.flow.server.VaadinService.findOrCreateVaadinSession(VaadinService.java:921)
at com.vaadin.flow.server.VaadinService.findVaadinSession(VaadinService.java:760)
at com.vaadin.flow.server.VaadinService.handleRequest(VaadinService.java:1658)
at com.vaadin.flow.server.VaadinServlet.service(VaadinServlet.java:398)
at com.vaadin.flow.spring.SpringServlet.service(SpringServlet.java:106)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:612)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:394)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:323)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:268)
at org.springframework.web.servlet.mvc.ServletForwardingController.handleRequestInternal(ServletForwardingController.java:142)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:178)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:51)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
Expected behavior
I'd expect that BrowserDetails makes no expectations on userAgent string and that BrowserDetails does not produce any errors.
If userAgent is in "unknown" format, then I'd expect BrowserDetails to be simply empty.
Minimal reproducible example
Use Chrome Dev Tools to set custom user agent to duckduckgo/5 (com.duckduckgo.mobile.android; android api 33)
Visit any Vaadin Flow app
There is an error in the console
Versions
Vaadin / Flow version: 24.6.6
Java version: 17
OS version: macOs 15.5 (24F74)
The text was updated successfully, but these errors were encountered:
The exception and stack trace is just there so we can get any new unknown agents and handle them.
In this case the major version should be set to -1 and other parts should have probably parsed as expected.
Description of the bug
We detected the following error in our production server logs:
the relevant stack trace is attached below.
To be honest, I have no idea what this is. Probably some DuckDuckGo bot trying to index Vaadin Flow page?
In any case, I do not think that BrowserDetails parser should produce errors like this -> the parser is obviously expecting some "userAgent format", but as far as I know there is nothing like that... and the userAgent string can be actually anything.
Expected behavior
I'd expect that BrowserDetails makes no expectations on userAgent string and that BrowserDetails does not produce any errors.
If userAgent is in "unknown" format, then I'd expect BrowserDetails to be simply empty.
Minimal reproducible example
duckduckgo/5 (com.duckduckgo.mobile.android; android api 33)
Versions
The text was updated successfully, but these errors were encountered: