#1036  onedev upgrade failed
Closed
haibara opened 1 year ago

Hi, I tried to upgrade to the latest version of onedev and the following error occurred after following the steps at https://code.onedev.io/onedev/manual/~files/main/pages/upgrade-guide.md:

INFO  - Launching application from '/app'...
INFO  - Starting server...
ERROR - Error booting application
com.google.inject.CreationException: Unable to create injector, see the following errors:

1) [Guice/ErrorInjectingConstructor]: NumberFormatException: For input string: ""
  at DefaultServerConfig.<init>(DefaultServerConfig.java:64)
  at DefaultServerConfig.class(DefaultServerConfig.java:29)
  while locating DefaultServerConfig
  at DefaultClusterManager.<init>(DefaultClusterManager.java:60)
      \_ for 1st parameter
  at DefaultClusterManager.class(DefaultClusterManager.java:45)
  while locating DefaultClusterManager
  at DefaultSessionFactoryManager.<init>(DefaultSessionFactoryManager.java:41)
      \_ for 2nd parameter
  at DefaultSessionFactoryManager.class(DefaultSessionFactoryManager.java:41)
  while locating DefaultSessionFactoryManager
  at DefaultSessionManager.<init>(DefaultSessionManager.java:61)
      \_ for 3rd parameter
  at DefaultSessionManager.class(DefaultSessionManager.java:22)
  while locating DefaultSessionManager
  at DefaultTransactionManager.<init>(DefaultTransactionManager.java:53)
      \_ for 1st parameter
  at DefaultTransactionManager.class(DefaultTransactionManager.java:44)
  while locating DefaultTransactionManager
  at TransactionInterceptor.transactionManager(TransactionInterceptor.java:12)
      \_ for field transactionManager
  at CoreModule.configurePersistence(CoreModule.java:766)
      \_ installed by: Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> Modules$OverrideModule -> CoreModule

Learn more:
  https://github.com/google/guice/wiki/ERROR_INJECTING_CONSTRUCTOR
Caused by: NumberFormatException: For input string: ""
        at java.base/NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.base/Integer.parseInt(Integer.java:662)
        at java.base/Integer.parseInt(Integer.java:770)
        at DefaultServerConfig.<init>(DefaultServerConfig.java:122)
        at DefaultServerConfig$$FastClassByGuice$$138560597.GUICE$TRAMPOLINE(<generated>)
        at DefaultServerConfig$$FastClassByGuice$$138560597.apply(<generated>)
        at DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:82)
        at ConstructorInjector.provision(ConstructorInjector.java:114)
        at ConstructorInjector.construct(ConstructorInjector.java:91)
        at ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
        at ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at SingletonScope$1.get(SingletonScope.java:169)
        at InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
        at FactoryProxy.get(FactoryProxy.java:60)
        at SingleParameterInjector.inject(SingleParameterInjector.java:40)
        at SingleParameterInjector.getAll(SingleParameterInjector.java:60)
        at ConstructorInjector.provision(ConstructorInjector.java:113)
        at ConstructorInjector.construct(ConstructorInjector.java:91)
        at ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
        at ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at SingletonScope$1.get(SingletonScope.java:169)
        at InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
        at FactoryProxy.get(FactoryProxy.java:60)
        at SingleParameterInjector.inject(SingleParameterInjector.java:40)
        at SingleParameterInjector.getAll(SingleParameterInjector.java:60)
        at ConstructorInjector.provision(ConstructorInjector.java:113)
        at ConstructorInjector.construct(ConstructorInjector.java:91)
        at ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
        at ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at SingletonScope$1.get(SingletonScope.java:169)
        at InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
        at FactoryProxy.get(FactoryProxy.java:60)
        at SingleParameterInjector.inject(SingleParameterInjector.java:40)
        at SingleParameterInjector.getAll(SingleParameterInjector.java:60)
        at ConstructorInjector.provision(ConstructorInjector.java:113)
        at ConstructorInjector.construct(ConstructorInjector.java:91)
        at ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
        at ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at SingletonScope$1.get(SingletonScope.java:169)
        at InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
        at FactoryProxy.get(FactoryProxy.java:60)
        at SingleFieldInjector.inject(SingleFieldInjector.java:50)
        at MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:146)
        at MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:101)
        at Initializer$InjectableReference.get(Initializer.java:245)
        at Initializer.injectAll(Initializer.java:140)
        at InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
        at InternalInjectorCreator.build(InternalInjectorCreator.java:113)
        at Guice.createInjector(Guice.java:87)
        at Guice.createInjector(Guice.java:69)
        at Guice.createInjector(Guice.java:59)
        at AppLoader.start(AppLoader.java:64)
        at Bootstrap.main(Bootstrap.java:223)

2 errors

I deployed onedev using docker-compose.yml, and after testing, I found that the error was caused by the configuration of the environment variables of pgsql, but I configured the environment variables according to https://code.onedev.io/onedev/manual/~files/main/pages /run-as-docker-container.md#use-external-database

networks:
    internal:
        external: false

services:
    onedev-app:
        container_name: onedev-app
        image: 1dev/server:latest
        ports:
            - 6610:6610
            - 6611:6611
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
            - ./data:/opt/onedev
        networks:
            - internal
        restart: unless-stopped
        environment:
            hibernate_dialect: io.onedev.server.persistence.PostgreSQLDialect
            hibernate_connection_driver_class: org.postgresql.Driver
            hibernate_connection_url: jdbc:postgresql://onedev-db/onedev
            hibernate_connection_username: onedev
            hibernate_connection_password: pwd
        depends_on:
            - onedev-db

    onedev-db:
        container_name: onedev-db
        image: postgres:13
        networks:
            - internal
        restart: unless-stopped
        ports:
            - 25432:5432
        volumes:
            - ./db:/var/lib/postgresql/data
        environment:
            POSTGRES_DB: onedev
            POSTGRES_USER: onedev
            POSTGRES_PASSWORD: pwd
Robin Shen commented 1 year ago

Please modify your psql connection url from jdbc:postgresql://onedev-db/onedev to jdbc:postgresql://onedev-db:5432/onedev and then retry the upgrade. OneDev expects port number to be available in the connection string.

haibara commented 1 year ago

Thank you very much, I overlooked that because the psql connection url didn't ask for a port before.

haibara changed state to 'Closed' 1 year ago
Previous Value Current Value
Open
Closed
issue 1 of 1
Type
Bug
Priority
Normal
Assignee
Affected Versions
Not Found
Issue Votes (0)
Watchers (4)
Reference
onedev/server#1036
Please wait...
Page is in error, reload to recover