#815  Failed to upgrade from 7.4.3 to 7.4.6
Closed
Zhou You opened 2 years ago
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at io.onedev.commons.loader.Listener.notify(Listener.java:21)
	at io.onedev.commons.loader.DefaultListenerRegistry.post(DefaultListenerRegistry.java:72)
	at io.onedev.server.OneDev.postStart(OneDev.java:138)
	at io.onedev.server.persistence.SessionInterceptor$1.call(SessionInterceptor.java:23)
	at io.onedev.server.persistence.DefaultSessionManager.call(DefaultSessionManager.java:79)
	at io.onedev.server.persistence.SessionInterceptor.invoke(SessionInterceptor.java:18)
	at io.onedev.commons.loader.DefaultPluginManager.start(DefaultPluginManager.java:48)
	at io.onedev.commons.loader.AppLoader.start(AppLoader.java:73)
	at io.onedev.commons.bootstrap.Bootstrap.main(Bootstrap.java:189)
Caused by: java.lang.reflect.InvocationTargetException: null
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.onedev.commons.loader.Listener.notify(Listener.java:19)
	... 8 common frames omitted
Caused by: org.hibernate.HibernateException: Unable to access lob stream
	at org.hibernate.type.descriptor.java.DataHelper.extractString(DataHelper.java:270)
	at org.hibernate.type.descriptor.java.StringTypeDescriptor.wrap(StringTypeDescriptor.java:75)
	at org.hibernate.type.descriptor.java.StringTypeDescriptor.wrap(StringTypeDescriptor.java:22)
	at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$1.doExtract(ClobTypeDescriptor.java:44)
	at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47)
	at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:257)
	at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253)
	at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:243)
	at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:329)
	at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:3134)
	at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1870)
	at org.hibernate.loader.Loader.hydrateEntityState(Loader.java:1798)
	at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1771)
	at org.hibernate.loader.Loader.getRow(Loader.java:1623)
	at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:740)
	at org.hibernate.loader.Loader.getRowsFromResultSet(Loader.java:1039)
	at org.hibernate.loader.Loader.processResultSet(Loader.java:990)
	at org.hibernate.loader.Loader.doQuery(Loader.java:959)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:349)
	at org.hibernate.loader.Loader.doList(Loader.java:2850)
	at org.hibernate.loader.Loader.doList(Loader.java:2832)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2664)
	at org.hibernate.loader.Loader.list(Loader.java:2659)
	at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:109)
	at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1877)
	at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:370)
	at io.onedev.server.persistence.dao.DefaultDao.query(DefaultDao.java:72)
	at io.onedev.server.persistence.SessionInterceptor$1.call(SessionInterceptor.java:23)
	at io.onedev.server.persistence.DefaultSessionManager.call(DefaultSessionManager.java:79)
	at io.onedev.server.persistence.SessionInterceptor.invoke(SessionInterceptor.java:18)
	at io.onedev.server.persistence.dao.DefaultDao.query(DefaultDao.java:113)
	at io.onedev.server.persistence.SessionInterceptor$1.call(SessionInterceptor.java:23)
	at io.onedev.server.persistence.DefaultSessionManager.call(DefaultSessionManager.java:79)
	at io.onedev.server.persistence.SessionInterceptor.invoke(SessionInterceptor.java:18)
	at io.onedev.server.persistence.dao.BaseEntityManager.query(BaseEntityManager.java:112)
	at io.onedev.server.persistence.dao.BaseEntityManager.query(BaseEntityManager.java:117)
	at io.onedev.server.entitymanager.impl.DefaultGpgKeyManager.on(DefaultGpgKeyManager.java:46)
	at io.onedev.server.persistence.SessionInterceptor$1.call(SessionInterceptor.java:23)
	at io.onedev.server.persistence.DefaultSessionManager.call(DefaultSessionManager.java:79)
	at io.onedev.server.persistence.SessionInterceptor.invoke(SessionInterceptor.java:18)
	... 13 common frames omitted
Caused by: org.postgresql.util.PSQLException: Large Objects may not be used in auto-commit mode.
	at org.postgresql.largeobject.LargeObjectManager.open(LargeObjectManager.java:249)
	at org.postgresql.largeobject.LargeObjectManager.open(LargeObjectManager.java:235)
	at org.postgresql.jdbc.AbstractBlobClob.getLo(AbstractBlobClob.java:269)
	at org.postgresql.jdbc.AbstractBlobClob.getBinaryStream(AbstractBlobClob.java:114)
	at org.postgresql.jdbc.PgClob.getCharacterStream(PgClob.java:52)
	at org.hibernate.type.descriptor.java.DataHelper.extractString(DataHelper.java:263)
	... 52 common frames omitted
