Ошибка закрытия объекта базы данных H2 вызывает повреждение базы данных - PullRequest
0 голосов
/ 07 мая 2020

База данных H2 выдает ошибку Объект уже закрыт [90007-197], периодически возникает ошибка и в конечном итоге происходит сбой. База данных повреждается, и нам нужно начать с чистой базы данных. Поскольку мы используем его в качестве временного хранилища, для нас нормально запускать fre sh, но становится неприятно начинать с fre sh базы данных каждые 1-2 недели.

Я читал о прервал ошибку, которая могла здесь произойти, но не знаю, как ее исправить. Любая помощь приветствуется. Мы находимся в производстве, и около 50-100 пользователей одновременно получают доступ к нашей системе.

Ниже приведены версия базы данных H2 и URL-адрес, который я использую через приложение Spring Boot.

Версия H2: 1.4 .197 spring.datasource.url = jdb c: h2: retry: / opt / test / activitymonitor; DB_CLOSE_DELAY = -1; DB_CLOSE_ON_EXIT = FALSE; FILE_LOCK = FILE

Исключение:

2020-05-04 16:00:14 jdbc[89]: exception
org.h2.jdbc.JdbcSQLException: IO Exception: "java.io.IOException: java.lang.IllegalStateException: Reading from retry:/opt/test/activitymonitor.mv.db failed; file length 662794240 read length 3072 at 34245967 [1.4.197/1]" [90028-1
97]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
at org.h2.message.DbException.get(DbException.java:168)
at org.h2.message.DbException.convertIOException(DbException.java:340)
at org.h2.store.LobStorageMap.createClob(LobStorageMap.java:206)
at org.h2.jdbc.JdbcConnection.createClob(JdbcConnection.java:1949)
at org.h2.jdbc.JdbcPreparedStatement.setCharacterStream(JdbcPreparedStatement.java:1164)
at sun.reflect.GeneratedMethodAccessor136.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
at com.sun.proxy.$Proxy135.setCharacterStream(Unknown Source)
at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$4$1.doBind(ClobTypeDescriptor.java:129)
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:74)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:257)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:252)
at org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType.java:39)
...
...
Caused by: java.io.IOException: java.lang.IllegalStateException: Reading from retry:/opt/test/activitymonitor.mv.db failed; file length 662794240 read length 3072 at 34245967 [1.4.197/1]
at org.h2.message.DbException.convertToIOException(DbException.java:376)
at org.h2.store.LobStorageMap.createLob(LobStorageMap.java:215)
at org.h2.store.LobStorageMap.createClob(LobStorageMap.java:198)
... 167 more
Caused by: java.lang.IllegalStateException: Reading from retry:/opt/test/activitymonitor.mv.db failed; file length 662794240 read length 3072 at 34245967 [1.4.197/1]
at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:870)
at org.h2.mvstore.DataUtils.readFully(DataUtils.java:417)
at org.h2.mvstore.FileStore.readFully(FileStore.java:98)
at org.h2.mvstore.Page.read(Page.java:181)
at org.h2.mvstore.MVStore.readPage(MVStore.java:1936)
at org.h2.mvstore.MVMap.readPage(MVMap.java:698)
at org.h2.mvstore.Page.getChildPage(Page.java:208)
at org.h2.mvstore.MVMap.binarySearch(MVMap.java:454)
at org.h2.mvstore.MVMap.binarySearch(MVMap.java:455)
at org.h2.mvstore.MVMap.binarySearch(MVMap.java:455)
at org.h2.mvstore.MVMap.binarySearch(MVMap.java:455)
at org.h2.mvstore.MVMap.get(MVMap.java:436)
at org.h2.mvstore.MVMap.containsKey(MVMap.java:465)
at org.h2.mvstore.StreamStore.getAndIncrementNextKey(StreamStore.java:219)
at org.h2.mvstore.StreamStore.writeBlock(StreamStore.java:195)
at org.h2.mvstore.StreamStore.put(StreamStore.java:159)
at org.h2.mvstore.StreamStore.put(StreamStore.java:104)
at org.h2.store.LobStorageMap.createLob(LobStorageMap.java:213)
... 168 more
Caused by: java.io.EOFException
at org.h2.mvstore.DataUtils.readFully(DataUtils.java:405)
... 184 more

2020-05-05 08:00:09 jdbc[116]: exception
org.h2.jdbc.JdbcSQLException: The object is already closed [90007-197]

2020-05-05 15:30:12 jdbc[199]: exception
org.h2.jdbc.JdbcSQLException: The object is already closed [90007-197]

2020-05-05 19:00:34 jdbc[229]: exception
org.h2.jdbc.JdbcSQLException: The object is already closed [90007-197]

2020-05-06 01:00:06 jdbc[245]: exception
org.h2.jdbc.JdbcSQLException: The object is already closed [90007-197]

2020-05-06 10:00:24 jdbc[308]: exception
org.h2.jdbc.JdbcSQLException: The object is already closed [90007-197]

2020-05-06 10:00:24 jdbc[311]: exception
org.h2.jdbc.JdbcSQLException: The object is already closed [90007-197]

2020-05-06 11:00:41 jdbc[308]: exception
org.h2.jdbc.JdbcSQLException: The object is already closed [90007-197]

2020-05-06 14:00:49 jdbc[348]: exception
org.h2.jdbc.JdbcSQLException: The object is already closed [90007-197]

2020-05-06 15:00:22 jdbc[354]: exception
org.h2.jdbc.JdbcSQLException: The object is already closed [90007-197]
...