Это связано с этим сообщением .
Я думаю, что у меня проблема с H2
, что означает, что она не закрывается должным образом.
Я подозреваю это, так как я вижу myDB.lock.db
, когда я завершаю tomcat, и процесс не останавливается.
Я использую пул соединений Tomcat, и URL-адрес базы данных: url="jdbc:h2:file:/opt/myOrg/tomcat/webapps/MyApplication/db/myDatabase;SCHEMA=myschema"
Из документа закрыть H2:
Обычно база данных закрывается, когда последнее соединение с ней закрыто.... По умолчанию база данных закрывается, когда последнее соединение закрыто. Однако, если он никогда не закрывается, база данных закрывается, когда виртуальная машина завершается нормально, используя крюк отключения
Я не могу понять, что я делаю что-то неправильно.
Должен ли я заставлять базу данных закрываться с помощью команды? Является ли это значением остановки отключения?
Что я здесь делаю неправильно?
Примечание:
Я не могу найти в Google пример того, как закрыть H2
правильно (помимо утверждения, что он автоматически закрывается при последнем отключении подключения). Должен ли я сам позвонить SHUTDOWN
? Это правильный подход?
Я уже вижу голоса, чтобы закрыть вопрос, но на примере того, что я изучаю
UPDATE:
После того, как Joonas Pulakka ответит на дополнительную информацию:
Из javacore
я получил использование kill -3
, я вижу потоки:
"H2 Log Writer MYAPPLICATION" J9VMThread: 0x08DC6F00, j9thread_t: 0x08C9B790, java/lang/Тема: 0xE7206CC8, состояние: CW, prio = 5 3XMTHREADINFO1 (собственный идентификатор потока: 0xA32, родной приоритет: 0x5, национальная политика: UNKNOWN) 3XMTHREADINFO2
(собственный адрес стека от 0xE5E26000, до: 0xE5E67000, размер: 0x41000) 3XMTHREADINFO3 Java callstack:
4XESTACKTRACE в java/lang/Object.wait(Нативный метод)
4XESTACKTRACE на java/lang/Object.wait(Object.java:196 (скомпилированный код)) 4XESTACKTRACE в org/h2/store/WriterThread.run(WriterThread.java:102)
4XESTACKTRACE в java/lang/Thread.run(Thread.java:736)3XMTHREADINFO "pool-8-thread-1" J9VMThread: 0x087C0200, j9thread_t: 0x0840566C, java/lang/Тема: 0xE79BFC80, состояние: P, prio = 5
3XMTHREADINFO1 (собственный идентификатор потока: 0xE1A, native приоритет: 0x5, национальная политика: UNKNOWN) 3XMTHREADINFO2
(собственный адрес стека от 0xE5F69000 до: 0xE5FAA000, размер: 0x41000) 3XMTHREADINFO3 Java callstack:
4XESTACKTRACE на солнце/разное/Unsafe.park(родной метод)
4XESTACKTRACE на Java/Util/одновременные/замки/LockSupport.park(LockSupport.java:184 (Составитель Code)) 4XESTACKTRACE at Java/Util/одновременно/замки/AbstractQueuedSynchronizer $ConditionObject.await(AbstractQueuedSynchronizer.java:1998 (Составитель Code)) 4XESTACKTRACE at Java/Util/параллельное/LinkedBlockingQueue.take(LinkedBlockingQueue.java:413 (Составитель Code)) 4XESTACKTRACE at Java/Util/параллельное/ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:958 (Составитель Code)) 4XESTACKTRACE at Java/Util/параллельный/ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:918) 4XESTACKTRACE в java/lang/Thread.run(Thread.java:736)3XMTHREADINFO "H2 File Lock Watchdog опт/MyOrg/кот/WebApps/MyApplication/дб/myDatabase.lock.db" J9VMThread: 0x08DC6900, j9thread_t: 0x08C9BA24, ja
va/lang/Тема: 0xE71E9018, состояние: CW, prio = 9 3XMTHREADINFO1
(собственный идентификатор потока: 0xA30, собственный приоритет: 0x9, встроенная политика: UNKNOWN)
3XMTHREADINFO2 (собственный адрес стека от 0xE5DBA000, to: 0xE5DFB000, размер: 0x41000) 3XMTHREADINFO3 Java callstack: 4XESTACKTRACE в java/lang/Thread.sleep(родной метод) 4XESTACKTRACE
в java/lang/Thread.sleep(Thread.java:851 (скомпилированный код))
4XESTACKTRACE на org/h2/store/FileLock.run(FileLock.java:490) 4XESTACKTRACE
в java/lang/Thread.run(Thread.java:736)3XMTHREADINFO "FileWatchdog" J9VMThread: 0x087C0800, j9thread_t: 0x08C9B4FC, java/lang/Тема: 0xE715D878, состояние: CW, prio = 5
3XMTHREADINFO1 (собственный идентификатор потока: 0xA2C, native приоритет: 0x5, национальная политика: UNKNOWN) 3XMTHREADINFO2
(собственный адрес стека от 0xE5E67000, до: 0xE5EA8000, размер: 0x41000) 3XMTHREADINFO3 Java callstack:
4XESTACKTRACE в java/lang/Thread.sleep(родной метод) 4XESTACKTRACE на java/lang/Thread.sleep(Thread.java:851 (Скомпилированный код)) 4XESTACKTRACE в org/apache/log4j/helpers/FileWatchdog.run(FileWatchdog.java:104)