OneDev changed state to 'Closed' 2 years ago
Previous Value Current Value
Open
Closed
OneDev commented 2 years ago

State changed as code fixing the issue is committed

OneDev changed state to 'Released' 2 years ago
Previous Value Current Value
Closed
Released
OneDev commented 2 years ago

State changed as build #2832 is successful

Zhou You changed state to 'Open' 2 years ago
Previous Value Current Value
Released
Open
Zhou You commented 2 years ago

还是有问题,这个应用的版本已经是7.4.6但是数据库版本已经更新上去了,然后执行最新的修复路径是7.4.6 -> 7.4.7

INFO  - Starting server...
INFO  - Upgrading /opt/onedev...
INFO  - >>> INFO  - Launching application from '/opt/onedev'...
INFO  - >>> INFO  - Cleaning temp directory...
INFO  - >>> INFO  - Starting server...
INFO  - Old data version: 93
INFO  - Backing up old program files as /opt/onedev/site/program-backup/2022-07-17_22-22-27...
INFO  - Backing up database as /opt/onedev/site/db-backup/2022-07-17_22-22-27.zip...
INFO  - >>> INFO  - Launching application from '/opt/onedev'...
INFO  - >>> INFO  - Cleaning temp directory...
INFO  - >>> INFO  - Starting server...
INFO  - >>> INFO  - Backing up database to /opt/onedev/site/db-backup/2022-07-17_22-22-27.zip...
INFO  - >>> INFO  - Exporting table 'CommitQueryPersonalization'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'GroupAuthorization'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'ProblemMetric'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'Membership'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'CodeCommentReply'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'GitLfsLock'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'BuildQueryPersonalization'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'UnitTestMetric'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'CodeCommentQueryPersonalization'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'PullRequestChange'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'PullRequestAssignment'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'PendingSuggestionApply'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'CodeCommentStatusChange'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'CodeComment'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'IssueAuthorization'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'IssueChange'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'Setting'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  - Loading table rows (1->20) from database...
INFO  - >>> INFO  - Converting table rows to XML...
INFO  - >>> INFO  - Writing resulting XML to file 'Settings.xml...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'BuildParam'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'PullRequestQueryPersonalization'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'IssueLink'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'IssueVote'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'LinkAuthorization'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'LinkSpec'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  - Loading table rows (1->2) from database...
INFO  - >>> INFO  - Converting table rows to XML...
INFO  - >>> INFO  - Writing resulting XML to file 'LinkSpecs.xml...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'IssueSchedule'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'Milestone'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'PullRequestUpdate'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'CoverageMetric'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'IssueField'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'Group'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'SshKey'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  -
INFO  - >>> INFO  - Exporting table 'GpgKey'...
INFO  - >>> INFO  - Querying table ids...
INFO  - >>> INFO  - Loading table rows (1->1) from database...
INFO  - >>> INFO  - Converting table rows to XML...
INFO  - >>> ERROR - Error booting application
INFO  - >>> javax.persistence.PersistenceException: org.hibernate.HibernateException: Unable to access lob stream
INFO  - >>> 	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
INFO  - >>> 	at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1602)
INFO  - >>> 	at io.onedev.server.persistence.DefaultPersistManager.exportEntity(DefaultPersistManager.java:449)
INFO  - >>> 	at io.onedev.server.persistence.DefaultPersistManager.exportData(DefaultPersistManager.java:433)
INFO  - >>> 	at io.onedev.server.persistence.SessionInterceptor$1.call(SessionInterceptor.java:23)
INFO  - >>> 	at io.onedev.server.persistence.DefaultSessionManager.call(DefaultSessionManager.java:79)
INFO  - >>> 	at io.onedev.server.persistence.SessionInterceptor.invoke(SessionInterceptor.java:18)
INFO  - >>> 	at io.onedev.server.persistence.DefaultPersistManager.exportData(DefaultPersistManager.java:405)
INFO  - >>> 	at io.onedev.server.maintenance.BackupDatabase.start(BackupDatabase.java:69)
INFO  - >>> 	at io.onedev.server.OneDev.start(OneDev.java:109)
INFO  - >>> 	at io.onedev.commons.loader.DefaultPluginManager.start(DefaultPluginManager.java:44)
INFO  - >>> 	at io.onedev.commons.loader.AppLoader.start(AppLoader.java:73)
INFO  - >>> 	at io.onedev.commons.bootstrap.Bootstrap.main(Bootstrap.java:189)
INFO  - >>> Caused by: org.hibernate.HibernateException: Unable to access lob stream
INFO  - >>> 	at org.hibernate.type.descriptor.java.DataHelper.extractString(DataHelper.java:270)
INFO  - >>> 	at org.hibernate.type.descriptor.java.StringTypeDescriptor.wrap(StringTypeDescriptor.java:75)
INFO  - >>> 	at org.hibernate.type.descriptor.java.StringTypeDescriptor.wrap(StringTypeDescriptor.java:22)
INFO  - >>> 	at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$1.doExtract(ClobTypeDescriptor.java:44)
INFO  - >>> 	at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47)
INFO  - >>> 	at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:257)
INFO  - >>> 	at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253)
INFO  - >>> 	at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:243)
INFO  - >>> 	at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:329)
INFO  - >>> 	at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:3134)
INFO  - >>> 	at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1870)
INFO  - >>> 	at org.hibernate.loader.Loader.hydrateEntityState(Loader.java:1798)
INFO  - >>> 	at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1771)
INFO  - >>> 	at org.hibernate.loader.Loader.getRow(Loader.java:1623)
INFO  - >>> 	at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:740)
INFO  - >>> 	at org.hibernate.loader.Loader.getRowsFromResultSet(Loader.java:1039)
INFO  - >>> 	at org.hibernate.loader.Loader.processResultSet(Loader.java:990)
INFO  - >>> 	at org.hibernate.loader.Loader.doQuery(Loader.java:959)
INFO  - >>> 	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:349)
INFO  - >>> 	at org.hibernate.loader.Loader.doList(Loader.java:2850)
INFO  - >>> 	at org.hibernate.loader.Loader.doList(Loader.java:2832)
INFO  - >>> 	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2664)
INFO  - >>> 	at org.hibernate.loader.Loader.list(Loader.java:2659)
INFO  - >>> 	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:506)
INFO  - >>> 	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:400)
INFO  - >>> 	at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219)
INFO  - >>> 	at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1414)
INFO  - >>> 	at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1625)
INFO  - >>> 	at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1593)
INFO  - >>> 	... 11 common frames omitted
INFO  - >>> Caused by: org.postgresql.util.PSQLException: Large Objects may not be used in auto-commit mode.
INFO  - >>> 	at org.postgresql.largeobject.LargeObjectManager.open(LargeObjectManager.java:249)
INFO  - >>> 	at org.postgresql.largeobject.LargeObjectManager.open(LargeObjectManager.java:235)
INFO  - >>> 	at org.postgresql.jdbc.AbstractBlobClob.getLo(AbstractBlobClob.java:269)
INFO  - >>> 	at org.postgresql.jdbc.AbstractBlobClob.getBinaryStream(AbstractBlobClob.java:114)
INFO  - >>> 	at org.postgresql.jdbc.PgClob.getCharacterStream(PgClob.java:52)
INFO  - >>> 	at org.hibernate.type.descriptor.java.DataHelper.extractString(DataHelper.java:263)
INFO  - >>> 	... 39 common frames omitted
ERROR - Failed to upgrade /opt/onedev
INFO  - Restoring old program files due to upgrade failure...
INFO  - Old program files restored
WARN  - The database might be in inconsistent state due to upgrade failure. In that case, you need to restore the database by first cleaning it, and then running below command:
INFO  - /opt/onedev/bin/restore-db.sh /opt/onedev/site/db-backup/2022-07-17_22-22-27.zip
Zhou You commented 2 years ago

