has the model configuration blocked HTTP access? (OD-2648)
Zhou You opened 2 weeks ago

Starting from the last two or three releases, has the model configuration blocked HTTP access? I have an LLM gateway on my internal network; originally I only needed to set http://lmrouter:3000/v1 and it worked, but now it fails—requests aren’t even sent, even though I can reach lmrouter directly from inside the container.

15:54:49 ERROR i.o.s.model.support.AiModelSetting - Error getting models
java.net.http.HttpTimeoutException: request timed out
	at java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:898)
	at java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:133)
	at io.onedev.server.model.support.AiModelSetting.getModels(AiModelSetting.java:97)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at io.onedev.server.util.ReflectionUtils.invokeStaticMethod(ReflectionUtils.java:278)
	at io.onedev.server.web.editable.choice.SingleChoiceEditor$1.load(SingleChoiceEditor.java:50)
	at io.onedev.server.web.editable.choice.SingleChoiceEditor$1.load(SingleChoiceEditor.java:43)
	at org.apache.wicket.model.LoadableDetachableModel.getObject(LoadableDetachableModel.java:137)
	at io.onedev.server.web.component.stringchoice.StringChoiceProvider.query(StringChoiceProvider.java:103)
	at io.onedev.server.web.component.select2.AbstractSelect2Choice.onResourceRequested(AbstractSelect2Choice.java:261)
	at io.onedev.server.web.component.select2.Select2Choice.onResourceRequested(Select2Choice.java:37)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:270)
	at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:220)
	at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:241)
	at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234)
	at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:892)
	at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
	at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
	at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
	at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
	at org.apache.wicket.protocol.ws.AbstractUpgradeFilter.processRequestCycle(AbstractUpgradeFilter.java:70)
	at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203)
	at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:137)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at io.onedev.server.web.DefaultWicketServlet.lambda$service$0(DefaultWicketServlet.java:48)
	at io.onedev.server.persistence.DefaultSessionService.lambda$run$0(DefaultSessionService.java:103)
	at io.onedev.server.persistence.DefaultSessionService.call(DefaultSessionService.java:85)
	at io.onedev.server.persistence.DefaultSessionService.run(DefaultSessionService.java:102)
	at io.onedev.server.web.DefaultWicketServlet.service(DefaultWicketServlet.java:42)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)
	at com.google.inject.servlet.DefaultFilterPipeline.dispatch(DefaultFilterPipeline.java:47)
	at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
	at io.onedev.server.git.GoGetFilter.doFilter(GoGetFilter.java:90)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
	at io.onedev.server.git.GitLfsFilter.doFilter(GitLfsFilter.java:502)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
	at io.onedev.server.git.GitFilter.doFilter(GitFilter.java:395)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
	at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
	at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154)
	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
	at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
	at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154)
	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
	at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
	at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
  • Robin Shen commented 2 weeks ago

    Nothing changed for this, please check your network connection.

  • Robin Shen changed state to 'Closed' 2 weeks ago
    Previous Value Current Value
    Open
    Closed
  • Zhou You commented 2 weeks ago

    CleanShot 2025-12-26 at 17.48.33@2x.png

  • Robin Shen commented 2 weeks ago

    I tested to access ollama api via http and it works fine. Also check if you have proxy configured

  • Zhou You commented 2 weeks ago

    No proxy is configured; everything is on the same machine within the same Docker network, so the behavior is odd. As you saw, I can reach it directly from inside the onedev container with curl, yet the onedev application times out—the request never even leaves.

  • Robin Shen commented 2 weeks ago

    Not sure what happens. Maybe a docker network issue.

  • Zhou You commented 2 weeks ago

    CleanShot 2025-12-27 at 08.33.43@2x.png CleanShot 2025-12-27 at 08.33.31@2x.png

  • Zhou You commented 2 weeks ago

    During this period, I restarted the onedev and lmrouter containers individually, but the issue persists. Other containers on the same network can access it without any problems, such as Open WebUI.

  • Robin Shen commented 2 weeks ago

    I am not an expert on docker network things. But believe it is not a OneDev issue according to my test here.

  • Robin Shen commented 2 weeks ago

    You may run OneDev in bare metal mode to see if it works.

  • Zhou You commented 2 weeks ago

    It seems a bit like a DNS issue; I'm looking into it.

  • Zhou You commented 2 weeks ago

    写了个java进行测试,lmrouter服务不支持 HTTP/2,java程序可能默认用了HTTP/2进行访问所以超时了, === Testing HTTP/1.1 === ✓ Success! Status: 200 Time: 52ms Protocol: HTTP_1_1 === Testing HTTP/2 === ✗ Failed: HttpTimeoutException Message: request timed out

  • Robin Shen commented 2 weeks ago

    感谢反馈,考虑到http/2的性能优势,且绝大多数大模型 api 都提供http/2支持,OneDev不打算支持http/1.1了。

issue 1/1
Type
Question
Priority
Normal
Assignee
Labels
No labels
Issue Votes (0)
Watchers (2)
Reference
OD-2648
Please wait...
Connection lost or session expired, reload to recover
Page is in error, reload to recover