而且这个备份文件都没有生成CleanShot 2022-07-17 at 22.31.35@2x.png

Robin Shen commented 2 years ago

嗯,确实没考虑到之前升级失败的情况。鉴于已经造成了错误。这种情况再放到通用升级逻辑里处理比较复杂了。建议如下修复路径:

  1. 如果你还可以恢复运行7.4.3版本的话,建议通过 backup/restore 先切换为内置数据库,将内置数据库升级为7.4.7,然后再切换为postgresql。
  2. 或者你也可以将最新的数据备份发送到 [robin AT onedev DOT io],我来手工升级到7.4.7
Zhou You commented 2 years ago

回滚7.4.3会报错

INFO  - Launching application from '/app'...
INFO  - Starting server...
INFO  - Upgrading /opt/onedev...
INFO  - >>> INFO  - Launching application from '/opt/onedev'...
INFO  - >>> INFO  - Cleaning temp directory...
INFO  - >>> INFO  - Starting server...
INFO  - Old data version: 93
ERROR - Unable to upgrade as specified installation is more recent
Robin Shen changed state to 'Closed' 2 years ago
Previous Value Current Value
Open
Closed
Robin Shen commented 2 years ago

Database fix is sent

issue 1 of 1
Type
Bug
Priority
Normal
Assignee
Affected Versions
Not Found
Issue Votes (0)
Watchers (4)
Reference
onedev/server#815
Please wait...
Page is in error, reload to recover